Это руководство предназначено как для технических энтузиастов, так и для ИТ-специалистов и предлагает простой, пошаговый процесс установки Passbolt CE в вашей системе Ubuntu 22.04. Если вы хотите повысить личную кибербезопасность или улучшить командное управление паролями, это руководство поможет вам.

Предварительные условия

  • Ubuntu 22.04 VPS
  • Минимум 2 ГБ ОЗУ
  • root-доступ по SSH или системный пользователь с привилегиями sudo.
  • Рабочий SMTP-сервер для уведомлений по электронной почте.

Шаг 1. Обновите системные пакеты

Для начала войдите в свой Ubuntu 22.04 VPS, используя SSH:

ssh root@IP_Address -p Port_number

Замените «IP_Address» и «Port_number» фактическим IP-адресом вашего сервера и номером порта SSH. При необходимости замените «root» на имя пользователя вашей учетной записи sudo.

После входа в систему вы должны убедиться, что все пакеты ОС Ubuntu, установленные на сервере, обновлены. Вы можете сделать это, выполнив следующие команды:

sudo apt-get update -y && sudo apt-get upgrade -y

Шаг 2. Установите веб-сервер

В этом руководстве мы будем использовать Nginx в качестве веб-сервера, но вы также можете выбрать Apache, если хотите. Nginx, высокоэффективный веб-сервер, в настоящее время пользуется большим спросом. Более того, он служит универсальным инструментом, способным функционировать как обратный прокси-сервер, так и кеширующий сервер. Используйте следующую команду для установки веб-сервера Nginx:

sudo apt install nginx

После установки мы можем включить автоматический запуск Nginx во время загрузки, выполнив следующую команду:

sudo systemctl enable nginx

Затем запустите Nginx, используя:

sudo systemctl start nginx

Если все работает как положено, вы можете проверить статус с помощью следующей команды:

sudo systemctl status nginx

Вот как должен выглядеть результат:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-04-04 07:52:27 CST; 6s ago
       Docs: man:nginx(8)
    Process: 2741 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2742 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 2743 (nginx)
      Tasks: 3 (limit: 4558)
     Memory: 3.3M
        CPU: 44ms
     CGroup: /system.slice/nginx.service
             ├─2743 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─2744 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─2745 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Шаг 3. Установите MariaDB

MariaDB служит полной заменой MySQL. Он был разработан бывшими членами команды MySQL, которые выразили обеспокоенность тем, что Oracle может перевести MySQL в продукт с закрытым исходным кодом. Выполните следующую команду, чтобы установить MariaDB в Ubuntu 22.04:

sudo apt install mariadb-server mariadb-client

После установки мы можем включить автоматический запуск MariaDB во время загрузки, выполнив следующую команду:

sudo systemctl enable mariadb

Затем запустите MariaDB, используя:

sudo systemctl start mariadb

Если все работает как положено, вы можете проверить статус с помощью следующей команды:

sudo systemctl status mariadb

Вот как должен выглядеть результат:

● mariadb.service - MariaDB 10.6.16 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-04-04 08:02:34 CST; 19s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 3386 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 12 (limit: 4558)
     Memory: 61.1M
        CPU: 525ms
     CGroup: /system.slice/mariadb.service
             └─3386 /usr/sbin/mariadbd

Шаг 4. Установите PHP

Существует два основных способа установки PHP в Ubuntu. Мы воспользуемся стандартным подходом и установим PHP из репозиториев Ubuntu с помощью менеджера пакетов APT, как показано ниже:

sudo apt install php

Однако важно отметить, что этот метод не предоставляет последнюю версию PHP. В настоящее время репозиторий предоставляет только PHP 8.1.

Далее мы установим расширения PHP с помощью следующей команды:

sudo apt install php-{fpm,mysql,common,cli,opcache,readline,mbstring,xml,gd,cur,imagick,gnupg,ldap,imap,zip,bz2,intl,gmpl}

Шаг 5. Создайте базу данных и пользователя базы данных.

Теперь, когда стек LEMP установлен, мы собираемся создать пустую базу данных для Passblot и пользователя базы данных с разрешением на доступ к этой базе данных.

Войдите в консоль MySQL и выполните следующие команды:

sudo mysql -u root
CREATE DATABASE passbolt;
CREATE USER 'passbolt'@'localhost' IDENTIFIED BY 'YourStrongPasswordHere';
GRANT ALL PRIVILEGES ON passbolt.* TO 'passbolt'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Обязательно обновите «YourStrongPasswordHere», указав более безопасный пароль.

Шаг 6. Клонируйте репозиторий Passbolt GitHub

После установки системных зависимостей для работы Passbolt мы клонируем репозиторий последней стабильной версии Passbolt, доступной на GitHub, выполнив следующие команды:

sudo apt install git 
sudo -R chown www-data:www-data /var/www/
cd /var/www/
sudo -u www-data git clone https://github.com/passbolt/passbolt_api.git

Затем откройте каталог Passbolt и установите композитор:

cd /var/www/passbolt_api/
sudo apt install composer

Используйте Composer для установки зависимостей PHP с помощью следующей команды:

sudo -u www-data composer install --no-dev

Он должен спросить, хотите ли вы установить права доступа к каталогу, ответьте «Y»:

Шаг 7. Создайте ключ OpenPGP

Пользователям виртуальных частных серверов (VPS) рекомендуется установить пакет hasged, чтобы обеспечить адекватное генерирование энтропии.

sudo apt install haveged

Если все работает как положено, вы можете проверить статус с помощью следующей команды.

sudo systemctl status haveged

Вот как должен выглядеть результат:

● haveged.service - Entropy Daemon based on the HAVEGE algorithm
     Loaded: loaded (/lib/systemd/system/haveged.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-04-04 08:10:25 CST; 1min 14s ago
       Docs: man:haveged(8)
             http://www.issihosts.com/haveged/
   Main PID: 22174 (haveged)
      Tasks: 1 (limit: 4558)
     Memory: 3.3M
        CPU: 356ms
     CGroup: /system.slice/haveged.service
             └─22174 /usr/sbin/haveged --Foreground --verbose=1

Затем выполните следующую команду, чтобы сгенерировать новую пару ключей.

sudo -u www-data gpg --quick-gen-key --pinentry-mode=loopback 'YourFirstName YourLastName <yourMailAddress@yourDomain.com>' default default never

Замените «YourFirstName» и «YourLastName» на свое имя и фамилию, а «<yourMailAddress@yourDomain.com» на свою учетную запись электронной почты.

Если будет предложено установить пароль, просто проигнорируйте его, нажав Enter, поскольку модуль php-gnupg в настоящее время не поддерживает использование пароля.

Скопируйте закрытый и открытый ключ в папку конфигурации Passbolt, выполнив следующие команды:

sudo -u www-data gpg --armor --export-secret-keys yourMailAddress@yourDomain.com | sudo tee /var/www/passbolt_api/config/gpg/serverkey_private.asc > /dev/null

sudo -u www-data gpg --armor --export yourMailAddress@yourDomain.com | sudo tee /var/www/passbolt_api/config/gpg/serverkey.asc > /dev/null

Инициализируйте связку ключей для пользователя www-data, чтобы настроить криптографические ключи и связанные операции для пользователя www-data:

sudo -u www-data gpg --list-keys

Сохраните отпечаток ключа, чтобы использовать его позже.

Шаг 8. Настройте Passbolt

Доступ к каталогу Passbolt:

cd /var/www/passbolt_api

Создайте копию файла конфигурации по умолчанию с помощью команды:

sudo cp config/passbolt.default.php config/passbolt.php

Откройте файл конфигурации с помощью текстового редактора:

sudo nano config/passbolt.php

Затем измените содержимое:

'fullBaseUrl' => 'https://passbolt.yourdomain.com',

Обязательно обновите passbolt.yourdomain.com, указав URL-адрес, который вы будете использовать для подключения Passbolt.

В разделе конфигурации базы данных введите имя базы данных, имя пользователя и пароль, которые вы создали для Passbolt.

    // Database configuration.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'passbolt',
            'password' => 'YourStrongPasswordHere',
            'database' => 'passbolt',

В разделе конфигурации электронной почты вам необходимо заполнить данные своей учетной записи электронной почты, которую вы будете использовать для восстановления паролей.

   // Email configuration.
    'EmailTransport' => [
        'default' => [
            'host' => 'yourSMTPHostname.com',
            'port' => 465,
            'username' => 'yourSMTPUser',
            'password' => 'yourSMTPPassword',
            // 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' => ['yourMailAddress@yourDomain.com' => 'Passbolt'],
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

В разделе GPG введите отпечаток ключа GPG, как показано ниже. Обязательно удалите все пробелы из отпечатка пальца. Кроме того, раскомментируйте строки открытого и закрытого ключей.

   'fingerprint' => 'E2E6E2EB5CE2DF9158CABBE63A22420DB732C8D3',
   'public' => CONFIG . 'gpg' . DS . 'serverkey.asc',
   'private' => CONFIG . 'gpg' . DS . 'serverkey_private.asc',

Чтобы сохранить и закрыть файл, нажмите CTRL + X, а затем Y.

Шаг 9. Запустите установку

Теперь нам нужно запустить сценарий установки от имени пользователя www-data.

sudo su -s /bin/bash -c "/var/www/passbolt_api/bin/cake passbolt install --force" www-data

Во время установки вам будет предложено создать учетную запись администратора.

User email (also called username)
> YourPassboltUser@yourdomain.com
First name
> YourFirstName
Last name
> YourLastName
User saved successfully.
To start registration follow the link provided in your mailbox or here: https://passbolt.yourdomain.com/setup/start/a97554f8-3e3f-4764-89a4-858d3a64b99f/cce4db00-3464-41fe-a3f9-d201e73e81b7
Passbolt installation success! Enjoy! ☮

После создания учетной записи вы получите URL-адрес для завершения установки в веб-браузере. Прежде чем продолжить, необходимо создать блок сервера на Nginx.

Шаг 10. Создайте блок сервера на Nginx

Определите блок сервера для вашего домена, создав этот файл. Мы используем nano, но вы можете использовать любой текстовый редактор, который вам нравится:

sudo nano /etc/nginx/conf.d/passbolt.conf

После создания файла вставьте следующее содержимое:

server {
    listen 80;
    server_name passbolt.yourdomain.com;
    root /var/www/passbolt_api/webroot/;
    error_log /var/log/nginx/passbolt_error.log;
    access_log /var/log/nginx/passbolt_access.log;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        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;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        access_log off;
        log_not_found off;
    }

    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location ~* (Gruntfile|package|composer)\.(js|json)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

    location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
        access_log off;
        log_not_found off;
        expires 360d;
    }

}

Обязательно обновите passbolt.yourdomain.com, указав URL-адрес, который вы будете использовать для подключения Passbolt.

Чтобы сохранить и закрыть файл, нажмите CTRL + X, а затем Y.

Вы можете проверить правильность синтаксиса, используя:

sudo nginx -t

Вот как будет выглядеть результат:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Затем перезагрузите сервис Nginx, чтобы применить изменения:

systemctl reload nginx

Шаг 11. Установите Certbot

Чтобы включить SSL, нам необходимо установить сертификат SSL для нашего домена/поддомена Passbolt. Выполните следующие действия, чтобы установить SSL от Let’s Encrypt с помощью certbot.

sudo apt install python3-certbot-nginx -y

После установки выполните следующую команду, чтобы установить сертификат SSL:

certbot

Вам будет предложено указать свой адрес электронной почты, принять Условия использования Let’s Encrypt TOS и выбрать, следует ли передавать свой адрес электронной почты Electronic Frontier Foundation. Затем вам нужно будет выбрать имя домена/субдомена, для которого вы хотите активировать HTTPS. Введите соответствующий номер и нажмите ENTER, чтобы выбрать веб-сайт Passbolt.

Затем Let’s Encrypt установит сертификат и предложит вам настроить перенаправление HTTP на HTTPS. Вы можете выбрать перенаправление, и certbot создаст перенаправление и перезагрузит NGINX, если все в порядке.

После запуска команды «certbot» вы получите примерно такой результат:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Enter email address (used for urgent renewal and security notices)

 (Enter 'c' to cancel): YourPassboltUser@yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Please read the Terms of Service at

https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must

agree in order to register with the ACME server. Do you agree?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Would you be willing, once your first certificate is successfully issued, to

share your email address with the Electronic Frontier Foundation, a founding

partner of the Let's Encrypt project and the non-profit organization that

develops Certbot? We'd like to send you email about our work encrypting the web,

EFF news, campaigns, and ways to support digital freedom.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(Y)es/(N)o: y

Account registered.

Which names would you like to activate HTTPS for?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: passbolt.yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Select the appropriate numbers separated by commas and/or spaces, or leave input

blank to select all options shown (Enter 'c' to cancel): 1

Requesting a certificate for passbolt.yourdomain.com

Successfully received certificate.

Certificate is saved at: /etc/letsencrypt/live/passbolt.yourdomain.com/fullchain.pem

Key is saved at:         /etc/letsencrypt/live/passbolt.yourdomain.com/privkey.pem

This certificate expires on 2024-07-04.

These files will be updated when the certificate renews.

Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate

Successfully deployed certificate for passbolt.yourdomain.com to /etc/nginx/conf.d/passbolt.conf

Congratulations! You have successfully enabled HTTPS on https://passbolt.yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

If you like Certbot, please consider supporting our work by:

 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate

 * Donating to EFF:                    https://eff.org/donate-le

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Шаг 12. Завершите установку

Passbolt совместим только с Firefox и Google Chrome. Для завершения установки вам необходимо скачать и установить расширение для браузера.

После установки расширения перейдите по URL-адресу, указанному в конце сценария установки.

Если доступ прошел успешно, мы должны создать пароль.

Когда Passbolt успешно установлен, вы можете создавать пароли.

Шаг 13. Настройте задание Cron для очереди почты Passbolt.

Чтобы отправлять сообщения электронной почты, вам необходимо настроить запуск задания cron каждую минуту.

Вы должны добавить задание cron для пользователя, связанного с вашим веб-сервером, которым в этом руководстве является пользователь www-data. Выполните следующую команду:

sudo crontab -u www-data -e

Затем добавьте следующий контент:

* * * * * /var/www/passbolt_api/bin/cake EmailQueue.sender

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

Теперь вы можете получить доступ к Passbolt Manager, используя свое доменное имя по адресу https://passbolt.yourdomain.com, и начать работу над своим проектом. Дополнительные сведения о Passbolt, его функциях и настройке см. в их официальной документации.

Если вам понравился этот пост об установке Passbolt на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях или просто оставьте комментарий ниже. Спасибо.