8.2.15 Развертывание и настройка Passbolt
Passbolt CE — надёжное решение для управления командными паролями с поддержкой сквозного шифрования на базе GPG. Запуск в контейнерах позволяет быстро внедрить Passbolt с минимальной зависимостью от хостовой системы.
Подготовка сервера
Требования
- Заказаный Виртуальный или Выделенный сервер с Ubuntu 20+
- Минимум: 2 vCPU, 2 GB RAM, 10 GB SSD
- Доступ по SSH с правами sudo или root доступом
- Установленный Docker
Переменные, которые нужно заменить
YOUR_DOMAIN
— домен, на котором будет доступен Passbolt; используется вAPP_FULL_BASE_URL
, конфигурации nginx и при выпуске SSL-сертификата.DB_USERNAME
— имя пользователя MariaDB, подключающегося к базе Passbolt (DATASOURCES_DEFAULT_USERNAME
,MYSQL_USER
).PASSWORD
— пароль для пользователяDB_USERNAME
(DATASOURCES_DEFAULT_PASSWORD
,MYSQL_PASSWORD
).DB_NAME
— имя базы данных Passbolt (DATASOURCES_DEFAULT_DATABASE
,MYSQL_DATABASE
).DB_ROOT_PASSWORD
— пароль администратора (root) MariaDB (MYSQL_ROOT_PASSWORD
).EMAIL
— адрес электронной почты первого администратора, создаваемого командойregister_user
.SMTP_HOST
— адрес SMTP-сервера (переменнаяEMAIL_TRANSPORT_DEFAULT_HOST
, опционально).SMTP_PASSWORD
— пароль или токен SMTP (EMAIL_TRANSPORT_DEFAULT_PASSWORD
, опционально).
Настройка firewall
Для обеспечения безопасности сервера рекомендуется настроить файрвол и разрешить только необходимые порты: SSH (для удалённого доступа), HTTP и HTTPS (для работы веб-интерфейса Passbolt).
Настройте файрвол:
UFW:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
Развёртывание Passbolt
Создайте каталог и перейдите в него:
mkdir ~/passbolt && cd ~/passbolt
Создайте файл docker-compose.yml
:
version: '3.8'
services:
passbolt:
image: passbolt/passbolt:latest-ce
container_name: passbolt
environment:
APP_FULL_BASE_URL: YOUR_DOMAIN
DATASOURCES_DEFAULT_HOST: db
DATASOURCES_DEFAULT_USERNAME: USERNAME
DATASOURCES_DEFAULT_PASSWORD: PASSWORD
DATASOURCES_DEFAULT_DATABASE: DB_NAME
ports:
- "80:80"
- "443:443"
volumes:
- gpg_volume:/etc/passbolt/gpg
- jwt_volume:/etc/passbolt/jwt
- ./nginx:/etc/nginx/certs:ro
depends_on:
- db
db:
image: mariadb:10.6
container_name: passbolt-db
environment:
MYSQL_ROOT_PASSWORD: DB_ROOT_PASSWORD>
MYSQL_DATABASE: DB_NAME
MYSQL_USER: DB_USERNAME
MYSQL_PASSWORD: PASSWORD
volumes:
- db_data:/var/lib/mysql
volumes:
gpg_volume:
jwt_volume:
db_data:
Обратите внимание: замените db
, passbolt
, StrongPassw0rd!
, passboltdb
<YOUR_DOMAIN>
на Ваши значения.
Запустите контейнеры:
docker-compose up -d
Первичная настройка
Получите имя контейнера:
docker ps
Выполните инициализацию:
docker exec -it passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt install" -s /bin/sh www-data
Следуйте инструкциям:
- Web-сервер: nginx (встроенный)
- Сертификат: самостоятельно или с помощью обратного прокси
- DB: passboltdb, passbolt, StrongPassw0rd!
Важно: Если вы используете внешний nginx или Caddy, отключите порты 80/443 и настройте обратный прокси вручную.
Регистрация первого администратора
После установки, Passbolt требует, чтобы первый пользователь был создан вручную через CLI. Выполните следующую команду:
docker exec -it passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u EMAIL -f Admin -l User -r admin" -s /bin/sh www-data
Обратите внимание: замените admin@example.com
на Ваш почтовый ящик.
SMTP-настройка
Добавьте параметры SMTP в блок environment
сервиса passbolt
в docker-compose.yml
:
EMAIL_TRANSPORT_DEFAULT_CLASSNAME: Smtp
EMAIL_TRANSPORT_DEFAULT_HOST: smtp.mailgun.org
EMAIL_TRANSPORT_DEFAULT_PORT: 587
EMAIL_TRANSPORT_DEFAULT_USERNAME: postmaster@mg.example.com
EMAIL_TRANSPORT_DEFAULT_PASSWORD: your_smtp_password
EMAIL_TRANSPORT_DEFAULT_TLS: true
Обратите внимание: обязательно замените smtp.mailgun.org
, 587
, postmaster@mg.example.com
, your_smtp_password
на Ваши данные, с ними можете ознакомиться в нашей инструкции.
Корректно настроенный почтовый сервис обязателен для отправки приглашений новым пользователям.
Обратный прокси (nginx)
Если вы используете внешний nginx, создайте файл:
server {
listen 443 ssl;
server_name YOUR_DOMAIN;
ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Получите сертификат:
sudo certbot certonly --standalone -d YOUR_DOMAIN
Отключите порты в docker-compose.yml
, если используете внешний прокси:
ports:
# отключено
# - "80:80"
# - "443:443"
Автоматическое обновление (Watchtower)
Добавьте сервис в docker-compose.yml
:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Он будет автоматически перезапускать контейнеры при наличии новых версий.
Диагностика и логирование
Проверка статуса и логов:
docker ps -a
docker logs passbolt
docker logs -f passbolt
Журналы ошибок приложения:
docker exec -it passbolt tail -f /var/log/nginx/error.log
Проверка
Откройте в браузере:
https://YOUR_DOMAIN
Выполните CLI-проверку:
docker exec -it passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck" -s /bin/sh www-data
Резервное копирование
Создайте каталог для резервных копий:
mkdir -p ~/passbolt/backup
Выполните экспорт:
# Бэкап БД
docker exec passbolt-db sh -c 'exec mysqldump -u root -p"RootPass123!" passboltdb' > ~/passbolt/backup/passbolt_db.sql
# Бэкап данных приложения
sudo cp -r ~/passbolt/nginx ~/passbolt/backup/nginx_certs
sudo docker cp passbolt:/etc/passbolt ~/passbolt/backup/passbolt_conf
Автоматизируйте задачу с помощью cron или systemd timer.
Частые проблемы и решения
Проблема | Причина | Решение |
---|---|---|
Не открывается https://<YOUR_DOMAIN> | Неверный порт или конфигурация nginx | Убедитесь, что порты 80/443 проброшены, или настроен внешний прокси с SSL |
Email не отправляется | Отсутствует SMTP-конфигурация или неверные данные | Укажите SMTP через переменные окружения EMAIL_TRANSPORT_* |
Ошибка базы данных при установке | База не готова при запуске passbolt | Добавьте depends_on: db и перезапустите контейнер |
Контейнер перезапускается | Проблема в конфиге или GPG ключах | Проверьте логи docker logs passbolt и настройки volume |
Healthcheck показывает WARNING | Нет SMTP или неправильный BASE_URL | Проверьте APP_FULL_BASE_URL и Email конфигурацию в docker-compose |
Официальная документация