8.2.15 Розгортання та налаштування Passbolt

Банер 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

ufw protection

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-compose up -d

Початкова ініціалізація

Отримайте ім’я контейнера:

docker ps

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

docker exec

Резервне копіювання

Створіть папку для бекапів:

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