Гид по технологиям

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

• 7 min read • DevOps • Обновлено 28 Nov 2025
Passbolt на Rocky Linux — установка и настройка
Passbolt на Rocky Linux — установка и настройка

Фоновое изображение установки Passbolt на сервере

Важно: этот гайд описывает установку с 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-пользователем.

  1. Включаем PowerTools и EPEL:
sudo dnf config-manager --set-enabled powertools
sudo dnf install epel-release -y
  1. Включаем модуль PHP 7.4:
sudo dnf module enable php:7.4 -y
  1. Устанавливаем 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.

  1. Устанавливаем 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
  1. Устанавливаем расширение GnuPG для PHP через PECL и включаем его:
pecl install gnupg
echo "extension=gnupg.so" > /etc/php.d/gnupg.ini
  1. Запускаем и включаем сервисы:
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

  1. Настройка безопасности MariaDB (установите пароль root и согласитесь с рекомендациями):
mysql_secure_installation
  1. Настройка временной зоны PHP: откройте /etc/php.ini и поправьте date.timezone.
nano /etc/php.ini

Пример:

date.timezone = Europe/Paris

Сохраните и выйдите.

  1. Измените конфигурацию 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;

Создание базы данных passdb в MariaDB (вывод команд)

Совет: замените ‘PassboltdbPass’ на надёжный пароль и храните его в менеджере секретов.


Загрузка Passbolt и установка PHP-зависимостей

  1. Клонируем репозиторий и меняем владельца:
cd /var/www/
git clone https://github.com/passbolt/passbolt_api.git passbolt
sudo chown -R nginx:nginx /var/www/passbolt
  1. Устанавливаем PHP-зависимости под пользователем nginx:
cd /var/www/passbolt
sudo -u nginx composer install --no-dev

Если зависимостей много — дождитесь завершения. Ошибки сборки обычно связаны с отсутствием расширений PHP или прав.


Генерация GPG-ключа сервера

Passbolt использует OpenPGP для шифрования данных. Текущие PHP-библиотеки часто не поддерживают работу с закрытыми ключами, защищёнными паролем, поэтому ниже показан пример генерации ключа без пароля. Это удобнее для интеграции, но потенциально снижает безопасность — см. раздел «Безопасность».

  1. Генерация ключа:
gpg --gen-key

В процессе укажите имя и email. Оставьте passphrase пустым (Enter), если следовать примеру.

Пример вывода (сокращённо) — обратите внимание на fingerprint (отпечаток) ключа.

pub   rsa2048 2021-11-16 [SC] [expires: 2023-11-16]
     BCD52DF829FF8F9408A2F1B214F31ED1FBEBAD9A
uid           johndoe 
  1. Экспорт ключей в каталог конфигурации 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
  1. Инициализация 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
  1. Копируем конфиг и редактируем:
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',
    ],
],

Сохраните файл.

  1. Создайте конфигурацию 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

Пример конфигурации Nginx для Passbolt

  1. Запускаем установщик Passbolt:
cd /var/www/passbolt
sudo su -s /bin/bash -c "./bin/cake passbolt install" nginx

Во время установки будет предложено создать администратора: введите e-mail, имя и фамилию. Сохраните ссылку установки.

Форма создания администратора Passbolt в процессе установки


Завершение установки из браузера

Откройте ссылку, которую сгенерировал инсталлятор, например:

https://pass.example.io/setup/install/8383584c-2eca-496a-a0ca-4fe35a157d24/fc5ad911-9409-416a-8175-a18cd19dcb20

  1. Passbolt подскажет установить расширение браузера. Нажмите «Download extension» и установите его.

Страница установки расширения Passbolt в браузере

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

Ввод пары парольной фразы для ключа Passbolt

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

Скачивание recovery kit для восстановления доступа

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

Выбор цвета и метки для токена безопасности Passbolt

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

Панель управления пользователя Passbolt

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

Список пользователей Passbolt


Безопасность и рекомендации

Важно: в примере приватный 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.

Откат и план действий при проблемах

  1. Если Nginx не стартует после конфигурации — проверьте nginx -t, логи /var/log/nginx/error.log и права на /var/www/passbolt.

  2. Если PHP-FPM не запускается — проверьте статус systemctl status php-fpm и журналы journalctl -u php-fpm.

  3. Проблемы с GPG (ключи не видны для nginx): проверьте /var/lib/nginx/.gnupg и права, убедитесь, что ключи импортированы под этим пользователем.

  4. Откат к рабочей версии: восстановите снимок 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 должен уметь читать их.

Короткая методология обслуживания

  1. Еженедельно: проверка логов, свободного места, статуса сервисов.
  2. Ежемесячно: обновление пакетов, плановый перезапуск сервисов в maintenance window.
  3. Ежеквартально: тест восстановления из бэкапа, ревью пользователей и прав доступа.

Глоссарий (1 строка)

  • GPG: инструмент для создания OpenPGP-ключей.
  • HSM: аппаратный модуль безопасности для хранения ключей.
  • TLS: протокол транспорта безопасности (HTTPS).

Резюме

Вы установили Passbolt на Rocky Linux: подготовили систему, установили зависимости, настроили MariaDB и PHP-FPM, сгенерировали GPG-ключи, сконфигурировали Nginx и завершили установку через веб-интерфейс. Не забудьте про безопасность приватного ключа, бэкапы и регулярное обслуживание.

Важно: для production-среды рассмотрите хранение приватного ключа в HSM или использование защищённого хранилища секретов и настройку мониторинга.

Спасибо — теперь вы готовы создать пользователей для команды и начать централизованное управление паролями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро