8.2.15 Развертывание и настройка Passbolt

The Host Banner 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

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 <YOUR_DOMAIN> на Ваши значения.

Запустите контейнеры:

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

Следуйте инструкциям:

  • 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

docker_exec

Резервное копирование

Создайте каталог для резервных копий:

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