Passbolt на Rocky Linux — установка и настройка

Важно: этот гайд описывает установку с PHP 7.4 и ручной генерацией ключей GPG без пароля — это упрощает интеграцию с текущими PHP-расширениями, но вводит риски, о которых есть раздел «Безопасность».
О чём эта инструкция
В статье подробно показано, как подготовить сервер, установить зависимости, создать базу данных, склонировать исходники Passbolt, настроить GPG-ключи сервера, сконфигурировать Nginx и завершить установку через встроенный инсталлятор. Также добавлены практики безопасности, чеклисты для разных ролей и варианты отката.
Основные понятия (в 1 строке)
- Passbolt: self-hosted менеджер паролей для команд, использует OpenPGP для шифрования.
- GnuPG/GPG: инструмент для генерации и управления OpenPGP-ключами.
- PHP-FPM: FastCGI-процесс менеджер для PHP.
- Nginx: веб-сервер/обратный прокси.
- MariaDB: SQL-база данных.
Пререквизиты
- Сервер: Rocky Linux 8.4 (green obsidian).
- IP: 192.168.1.10 (пример).
- Домен: https://pass.example.io (пример).
- Доступ root или sudo на сервере.
Совет: перед началом сделайте снапшот виртуальной машины или резервную копию конфигураций, чтобы можно было откатить изменения.
Установка зависимостей и репозиториев
Ниже показаны команды и пояснения. Выполняйте под sudo-пользователем.
- Включаем PowerTools и EPEL:
sudo dnf config-manager --set-enabled powertools
sudo dnf install epel-release -y- Включаем модуль PHP 7.4:
sudo dnf module enable php:7.4 -y- Устанавливаем PHP-FPM, MariaDB, Nginx и вспомогательные пакеты:
sudo dnf install -y nginx mariadb-server mariadb php php-intl php-gd php-mysqlnd php-pear php-devel php-mbstring php-fpm php-json php-ldap gcc gpgme gpgme-devel git policycoreutils-python-utils unzip haveged make gccПримечание: gpgme и gpgme-devel нужны для сборки/интеграции GnuPG через PECL.
- Устанавливаем Composer (системный):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
sudo mv composer.phar /usr/bin/composer
sudo -u nginx composer --versionОжидаемый вывод похож на:
Composer version 2.1.12 2021-11-09 16:02:04- Устанавливаем расширение GnuPG для PHP через PECL и включаем его:
pecl install gnupgecho "extension=gnupg.so" > /etc/php.d/gnupg.ini- Запускаем и включаем сервисы:
sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php-fpm
sudo systemctl enable --now havegedВажно: haveged улучшает сбор случайности для генерации ключей на серверах без достаточной энтропии.
Настройка MariaDB и PHP-FPM
- Настройка безопасности MariaDB (установите пароль root и согласитесь с рекомендациями):
mysql_secure_installation- Настройка временной зоны PHP: откройте /etc/php.ini и поправьте date.timezone.
nano /etc/php.iniПример:
date.timezone = Europe/ParisСохраните и выйдите.
- Измените конфигурацию PHP-FPM для работы от пользователя nginx:
nano /etc/php-fpm.d/www.confЗамените:
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginxПерезапустите PHP-FPM:
sudo systemctl restart php-fpmПримечание: убедитесь, что сокет php-fpm указан как unix:/var/run/php-fpm/www.sock или скорректируйте Nginx-конфиг в соответствии с реальным путём.
Создание базы данных для Passbolt
Войдите в MariaDB:
mysql -u root -pВыполните SQL:
CREATE DATABASE passdb;
GRANT ALL ON passdb.* to passbolt@localhost IDENTIFIED BY 'PassboltdbPass';
FLUSH PRIVILEGES;
EXIT;
Совет: замените ‘PassboltdbPass’ на надёжный пароль и храните его в менеджере секретов.
Загрузка Passbolt и установка PHP-зависимостей
- Клонируем репозиторий и меняем владельца:
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt
sudo chown -R nginx:nginx /var/www/passbolt- Устанавливаем PHP-зависимости под пользователем nginx:
cd /var/www/passbolt
sudo -u nginx composer install --no-devЕсли зависимостей много — дождитесь завершения. Ошибки сборки обычно связаны с отсутствием расширений PHP или прав.
Генерация GPG-ключа сервера
Passbolt использует OpenPGP для шифрования данных. Текущие PHP-библиотеки часто не поддерживают работу с закрытыми ключами, защищёнными паролем, поэтому ниже показан пример генерации ключа без пароля. Это удобнее для интеграции, но потенциально снижает безопасность — см. раздел «Безопасность».
- Генерация ключа:
gpg --gen-keyВ процессе укажите имя и email. Оставьте passphrase пустым (Enter), если следовать примеру.
Пример вывода (сокращённо) — обратите внимание на fingerprint (отпечаток) ключа.
pub rsa2048 2021-11-16 [SC] [expires: 2023-11-16]
BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
uid johndoe - Экспорт ключей в каталог конфигурации Passbolt:
gpg --armor --export-secret-keys johndoe@example.com > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export johndoe@example.com > /var/www/passbolt/config/gpg/serverkey.ascБерите на заметку:
- Fingerprint: BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
- Public key: serverkey.asc
- Private key: serverkey_private.asc
- Инициализация GNUPG для пользователя nginx:
sudo su -s /bin/bash -c "gpg --list-keys" nginxВы увидите сообщение о создании /var/lib/nginx/.gnupg.
Важно: файлы private.asc должны быть защищены привилегиями 600 и доступны только пользователю nginx (или тому, кто запускает PHP-FPM).
Конфигурация Passbolt и блоки Nginx
Перейдите в каталог Passbolt:
export PASSBOLT=/var/www/passbolt/
cd $PASSBOLT- Копируем конфиг и редактируем:
cp config/passbolt.default.php config/passbolt.php
nano config/passbolt.phpИзмените ‘fullBaseUrl’ на ваш домен:
'App' => [
'fullBaseUrl' => 'https://pass.example.io',
],Укажите параметры базы данных:
'Datasources' => [
'default' => [
'host' => 'localhost',
'username' => 'passbolt',
'password' => 'PassboltdbPass',
'database' => 'passdb',
],
],Вставьте отпечаток GPG и раскомментируйте пути к публичному и приватному ключам:
'gpg' => [
'serverKey' => [
'fingerprint' => '38E3736DD02860F8CBA57BB99C8B82A2C3A6959F',
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
],
],Сохраните файл.
- Создайте конфигурацию Nginx для Passbolt:
nano /etc/nginx/conf.d/passbolt.confВставьте (не забудьте заменить домен и пути к сертификатам):
server {
listen 80;
server_name pass.example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name pass.example.io;
root /var/www/passbolt;
ssl_certificate /etc/letsencrypt/live/pass.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pass.example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
}
location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
access_log off;
log_not_found off;
try_files $uri /webroot/$uri /index.php?$args;
}
}Проверьте конфигурацию и перезапустите Nginx:
nginx -t
sudo systemctl restart nginx
- Запускаем установщик Passbolt:
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install" nginxВо время установки будет предложено создать администратора: введите e-mail, имя и фамилию. Сохраните ссылку установки.

Завершение установки из браузера
Откройте ссылку, которую сгенерировал инсталлятор, например:
- Passbolt подскажет установить расширение браузера. Нажмите «Download extension» и установите его.

- В расширении задайте новую парную парольную фразу (passphrase). Нажмите «Next».

- Скачайте recovery kit (файл для восстановления доступа) и сохраните его в безопасном месте.

- Выберите цвет и буквы токена безопасности — запомните комбинацию.

- После завершения вы попадёте в панель пользователя.

- Посмотреть список пользователей можно через интерфейс администратора.

Безопасность и рекомендации
Важно: в примере приватный GPG-ключ не защищён паролем для совместимости. Рассмотрите следующие меры:
- Хранение приватного ключа в HSM или на отдельной защищённой машине.
- Если вы оставляете ключ без пароля, ограничьте доступ к файлам (chmod 600) и владелец — nginx.
- Включите двухфакторную аутентификацию для пользователей там, где поддерживается.
- Разверните TLS с современными настройками (TLS 1.2/1.3) и используйте автоматическое обновление сертификатов (Certbot + systemd timer).
- Регулярно обновляйте систему и PHP-расширения.
Краткий чеклист безопасности:
- Приватные ключи: права 600, владелец nginx.
- Сертификаты TLS: действующие и автоматические обновления.
- Резервные копии: конфигурации, БД, GPG-ключи, recovery kits.
- Логи: мониторинг ошибок Nginx и PHP-FPM.
- Брандмауэр: ограничьте доступ к админ-панели по IP, если возможно.
Чеклисты по ролям
Администратор сервера:
- Установить зависимости и обновления.
- Настроить систему логирования и мониторинга.
- Настроить бэкапы и проверять их на возможность восстановления.
DevOps/инфраструктура:
- Настроить TLS и автоматическое продление.
- Организовать CI/CD для обновления приложения (если требуется).
- Обеспечить изоляцию окружений (prod/staging).
Security officer:
- Провести аудит прав на ключи и базы данных.
- Определить политику ротации ключей и паролей.
- Настроить оповещения о подозрительной активности.
Тесты и критерии приёмки
- Сайт отображается по HTTPS без предупреждений в браузере.
- Установщик завершился успешно и создан хотя бы один администратор.
- Вход в браузерное расширение проходит, и можно зашифровать/дешифровать тестовую запись.
- Резервное восстановление: можно импортировать recovery kit на тестовой машине и сбросить passphrase.
Откат и план действий при проблемах
Если Nginx не стартует после конфигурации — проверьте nginx -t, логи /var/log/nginx/error.log и права на /var/www/passbolt.
Если PHP-FPM не запускается — проверьте статус systemctl status php-fpm и журналы journalctl -u php-fpm.
Проблемы с GPG (ключи не видны для nginx): проверьте /var/lib/nginx/.gnupg и права, убедитесь, что ключи импортированы под этим пользователем.
Откат к рабочей версии: восстановите снимок VM или резервные копии конфигураций (nginx, /var/www/passbolt, дамп БД).
Инцидентный план:
- Диагностика (10–30 мин): проверить логи и доступность сервисов.
- Быстрый откат (30–60 мин): восстановить последнюю рабочую VM/бэкап.
- Пост-мортем: собрать логи, исправить процесс обновления и добавить тесты.
Альтернативные подходы
- Docker / Docker Compose: можно использовать официальный контейнер passbolt/passbolt для упрощения деплоя и изоляции зависимостей.
- Kubernetes: для масштабируемых инфраструктур — развернуть в k8s с секретами в SealedSecrets или Vault.
- Managed SaaS: если self-hosting неприемлем, есть облачные менеджеры паролей.
Плюсы ручной установки: полный контроль над инфраструктурой. Минусы: сложнее поддерживать обновления и безопасность.
Полезные сниппеты и команды
Проверка прав на приватный ключ:
ls -la /var/www/passbolt/config/gpg/
sudo -u nginx gpg --list-secret-keysПрава безопасности для приватного ключа:
sudo chown nginx:nginx /var/www/passbolt/config/gpg/serverkey_private.asc
sudo chmod 600 /var/www/passbolt/config/gpg/serverkey_private.ascРезервный дамп БД:
mysqldump -u root -p passdb > /root/passdb-$(date +%F).sqlЧастые ошибки и способы устранения
- Ошибка composer: проверьте версию PHP и установленные расширения (php-intl, php-mbstring и т.д.).
- Ошибка доступа к GPG-ключу: убедитесь, что каталог .gnupg принадлежит nginx и имеет корректные права.
- Ошибки SSL: проверьте путь к сертификатам и права на файлы, nginx должен уметь читать их.
Короткая методология обслуживания
- Еженедельно: проверка логов, свободного места, статуса сервисов.
- Ежемесячно: обновление пакетов, плановый перезапуск сервисов в maintenance window.
- Ежеквартально: тест восстановления из бэкапа, ревью пользователей и прав доступа.
Глоссарий (1 строка)
- GPG: инструмент для создания OpenPGP-ключей.
- HSM: аппаратный модуль безопасности для хранения ключей.
- TLS: протокол транспорта безопасности (HTTPS).
Резюме
Вы установили Passbolt на Rocky Linux: подготовили систему, установили зависимости, настроили MariaDB и PHP-FPM, сгенерировали GPG-ключи, сконфигурировали Nginx и завершили установку через веб-интерфейс. Не забудьте про безопасность приватного ключа, бэкапы и регулярное обслуживание.
Важно: для production-среды рассмотрите хранение приватного ключа в HSM или использование защищённого хранилища секретов и настройку мониторинга.
Спасибо — теперь вы готовы создать пользователей для команды и начать централизованное управление паролями.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента