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 (наприкладhttps://vault.example.com
).DB_USERNAME
— ім’я користувача MariaDB, що використовується Passbolt.<PASSWORD
— пароль для користувача<DB_USERNAME>
у базі даних.DB_NAME
— назва бази даних Passbolt.DB_ROOT_PASSWORD
— пароль користувачаroot
у контейнері MariaDB.EMAIL
— e-mail першого адміністратора, який створюється через CLI.SMTP_HOST
,SMTP_PORT
,SMTP_USERNAME
,SMTP_PASSWORD
— параметри SMTP-серверу для відправки листів (використовуються у зміннихEMAIL_TRANSPORT_*
).
Налаштування фаєрволу
Для безпеки рекомендується дозволити лише необхідні порти: 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
на ваші значення.
Запустіть контейнери:
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
Слідуйте інструкціям:
- Веб-сервер: nginx (вбудований)
- Сертифікат: власноруч або через зворотний проксі
- База даних: passboltdb, користувач passbolt, пароль StrongPassw0rd!
Важливо: якщо ви використовуєте зовнішній nginx або Caddy, відключіть порти 80/443 у Compose та налаштуйте зворотний проксі самостійно.
Реєстрація першого адміністратора
Після інсталяції 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
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;
}
}
Отримайте SSL-сертифікат:
sudo certbot certonly --standalone -d YOUR_DOMAIN
Відключіть порти в docker-compose.yml
:
ports:
# - "80:80"
# - "443:443"
Автооновлення (Watchtower)
Додайте сервіс 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
Логи Nginx:
docker exec -it passbolt tail -f /var/log/nginx/error.log
Перевірка доступності
Відкрийте у браузері:
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 DB_ROOT_PASSWORD DB_NAME' > ~/passbolt/backup/passbolt_db.sql
Бекап сертифікатів та конфігів:
sudo cp -r ~/passbolt/nginx ~/passbolt/backup/nginx_certs
docker cp passbolt:/etc/passbolt ~/passbolt/backup/passbolt_conf
Автоматизуйте цей процес за допомогою cron або systemd-timer.
Поширені проблеми та рішення
Проблема | Причина | Рішення |
---|---|---|
Сайт не відкривається за https://<YOUR_DOMAIN> | Неправильний порт або налаштування nginx | Перевірте проброс портів 80/443 або налаштуйте зовнішній проксі з SSL |
Листи не відправляються | Відсутня або некоректна SMTP-конфігурація | Додайте змінні EMAIL_TRANSPORT_* у Compose |
Помилка бази даних під час інсталяції | База даних ще не готова | Додайте depends_on: db та перезапустіть контейнери |
Контейнер зависає чи перезапускається | Проблеми в конфігурації або GPG-ключах | Перегляньте логи docker logs passbolt та налаштування volume |
Healthcheck показує WARNING | Відсутній SMTP або невірний APP_FULL_BASE_URL | Перевірте APP_FULL_BASE_URL та SMTP-параметри в docker-compose.yml |
Офіційна документація