Skip to content

Установка на Astra Linux в Docker

Важная информация перед установкой Bearpass

Для нативной установки требуются PHP 8.4 и Nginx (в репозиториях Astra Linux отсутствуют), поэтому рекомендуется установка в Docker-контейнерах.

Для нативной установки выполните шаги, описанные в данном разделе.


IP сервера Bearpass должен быть статическим и доступным из сети клиентов.

В данной инструкции предполагается, что сервер Bearpass будет иметь адрес 192.168.121.180 , а имя хоста bearpass.ald.company.lan .

Имя и адрес контроллера домена ALD Pro dc-1.ald.company.lan: 192.168.121.10.

При необходимости измените эти параметры в инструкции на актуальные.

Необходимо установить:

Выполните установку:

shell
sudo apt update
sudo apt-get install docker.io git -y -q

Пользователь

Важно

Крайне не рекомендуем использовать root в качестве пользователя, запускающего приложение.

Для обеспечения дополнительной безопасности ваших паролей, рекомендуем создать отдельного пользователя для парольного менеджера BearPass.

shell

# создайте пользователя и задайте пароль
sudo adduser bearpass
# добавьте пользователя в группу docker
sudo usermod -aG docker bearpass
# создайте папку для докер проекта и дайте права
mkdir -p /opt/bearpass
chown bearpass /opt/bearpass
# авторизуйтесь под пользователем, дальнейшие действия будут выполняться от его имени
login bearpass

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

Cклонируйте репозитории Bearpass:

shell
git clone https://git.bearpass.ru/bear-pass /opt/bearpass/app
git clone https://github.com/BearPass/Docker-core.git /opt/bearpass/docker

Скопируйте файл конфигурации .env.example в .env:

shell
cd /opt/bearpass/docker
cp .env.example .env

Отредактируйте конфигурационный файл .env:

  • DATABASE_PASSWORD — пароль для создаваемой БД
  • USER_ID и GROUP_ID — идентификаторы пользователя bearpass и его группы
  • BEARPASS_PORT и BEARPASS_SSL_PORT — порты приложения
  • BEARPASS_FULL_URL — URL, по которому открывается приложение

Для просмотра UID/GID используйте:

shell
id
# пример вывода
uid=1005(bearpass) gid=1005(bearpass)
группы=1005(bearpass),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugde
v),100(users)

Пример заполнения .env:

shell
cat > .env << EOF
DATABASE_PASSWORD=bear_PaCCw0rd
BEARPASS_URL=localhost
BEARPASS_PORT=80
BEARPASS_SSL_PORT=443
BEARPASS_FULL_URL=https://localhost
USER_ID=$(id -u bearpass)
GROUP_ID=$(id -g bearpass)
EOF

Установите плагин Docker Compose (если не установлен ранее):

shell
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL
https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

Запустите Docker-окружение Bearpass (находясь в папке /opt/bearpass/docker ):

shell
docker compose up -d

Будут скачаны необходимые образы и запущены контейнеры в фоновом режиме.

Для проверки работоспособности системы выполните:

shell
./bearpass main:health-check

Команду необходимо выполнять из каталога /opt/bearpass/docker .

Создание первого администратора

После первого запуска приложение установит зависимости. Убедитесь, что веб-интерфейс открывается, затем создайте администратора:

shell
./bearpass make:user

Пример вывода:

shell
./bearpass make:user

Введите имя:
> bearadmin

Введите фамилию:
> admin

Введите email (используется для входа):
> bearadmin@ald.company.lan

Введите пароль (минимум 8 символов):
>

Создан новый пользователь `bearadmin admin (bearadmin@ald.company.lan)` с ролью
`admin`

Теперь можно авторизоваться по адресу http://192.168.121.180/

Для входа используйте email (не имя пользователя) и пароль, указанные при создании администратора.

Настройка SSL

Для полноценной работы требуется HTTPS. Необходимо выпустить SSL-сертификат одним из способов:

  • Let’s Encrypt - простой и бесплатный способ получить сертификат через https://certbot.eff.org/
  • Приобрести сертификат у любого из многочисленных Удостоверяющих Центров
  • Если по каким-то причинам нельзя получить доверенный сертификат - можно сгенерировать самоподписанный командой

Команда генерации самоподписанного сертификата:

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout nginx.key -out nginx.crt

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

CERT_DIR=/opt/bearpass/docker/nginx/ssl
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \
-keyout $CERT_DIR/nginx.key -out $CERT_DIR/nginx.crt
Пример вывода с пустым вводом:
..+...+.......+.....+......+.......+..+.............+......+..+....+......+...+.....
+.+.....+.+..+...............+.+.........+..+.+..+...+...+.+...+...+...+...........
+...+...+.......+......+.....+....+...+.....+.........+...+............+...+......+.
+...+..+...+......+.+...+......+.........+...+..+...+............++++++++++++++++++
+++++++++++++++++++++++++++*.......+....+..+...+......+...+.+..+....+........
+..........+.....+.+......+.....+.........+.+.....+.........+.+...+...+........
+..........
...........+.+..+.+..+++++++++++++++++++++++++++++++++++++++++++++*.+.....
+...............+..........+...+......+...+......+............+.........+......
+.............
..........+....+...+..+...+........................+.+..+.+.........+...........+.
+...+...+..+............+.........+..........+..+...+............+....+...
+..........
........+............+.....+......................+.............................
+......+...+...+...+......+......+...+......+.+............+........+....+...+.....
+.+.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Подключение сертификата (Docker)

Поместите сертификат и ключ в каталог /opt/bearpass/docker/nginx/ssl В файле /opt/bearpass/docker/nginx/conf/conf.d/app.conf выполните изменения:

  1. Удалите строку listen 443;

  2. Раскомментируйте строки SSL и укажите имена файлов сертифкатов:

listen 443 default_server ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;

Настройка редиректа

Для редиректа HTTP → HTTPS замените блок server с listen 80 :

server {
  listen 80;
  server_name bearpass.company.local;
  return 301 https://$server_name$request_uri;
}

пример итогового файла app.conf

upstream bp_fastcgi_backend {
  server app:9000;
}
server {
  server_name ${SITE_URL};
  listen 80;
  return 301 https://$server_name$request_uri;
}
server {
  server_name ${SITE_URL};
  listen 443 default_server ssl;
  set $BP_ROOT /var/www/bearpass;
  include /var/www/bearpass/nginx.conf;
  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;
  ssl_session_cache shared:le_nginx_SSL:10m;
  ssl_session_timeout 1440m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers off;
}

Настройка Nginx для SSL

Данной командой можно применить настройки для работы Bearpass с SSL описанные выше.

# предварительно можно создать резервную копию файла app.conf
cp /opt/bearpass/docker/nginx/conf/conf.d/app.conf /opt/bearpass/app.conf.bak
cat > /opt/bearpass/docker/nginx/conf/conf.d/app.conf <<EOF
upstream bp_fastcgi_backend {
  server app:9000;
}
server {
  server_name \${SITE_URL};
  listen 80;
  return 301 https://\$server_name\$request_uri;
}
server {
  server_name \${SITE_URL};
  listen 443 default_server ssl;
  set \$BP_ROOT /var/www/bearpass;
  include /var/www/bearpass/nginx.conf;
  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;
  ssl_session_cache shared:le_nginx_SSL:10m;
  ssl_session_timeout 1440m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers off;
}
EOF

Перезапустите контейнеры для применения изменений.

docker compose restart