Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д.
В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL.
- Особенности Passbolt
- Требования
- Шаг 1: Cкачайте Passbolt на ваш сервер Ubuntu 22.04
- Шаг 2: Создание базы данных и пользователя для Passbolt
- Шаг 3: Сгенерируйте ключ OpenPGP
- Шаг 4: Настройте Passbolt
- Шаг 5: Запустите сценарий установки
- Шаг 6: Создание виртуального хоста Apache или конфигурационного файла Nginx для Passbolt
- Шаг 7: Включение HTTPS
Особенности Passbolt
- Бесплатный и с открытым исходным кодом
- Пароли шифруются с помощью OpenPGP, проверенного криптографического стандарта.
- Браузерные расширения доступны для Firefox, Google Chrome, Microsoft Edge и Brave Browser.
- Мобильное приложение доступно для iOS и Android.
- Легко делитесь учетными данными для входа в систему со своей командой без ущерба для безопасности.
- Удобный интерфейс.
- Импорт и экспорт паролей. Вы можете экспортировать пароли в файлы формата .kdbx или .csv для использования в KeepassX, LastPass или 1password.
- Вы можете вручную добавить учетные данные для входа в систему.
Внимание: Совместимость Passbolt с PostgreSQL является экспериментальной. Если вы не хотите рисковать своими данными, используйте базу данных MariaDB/MySQL.
Требования
Очень важно, чтобы ваш сервер мог отправлять электронные письма, чтобы вы могли восстановить свою учетную запись Passbolt, если забудете пароль.
Вам также понадобится доменное имя, чтобы иметь возможность безопасного доступа к Passbolt из любого места по веб-браузеру.
После того как все вышеперечисленные требования будут выполнены, следуйте приведенным ниже инструкциям, чтобы установить Passbolt.
Шаг 1: Cкачайте Passbolt на ваш сервер Ubuntu 22.04
Если вы перейдете на официальный сайт для загрузки Passbolt, вам потребуется ввести свое имя и адрес электронной почты.
Если это вас не устраивает, скачайте последнюю стабильную версию с Github, выполнив следующие команды на своем сервере.
sudo apt install git sudo mkdir -p /var/www/ sudo chown www-data:www-data /var/www/ -R cd /var/www/ sudo -u www-data git clone https://github.com/passbolt/passbolt_api.git
Файлы будут сохранены в каталоге passbolt_api.
Мы переименуем его в passbolt.
sudo mv passbolt_api passbolt
Затем сделайте пользователя веб-сервера (www-data) владельцем этого каталога.
sudo chown -R www-data:www-data /var/www/passbolt
Выполните следующую команду для установки модулей PHP, необходимых или рекомендуемых Passbolt
sudo apt install php-imagick php-gnupg php8.1-common php8.1-mysql php8.1-fpm php8.1-ldap php8.1-gd php8.1-imap php8.1-curl php8.1-zip php8.1-xml php8.1-mbstring php8.1-bz2 php8.1-intl php8.1-gmp php8.1-xsl
Если вы столкнулись с ошибкой:
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php8.1-common E: Couldn't find any package by glob 'php8.1-common' E: Unable to locate package php8.1-mysql E: Couldn't find any package by glob 'php8.1-mysql' E: Unable to locate package php8.1-fpm E: Couldn't find any package by glob 'php8.1-fpm' E: Unable to locate package php8.1-ldap E: Couldn't find any package by glob 'php8.1-ldap' E: Unable to locate package php8.1-gd E: Couldn't find any package by glob 'php8.1-gd' E: Unable to locate package php8.1-imap E: Couldn't find any package by glob 'php8.1-imap' E: Unable to locate package php8.1-curl E: Couldn't find any package by glob 'php8.1-curl' E: Unable to locate package php8.1-zip E: Couldn't find any package by glob 'php8.1-zip' E: Unable to locate package php8.1-xml E: Couldn't find any package by glob 'php8.1-xml' E: Unable to locate package php8.1-mbstring E: Couldn't find any package by glob 'php8.1-mbstring' E: Unable to locate package php8.1-bz2 E: Couldn't find any package by glob 'php8.1-bz2' E: Unable to locate package php8.1-intl E: Couldn't find any package by glob 'php8.1-intl' E: Unable to locate package php8.1-gmp E: Couldn't find any package by glob 'php8.1-gmp' E: Unable to locate package php8.1-xsl E: Couldn't find any package by glob 'php8.1-xsl'
Используйте следующий вариант:
sudo apt update && apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update && apt install -y php8.1
php -v
Затем перезапустите Apache. (Если вы используете Nginx, вам не нужно перезапускать Nginx).
sudo systemctl restart apache2
Смените каталог.
cd /var/www/passbolt/
Установите Composer – менеджер зависимостей PHP.
sudo apt install composer
Создайте каталог кэша для Composer.
sudo mkdir -p /var/www/.composer
Сделайте www-data владельцем.
sudo chown -R www-data:www-data /var/www/.composer
Шаг 2: Создание базы данных и пользователя для Passbolt
Выполните следующую команду для установки сервера базы данных Postgresql.
PostgreSQL и MariaDB могут работать на одном сервере.
sudo apt install -y postgresql postgresql-contrib
Вам не нужно удалять MariaDB.
Установите PHP-модуль PostgreSQL.
sudo apt install php8.1-pgsql
Войдите в PostgreSQL под пользователем postgres.
sudo -u postgres psql
Создайте базу данных passbolt.
CREATE DATABASE passbolt TEMPLATE template0 ENCODING 'UNICODE';
Создайте пользователя.
CREATE USER passbolt WITH PASSWORD 'passbolt_password';
Предоставьте права доступа пользователю базы данных.
ALTER DATABASE passbolt OWNER TO passbolt;
GRANT ALL PRIVILEGES ON DATABASE passbolt TO passbolt;
Нажмите Ctrl+D, чтобы выйти из консоли PostgreSQL.
Выполните следующую команду, чтобы проверить, можете ли вы войти в PostgreSQL.
psql -h 127.0.0.1 -d passbolt -U passbolt -W
Шаг 3: Сгенерируйте ключ OpenPGP
Если вы используете VPS (виртуальный выделенный сервер), рекомендуется установить пакет haveged для генерации достаточного количества энтропии.
sudo apt install haveged
Служба haveged.service автоматически запускается после установки.
Вы можете проверить его состояние с помощью:
sudo systemctl status haveged
Затем выполните следующую команду для генерации новой пары ключей.
sudo -u www-data gpg --quick-gen-key --pinentry-mode=loopback 'first_name last_name <you@example.com>' default default never
Введите свое имя и фамилию.
Замените you@example.com на свой настоящий адрес электронной почты.
Если вас попросят задать кодовую фразу, пропустите ее, нажав Enter, потому что модуль php-gnupg в настоящее время не поддерживает использование кодовой фразы.
Скопируйте закрытый ключ в местоположение конфигурации passbolt.
sudo -u www-data gpg --armor --export-secret-keys you@example.com | sudo tee /var/www/passbolt/config/gpg/serverkey_private.asc > /dev/null
И также скопируйте открытый ключ.
sudo -u www-data gpg --armor --export you@example.com | sudo tee /var/www/passbolt/config/gpg/serverkey.asc > /dev/null
Инициализируйте связку ключей пользователя www-data.
sudo su -s /bin/bash -c "gpg --list-keys" www-data
Шаг 4: Настройте Passbolt
Убедитесь, что вы находитесь в каталоге /var/www/passbolt/.
cd /var/www/passbolt/
Скопируйте файл конфигурации
sudo cp config/passbolt.default.php config/passbolt.php
Отредактируйте файл конфигурации с помощью текстового редактора командной строки, например, Nano.
sudo nano config/passbolt.php
Сначала найдите следующую строку.
'fullBaseUrl' => 'https://www.passbolt.test',
Замените URL на свой собственный URL, например, https://passbolt.yourdomain.com.
Не забудьте создать запись DNS A для этого поддомена в редакторе зоны DNS.
В разделе конфигурации базы данных введите имя базы данных, имя пользователя базы данных и пароль, которые вы создали в шаге 2.
// Database configuration. 'Datasources' => [ 'default' => [ 'host' => 'localhost', 'driver' => \Cake\Database\Driver\Postgres::class, //'port' => 'non_standard_port_number', 'port' => '5432', 'username' => 'user', 'password' => 'secret', 'database' => 'passbolt', ], ],
Обратите внимание, что вам нужно добавить следующие две строки, чтобы указать Passbolt использовать PostgreSQL вместо MariaDB.
'driver' => \Cake\Database\Driver\Postgres::class, 'port' => '5432',
В разделе конфигурации электронной почты,
- Укажите имя хоста SMTP, номер порта, учетные данные для входа в систему, чтобы ваш passbolt мог отправлять электронные письма. Обычно для отправки электронной почты на удаленный SMTP-сервер используется порт 587. Убедитесь, что вы установили tls в true, так что транзакция SMTP будет зашифрована. Если вы пользуетесь бесплатной службой SMTP-ретрансляции Sendinblue, введите здесь свои учетные данные Sendinblue.
- Также задайте адрес электронной почты From: и имя From.
// Email configuration. 'EmailTransport' => [ 'default' => [ 'host' => 'smtp-relay.sendinblue.com', 'port' => 587, 'username' => 'smtp_username', 'password' => 'smtp_password', // Is this a secure connection? true if yes, null if no. 'tls' => true, //'timeout' => 30, //'client' => null, //'url' => null, ], ], 'Email' => [ 'default' => [ // Defines the default name and email of the sender of the emails. 'from' => ['passbolt@example.com' => 'Passbolt'], //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
Примечание: Если passbolt установлен на том же сервере, что и ваш почтовый сервер, то вам не нужно указывать имя пользователя и пароль в EmailTransport. Просто используйте //, чтобы закомментировать эти две строки.
В разделе gpg введите отпечаток ключа GPG, как показано ниже.
Вам необходимо удалить все пробелы в отпечатке.
'fingerprint' => '33B2E593371DE65A35C0B90B5A1F3AF795D461A7',
Вы можете получить отпечаток ключа с помощью следующей команды.
При генерации пары ключей PGP замените you@example.com на свой адрес электронной почты.
sudo su -s /bin/bash -c "gpg --list-keys" www-data
После ввода отпечатка пальца раскомментируйте следующие две строки.
'public' => CONFIG . 'gpg' . DS . 'serverkey.asc', 'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',
Сохраните и закройте файл.
Шаг 5: Запустите сценарий установки
Запустите скрипт установки от имени пользователя www-data.
sudo su -s /bin/bash -c "/var/www/passbolt/bin/cake passbolt install --force" www-data
Подсказка: если есть много ошибок deprecated, вы можете их игнорировать.
Во время установки вам будет предложено создать учетную запись администратора.
После создания учетной записи вам будет предоставлен URL-адрес для завершения установки в веб-браузере.
Перед этим нам необходимо настроить веб-сервер, используя Apache или Nginx.
Шаг 6: Создание виртуального хоста Apache или конфигурационного файла Nginx для Passbolt
Apache
Если вы предпочитаете использовать веб-сервер Apache, установите Apache.
sudo apt install apache2
Создайте виртуальный хост для Passbolt.
sudo nano /etc/apache2/sites-available/passbolt.conf
Поместите в файл следующий текст.
Замените passbolt.example.com на ваше настоящее доменное имя и не забудьте установить для него запись DNS A.
Также обратите внимание, что корнем для Passbolt является /var/www/passbolt/webroot/, а не /var/www/passbolt/.
<VirtualHost *:80> ServerName passbolt.exmaple.com DocumentRoot /var/www/passbolt/webroot/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/passbolt/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
Сохраните и закройте файл. Затем включите этот виртуальный хост с помощью:
sudo a2ensite passbolt.conf
Перезагрузите Apache, чтобы изменения вступили в силу.
sudo systemctl reload apache2
Nginx
Если вы используете веб-сервер Nginx, установите Nginx.
sudo apt install nginx
Создайте виртуальный хост для Passbolt.
sudo nano /etc/nginx/conf.d/passbolt.conf
Поместите в файл следующий текст. Замените passbolt.example.com на ваше настоящее доменное имя и не забудьте установить для него запись DNS A.
Также обратите внимание, что веб-корнем для Passbolt является /var/www/passbolt/webroot/, а не /var/www/passbolt/.
server { listen 80; listen [::]:80; server_name passbolt.example.com; root /var/www/passbolt/webroot/; error_log /var/log/nginx/passbolt.error; access_log /var/log/nginx/passbolt.access; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { # try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } # Don't log favicon location = /favicon.ico { log_not_found off; access_log off; } # Don't log robots location = /robots.txt { access_log off; log_not_found off; } # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc... location ~ /\. { deny all; access_log off; log_not_found off; } # Deny all grunt, composer files location ~* (Gruntfile|package|composer)\.(js|json)$ { deny all; access_log off; log_not_found off; } # A long browser cache lifetime can speed up repeat visits to your page location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } }
Сохраните и закройте файл. Затем протестируйте конфигурацию Nginx.
sudo nginx -t
Если проверка прошла успешно, перезагрузите Nginx, чтобы изменения вступили в силу.
sudo systemctl reload nginx
Шаг 7: Включение HTTPS
Для шифрования HTTP-трафика мы можем включить HTTPS, установив бесплатный TLS-сертификат, выданный Let’s Encrypt.
Выполните следующую команду для установки клиента Let’s Encrypt (certbot) на сервер Ubuntu 22.04.
sudo apt install certbot
Если вы используете Nginx, то вам также необходимо установить плагин Certbot Nginx.
sudo apt install python3-certbot-nginx
Затем выполните следующую команду для получения и установки сертификата TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d passbolt.example.com
Если вы используете Apache, установите плагин Certbot Apache.
sudo apt install python3-certbot-apache
И выполните эту команду для получения и установки сертификата TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d passbolt.example.com
Теперь сертификат должен быть получен и автоматически установлен.
см. также: