На новой работе встал вопрос поднялся вопрос о том что все пароли хранятся у нашей команды у кого как. У кого в текстовых документах, у кого на облаке OneDrive в таблице, у кого вообще во всех местах подряд. Я же для своих паролей использую KeePassXC. Файл базы лежит на моём облаке Nextcloud и на телефоне установлено приложение KeePass for Android. Но когда встал а где мне взять пароль от чего-то - мне сообщили пароль у Васи. А Вася в отпуске и трубку не берёт. Вот собственно тогда и встал вопрос о том чтобы рабочие пароли как-то хранить централизованно, что бы у каждого из сотрудников был доступ и можно было в любой момент найти нужный пароль в независимости от того от чего он и кто за него отвечает.
Выбор того как хранить пароли, на самом деле достаточно велик: форков тогоже KeePass достаточно много. Посути KeePassXC сам является форком KeePass Save, если мне не изменяет память. Но у меня стояли конкретные цели:
1. Удобство хранения
2. Запуск на любом устройстве
3. Мобильная версия
4. Шифрование
5. Генератор паролей
6. Проверка на то что пароль слит
7. Бесплатен
Были ещё требования, но они не критичны, и каждый из команды был готов от них отказаться, если приложение его устроит по параметрам указанным выше. Собственно выбор пал на два решения: Passbolt и BearPass. Толи из-за того что второй вариант был созвучен с beerpass, толи из-за того что это российская разработка, выбрали первым для тестирования его. Вот в этой статье я и расскажу как его установить. На самом деле ничего сложного в этом нет, и все делается просто.
Для установки "коробочного" решения на сервер Вам потребуется:
1. PHP 8.4
2. PostgreSQL 13 и выше
3.Пакетный менеджер Composer
Всё. Ну и конечно 2 ядра 2 гига на борту (рекомендуют 4 но нам хватает и 2)
Предположим что у нас уже есть установленная Debian 12 и настроенная на удаленный доступ по SSH под root пользователем. Как это сделать я думаю найти не составит труда. А скачать саму ОС можно у меня в файлах
Первым делом конечно же обновляем систему
apt-get update && apt-get -y upgrade
после чего перегружаемся
reboot
далее добавляем пользователя из под которого будет всё работать, и в процессе из под него же мы будем всё настраивать, например www-data
mkdir -p /var/www
adduser --home /var/www/ www-data
cp /etc/skel/.bashrc /var/www
cp /etc/skel/.profile /var/www
chown -R www-data:www-data /var/www
usermod -s /bin/bash www-data
Далее ставим мной ненавистный Git. Не люблю я его хоть это и прекрасная вещь
apt install git
Чтобы протестировать что всё установилось, т.к. git бывает что не работает, по крайней мере у меня, проверим его версию
git --version
Примерно должны получить следующее:
Цитатаgit version 2.39.5
Далее установим php. Для этого подключим репозиторий
apt install apt-transport-https lsb-release ca-certificates wget -y
wget -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.yandex.ru/mirrors/packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://mirror.yandex.ru/mirrors/packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt update
Ставим OpenSSL
apt-get install openssl
Ставим php версии 8.4.
Вот тут у меня кстати была ошибка. Толи РКН вновь дурковал, толи яндекс. Но в общем у меня не хотелось ничего ставиться. Мне пришлось прописывать ключ "-y" вконце и повторять установку несколько раз, по итогу всё удалось
apt install php8.4 php8.4-{cli,curl,fpm,intl,mbstring,pgsql,zip,xml,bcmath,ldap}
Установится всё что требуется для минимальной работы bearpass. Если необходимы будут какие-то тюненги, тут уже ставьте дополнительные модули сами. Мне достаточно было стандартной установки
Дальше необходимо отредачить файлы конфигов, рекомендую редактировать оба: /etc/php/8.4/fpm/php.ini и /etc/php/8.4/cli/php.ini
date.timezone = "Europe/Moscow" ; Или любая другая, необходимая для сервера
include_path = "."
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
Если используем nano для редактирования, то просто ищем через "Ctrl + W", если какой-другой - то уже сами. Вообще, если я правильно помню, все параметры закомментированы, и достаточно просто в конец файлов добавить эти строки.
Далее на необходимо в файле /etc/php/8.4/fpm/pool.d/www.conf проверить, что php-fpm запускается от ранее созданного пользователя (в нашем примере www-data)
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
После чего рестартим php-fpm
service php8.4-fpm restart
После устанавливаем composer. Его я тоже не люблю еще со времен roundcube, но не смотря на всё он удобен.
apt install wget
wget -O composer-setup.php https://getcomposer.org/installer
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
chmod +x /usr/local/bin/composer
Теперь собственно переходим к установке nginx
apt-get install nginx nginx-full
И сразу после установки удаляем его дефолтные конфиги
rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
Далее в файле /etc/nginx/nginx.conf в секции раскомментировать) строку
server_tokens off;
Далее в файл /etc/nginx/sites-available/bearpass поместить содержимое
upstream bp_fastcgi_backend {
server unix:/run/php/php8.4-fpm.sock;
}
server {
listen 80;
server_name bearpass.ru;
set $BP_ROOT /var/www/bearpass;
include /var/www/bearpass/nginx.conf;
}
этого достаточно для работы. Изменить обязательно стоит только server_name. Остальное по желанию
Активируем сайт
ln -s /etc/nginx/sites-available/bearpass /etc/nginx/sites-enabled/bearpass
Далее ставим PostgreSQL
apt-get install postgresql
и сразу же заходим под админом: по умолчанию это postgres
su postgres
после чего подключаемся к нему
psql
и создаем пользователя с базой данных
CREATE USER <username> WITH encrypted password '<password>'; CREATE DATABASE <db_name> OWNER <username> ENCODING 'UNICODE';
Прошу обратить внимание что имя пользователя, как и имя базы идёт без одинарных ковычек, а вот пароль с одинарными ковычками
Далее можно установить Exim4, но для его нормальной работы потребуется DKIM и SPF. А это уже больше по настройке почтового сервера, поэтому в рамках этой статьи мы это не будет рассматривать.
В целом мы с окружением закончили. Этого достаточно для минимальной работы bearpass (так и подмывает его называть beerpass). Теперь перейдём непосредственно к установке самого приложения.
Дальше настройка и установка будет производиться из под пользователя которого мы создали ранее а именно www-data
su www-data
далее клонируем репу с git с парольным менеджером
git clone https://git.bearpass.ru/bear-pass /var/www/bearpass
переходим в директорию
cd /var/www/bearpass
копируем переменные окружения
cp .env.example .env
редактируем .env
nano .env
заполняем следующие параметры
APP_URL - URL по которому будет открываться парольный менеджер
DB_DATABASE - название базы данных
DB_USERNAME - пользователь с доступом к базе данных
DB_PASSWORD - пароль пользователя
устанавливаем необходимые пакеты с помощью composer
composer install --no-dev -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
composer dump-autoload
генерируем ключи
php artisan key:generate
php artisan encryption-key:generate
выполняем миграции
php artisan migrate --seed --no-interaction --force &&
php artisan optimize:clear
теперь нам нужно добавить записи в crontab, но так как мы сейчас находимся под пользователем www-data, нам это не удастся сделать, поэтому заходим под root
su root
редактируем crontab
nano /etc/crontab
добавив в него строчку
* * * * * /usr/bin/php8.4 /var/www/bearpass/artisan schedule:run > /dev/null 2>&1
теперь вновь возвращаемся под пользователя www-data
su www-data
и создаем пользователя с админскими правами
php artisan make:username
В ответ должен придти запрос на ввод почты и пароля. Они требуются для авторизации
Дальше требуется настроить SSL сертификат, но мне для тестов он не нужен, поэтому я пропустил данный параметр. А вообще он так же необходим для нормальной работы менеджера. Почитать про установку и настройку SSL сертификата можно на сайте разработчиков.
На этом собственно всё. Далее заходим под root
su root
на всякий случай рестартим nginx
service nginx restart
и можем пользоваться.
Да, для полноценной работы необходимо настроить и почту, и SSL и желательно бы прикупить лицензию, но для тестов этого вполне достаточно. Посмотреть, прикинуть, пощупать. И если приглянулось, то можно накатывать SSL и уже тогда можно полноценно пользоваться.
В общем как-то так.
Recommended Comments
There are no comments to display.