MAATRIX / Блог / Passbolt на Ubuntu 24.04: пошаговая установка

Passbolt на Ubuntu 24.04: пошаговая установка

MAATRIX

Если пароли команды всё ещё живут в общем Excel-файле, чате Telegram или (хуже) в одном аккаунте на всех — это вопрос времени, когда что-то пойдёт не так: уволившийся сотрудник унесёт доступы, а разбираться, кто и когда менял пароль от продакшена, будет уже поздно. Passbolt — self-hosted менеджер паролей для команд с ролями, группами и шифрованием на базе OpenPGP, который закрывает именно эту проблему. Ниже — пошаговая установка Passbolt CE на чистый Ubuntu 24.04, без готовых образов и магии: репозиторий, база данных, GPG-ключ сервера, HTTPS и первый администратор.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится и как подготовить сервер

Passbolt — не самое лёгкое приложение: под капотом PHP, MariaDB, nginx (или Apache) и GPG. Для команды до 20-30 человек хватает конфигурации с 2 vCPU и 4 ГБ RAM, для более крупной — берите с запасом, база растёт медленно, но nginx и PHP-FPM любят память под нагрузкой.

Что нужно заранее:

  • чистый сервер на Ubuntu 24.04 LTS с доступом по SSH-ключу (если ещё не настроили — есть отдельный разбор подключения по SSH-ключу);
  • доменное имя или поддомен (например, passwords.example.com), A-запись которого указывает на IP сервера — без валидного домена не получится нормально выпустить HTTPS-сертификат, а без HTTPS браузерное расширение Passbolt откажется работать. Как прописать DNS, если делаете это впервые, — в статье про настройку домена и DNS;
  • права root или sudo;
  • открытые порты 80 и 443 в файрволе.

Перед началом обновите систему и задайте корректный hostname — installer Passbolt на него ориентируется при генерации GPG-ключа сервера:

sudo apt update && sudo apt -y upgrade
sudo hostnamectl set-hostname passwords.example.com

Установка зависимостей и репозитория Passbolt

Passbolt Community Edition ставится из официального apt-репозитория проекта — так вы получаете актуальные пакеты и обновления через обычный apt upgrade, без ручной сборки. Ставим базовые утилиты и подключаем репозиторий:

sudo apt install -y curl gnupg2 lsb-release ca-certificates
curl -o /tmp/passbolt-repo-setup.ce.sh \
  https://download.passbolt.com/ce/installer/passbolt-repo-setup.ce.sh
sudo bash /tmp/passbolt-repo-setup.ce.sh

Скрипт добавит репозиторий и ключ подписи пакетов. После этого ставим сам сервер одной командой — пакет passbolt-ce-server автоматически подтянет зависимости: MariaDB, nginx, PHP-FPM с нужными модулями и GnuPG:

sudo apt update
sudo apt install -y passbolt-ce-server

Установка займёт несколько минут — apt развернёт MariaDB и nginx, если их ещё не было в системе. Дальше действуем не через мастер, а руками — так проще контролировать конфигурацию и понимать, что где лежит, если позже придётся её менять или переносить.

Проверьте, что MariaDB поднялась и слушает локально:

sudo systemctl status mariadb --no-pager

Если MariaDB на сервере уже была настроена под другие задачи или вы хотите разобраться в её базовой настройке отдельно — есть подробный разбор установки MariaDB на Ubuntu 24.04.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

База данных, GPG-ключ сервера и инициализация

Создаём отдельную базу и пользователя под Passbolt — не используйте root MariaDB в конфиге приложения:

sudo mysql -u root
CREATE DATABASE passboltdb;
CREATE USER 'passbolt'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON passboltdb.* TO 'passbolt'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Основной конфиг приложения — /etc/passbolt/passbolt.php. Скопируйте пример и пропишите доступ к базе и базовый URL сайта:

sudo cp /etc/passbolt/passbolt.default.php /etc/passbolt/passbolt.php
sudo nano /etc/passbolt/passbolt.php

Ключевые параметры, которые нужно поправить:

'App' => [
    'fullBaseUrl' => 'https://passwords.example.com',
],
'Datasources' => [
    'default' => [
        'host' => 'localhost',
        'username' => 'passbolt',
        'password' => 'СЛОЖНЫЙ_ПАРОЛЬ',
        'database' => 'passboltdb',
    ],
],

Дальше — GPG-ключ сервера. Passbolt шифрует служебные данные и подписывает уведомления от имени сервера этим ключом, поэтому он обязателен и генерируется один раз при установке. Запускаем встроенный CLI-инсталлятор от имени пользователя www-data:

sudo su -s /bin/bash -c \
  "/usr/share/php/passbolt/bin/cake passbolt install --force" www-data

Команда пройдёт через несколько шагов: проверит требования окружения (PHP-модули, права на директории), создаст схему базы данных и предложит сгенерировать GPG-ключ сервера — укажите email вида passbolt@passwords.example.com и не защищайте ключ паролем (Passbolt должен иметь возможность использовать его без интерактивного ввода). Ключ и его отпечаток сохранятся в /etc/passbolt/gpg/ — это критичный файл, его обязательно нужно включать в резервные копии, без него сервер не расшифрует ничего из того, что уже зашифровал.

HTTPS через Let's Encrypt и nginx

Passbolt категорически требует HTTPS в проде — без него не будет работать браузерное расширение, через которое сотрудники логинятся и расшифровывают пароли. Пакет уже настроил базовый конфиг nginx в /etc/nginx/sites-available/passbolt.conf, но сертификат нужно выпустить отдельно.

Если Let's Encrypt на сервере ещё не использовали, разберитесь с certbot и логикой продления в статье про настройку SSL через Let's Encrypt. Кратко для Passbolt:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d passwords.example.com

Certbot сам пропишет listen 443 ssl, подключит сертификат и настроит редирект с 80 на 443 в конфиге nginx. Проверьте синтаксис и перезапустите сервис:

sudo nginx -t
sudo systemctl reload nginx

Если Passbolt разворачивается за отдельным reverse proxy или балансировщиком (например, есть общий nginx на несколько приложений), логика такая же, как и для любого другого сервиса — подробности в статье про nginx как reverse proxy: важно только не забыть проксировать заголовок Host и увеличить client_max_body_size, если планируете загружать в Passbolt вложения через плагин Resource Types.

Откройте https://passwords.example.com в браузере — должна открыться страница входа Passbolt с полем для GPG-ключа. Если видите ошибку сертификата или 502 — проверьте sudo systemctl status php8.3-fpm nginx и логи /var/log/nginx/error.log.

Первый администратор, почта и браузерное расширение

Сначала настройте отправку почты — без неё не уйдёт письмо с активацией аккаунта. В /etc/passbolt/passbolt.php заполните секцию EmailTransport данными вашего SMTP (можно использовать внешний сервис вроде почтового провайдера или собственный почтовый сервер) и проверьте отправку:

sudo su -s /bin/bash -c \
  "/usr/share/php/passbolt/bin/cake passbolt send_test_email --recipient you@example.com" www-data

Если письмо не пришло — проверяйте не Passbolt, а сам SMTP-транспорт: доступность порта, TLS, авторизацию.

Создаём первого пользователя с ролью администратора:

sudo su -s /bin/bash -c \
  "/usr/share/php/passbolt/bin/cake passbolt register_user \
  -u admin@example.com -f Admin -l Admin -r admin" www-data

Команда выведет ссылку активации (если письмо не настроено — используйте её напрямую). Дальше на стороне клиента:

  1. Установите расширение Passbolt для Chrome, Firefox или Edge из официального магазина браузера.
  2. Перейдите по ссылке активации — расширение сгенерирует для пользователя личную пару GPG-ключей.
  3. Сохраните приватный ключ и, что важнее, — распечатанную или сохранённую отдельно от сервера кодовую фразу восстановления. Если пользователь потеряет и ключ, и фразу, его хранилище паролей восстановить будет невозможно даже администратору — это осознанная особенность модели шифрования Passbolt, а не баг.
  4. Войдите в веб-интерфейс — расширение подставит приватный ключ автоматически.

Пользователи, группы и резервное копирование

Дальше — рутина администрирования. Приглашайте сотрудников через веб-интерфейс (раздел Users → Create), назначайте роли (обычный пользователь или администратор) и собирайте группы под команды или проекты — доступ к паролям в Passbolt раздаётся не персонально на каждого, а через группы и папки, что сильно упрощает жизнь при найме и увольнениях: убрали человека из группы — он потерял доступ ко всем паролям группы одним действием.

Для сравнения: если рассматривали более простой self-hosted менеджер паролей и не уверены, что Passbolt с его ролями и группами — то, что нужно именно вам, есть сопоставление Vaultwarden против Bitwarden — Vaultwarden проще в установке и достаточен для личного использования или маленькой команды без сложной ролевой модели, тогда как Passbolt рассчитан именно на корпоративный сценарий с аудитом и групповым доступом.

Резервное копирование Passbolt — это три вещи, и терять нельзя ни одну:

Что бэкапитьГде лежитПочему критично
Дамп базы MariaDBpassboltdbпароли, метаданные, права доступа
GPG-ключ сервера/etc/passbolt/gpg/без него сервер не расшифрует служебные данные
Конфиг приложения/etc/passbolt/passbolt.phpдоступы к базе, SMTP, домен
sudo mysqldump passboltdb > /root/backups/passboltdb-$(date +%F).sql
sudo tar czf /root/backups/passbolt-gpg-$(date +%F).tar.gz /etc/passbolt/gpg/ /etc/passbolt/passbolt.php

Автоматизировать это разумнее через cron и внешнее хранилище, а не хранить копии на том же диске, что и сам сервер — логика и готовые схемы описаны в статье про установку BorgBackup на Ubuntu 24.04.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить Passbolt через Docker вместо apt-пакета?

Да, у проекта есть официальный Docker-образ, и это рабочий путь, если вы уже держите остальную инфраструктуру в контейнерах. Логика та же: отдельная база, GPG-ключ сервера, HTTPS снаружи — просто конфигурация передаётся через переменные окружения, а не файл passbolt.php.

Что случится, если потеряется GPG-ключ сервера?

Сервер потеряет возможность расшифровывать и подписывать служебные данные, а восстановить сам ключ без резервной копии нельзя — это математика асимметричного шифрования, а не ограничение софта. Отсюда жёсткое требование бэкапить /etc/passbolt/gpg/ отдельно от базы данных, желательно в другое место.

Нужен ли отдельный сервер под Passbolt или можно на общем с другими сервисами?

Технически можно разместить рядом с другими приложениями за общим nginx, но пароли команды — тот случай, когда изоляция себя оправдывает: отдельный VPS снижает поверхность атаки и упрощает бэкапы и обновления без риска задеть соседние сервисы.

Почему расширение браузера пишет "SSL error" при рабочем сертификате?

Чаще всего — сертификат выдан не на тот домен, что указан в fullBaseUrl конфига, либо nginx отдаёт self-signed сертификат по умолчанию для домена, не совпавшего ни с одним server_name. Сверьте домен в адресной строке, в certbot и в passbolt.php — они должны совпадать посимвольно.

Как обновлять Passbolt дальше?

Через тот же apt: sudo apt update && sudo apt upgrade passbolt-ce-server. Перед крупными обновлениями версии всё равно стоит снять свежий бэкап базы и GPG-ключа — миграции схемы необратимы без него.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →