Сразу: не пытайтесь развернуть это решение на проде без конфигурации брандмауэра, защищённого соединения и актуального ПО. Безопасность здесь не факультативна, а требование по умолчанию.
Перед стартом – проверьте, установлены ли следующие компоненты: sudo, curl, gnupg, lsb-release. Нет? Устанавливайте сразу:
apt update && apt install sudo curl gnupg lsb-release -y
Забудьте про инсталляцию через Snap или Flatpak – здесь нужны только официальные deb-пакеты и строгий контроль над зависимостями. Доверие к PPA? Только к официальному источнику. Лишнее добавление сторонних репозиториев – мина замедленного действия.
Важно! Не запускайте установку на неподдерживаемой версии системы. Минимум – 20.04 LTS. Лучше – 22.04 LTS. Проверено. Всё, что ниже, вызывает проблемы с совместимостью зависимостей.
Обновление ядра? Только если знаете, что делаете. Используйте стабильный релиз без кастомных сборок – вы здесь не ради экспериментов, а ради рабочего инструмента. Это не песочница. Это продакшн.
Схема подключения: только HTTPS. HTTP – мёртв. Вам нужен certbot и доступ к порту 443. Убедитесь, что DNS-запись A указывает на ваш IP и порт проброшен. Без этого дальше идти бессмысленно.
Внимание! Не используйте root для запуска веб-сервера или сервиса. Создайте отдельного пользователя. Привяжите права. Иначе – привет, уязвимости.
Будет много зависимостей: PHP (и не любой, а строго >= 8.1), MariaDB или MySQL, Nginx или Apache, GPG-ключи, cron. Ошиблись с версией PHP – получите белый экран. Пропустили конфигурацию cron – сломается отправка уведомлений. Здесь нет права на лень. Всё критично.
Готовы? Тогда не отвлекайтесь. Эта система либо работает стабильно, либо не работает вообще. Полумер не существует.
Содержание статьи
Подготовка среды: установка зависимостей и настройка репозиториев
Сначала обновите индекс пакетов. Без этого – поломки, конфликты, головная боль.
apt update && apt upgrade -y
Нужны: sudo, curl, gnupg, lsb-release, ca-certificates. Не тяните за собой недостающие зависимости на этапе сборки. Ставьте сразу:
apt install sudo curl gnupg2 ca-certificates lsb-release -y
Не используйте сторонние скрипты. Только официальные ключи и проверенные источники. Добавьте ключ для пакетов разработчика:
curl -fsSL https://download.passbolt.com/pub.key | gpg --dearmor -o /usr/share/keyrings/passbolt-repo.gpg
Дальше – подключение официального источника пакетов. Не ошибитесь с именем дистрибутива. Автоопределение через lsb_release -cs иногда врёт. Лучше явно указывать версию:
echo "deb [signed-by=/usr/share/keyrings/passbolt-repo.gpg] https://download.passbolt.com/ce/apt jammy main" | tee /etc/apt/sources.list.d/passbolt.list
jammy – это 22.04. Для 20.04 используйте focal. Проверяйте. Неправильная строка – ошибки при разрешении зависимостей.
Внимание! Не добавляйте PPA с PHP вручную. Используйте
ppa:ondrej/phpтолько если понимаете, как управлять конфликтами версий. Любое обновление может снести совместимость.
Обновляем список снова, теперь с новым источником:
apt update
Поддерживаем порядок в системе. Удалите мусор, отключите ненужные репозитории. Не превращайте окружение в свалку. Чем чище, тем стабильнее.
Важно помнить: Все команды должны выполняться от имени пользователя с правами sudo. Не запускайте их от root без необходимости. Минимизируйте риск.
Установка Passbolt и настройка веб-сервера Nginx
Ставить надо только через APT. Никаких .tar.gz, никаких curl | bash. Только официальный пакет:
apt install passbolt-ce-server -y
После установки не трогайте конфиги вручную. Первичная настройка – через встроенный скрипт. Не пропускайте его:
sudo passbolt-ce-setup
Будет серия вопросов: база, SMTP, GPG. Ошиблись – сломаете всё. Читайте внимательно. Не используйте root-пароли от MySQL. Создайте отдельного пользователя. Без прав на DROP, только SELECT/INSERT/UPDATE/DELETE.
Теперь к nginx. Apache? Нет. Только nginx. Почему? Производительность. Предсказуемость. Меньше сюрпризов.
Сначала глушим default:
rm /etc/nginx/sites-enabled/default
Создаём конфигурацию под имя хоста:
nano /etc/nginx/sites-available/passbolt
Пример:
server {
listen 80;
server_name vault.example.com;
nginxEditroot /usr/share/php/passbolt/webroot;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
Путь до сокета PHP может отличаться. Проверьте:
ls /run/php/
Активируем конфигурацию:
ln -s /etc/nginx/sites-available/passbolt /etc/nginx/sites-enabled/passbolt
Проверяем синтаксис:
nginx -t
Перезапуск:
systemctl reload nginx
Внимание! Не открывайте доступ по HTTP в публичной сети. Без шифрования тут нельзя. Это не браузерный игрушечный сайт, это хранилище ключей.
Система должна видеть nginx, PHP-FPM, MySQL и GPG как работающие процессы. Один не встал – всё ломается. Проверяйте статус:
systemctl status php8.1-fpm nginx mysql
Важно помнить: Не оставляйте интерфейс конфигурации открытым после инициализации. Удалите или закройте доступ через правила nginx. Без этого – открытая дыра.
Если всё сделано правильно – по адресу откроется веб-интерфейс. Если нет – логи в /var/log/nginx/*. Ошибка 502? Проблема с PHP-FPM. Ошибка 403? Неправильные права. Ошибка 500? Конфиг PHP или база. Не гадайте – читайте логи. Они всё скажут.
Настройка HTTPS с помощью Let’s Encrypt и начальная конфигурация Passbolt
Не откладывайте SSL. Без шифрования всё, что вы делаете, теряет смысл. Ставьте certbot из snap, не из репозиториев. Там мусор и устаревшее ПО:
snap install core && snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Проверьте DNS. A-запись обязана указывать на внешний IP. Иначе – ошибка авторизации у Let’s Encrypt. Не проверяйте на localhost, это бессмысленно.
Далее – один выстрел:
certbot --nginx -d vault.example.com
Почта – валидная. Никаких no-reply@. Это не формальность. Если домен не резолвится публично – ничего не сработает. Проверяйте через dig:
dig +short vault.example.com
После генерации сертификата certbot сам врежет блок в конфигурацию nginx. Проверьте руками. Не доверяйте автогенерации на 100%. Иногда криво вставляет редиректы.
Внимание! Настройте автоматическое обновление сертификатов. Иначе через 90 дней придёт тишина и 526 от Cloudflare. Добавьте в crontab:
echo "0 3 * * * /usr/bin/certbot renew --quiet" >> /etc/crontab
Теперь – финальный штрих. Переход в браузер по адресу https://vault.example.com. В первый раз откроется мастер конфигурации. Если этого не происходит – смотрите в nginx error.log.
На этапе генерации GPG-ключей не используйте нестандартные длины. Только 4096. Только RSA. Только через мастер. Ручная генерация = конфликт ключей.
Имя администратора, email, пароль – всё пишите корректно. Повторно этот шаг не пройти. Придётся чистить базу вручную и сбрасывать конфиги.
Важно помнить: После завершения мастера убедитесь, что интерфейс установки недоступен. Любой доступ к /setup должен возвращать 403. Это не мелочь – это угроза.
Проверка: откройте root-страницу. Если загрузка медленная – проверьте php-fpm. Если ошибка с сессиями – права на /var/lib/php/sessions. Всё. Дальше – эксплуатация. И логирование.

