Skip to content

Развёртывание

Перед установкой ознакомьтесь с системными требованиями и подготовьте DNS, сетевые доступы и диски.

1. Получение комплекта поставки

Комплект содержит два каталога верхнего уровня:

text
l1-support
├── docker-compose.yaml
├── .env.example
├── config/
└── logs/

Также должны быть предоставлены точные версии образов backend и frontend. Для закрытого контура комплект должен включать архивы всех образов из l1-support/docker-compose.yaml, включая PostgreSQL, Redis, MinIO и MinIO Client.

2. Подготовка каталога

Распакуйте ZIP, затем скопируйте содержимое каталога l1-support в /opt/l1-support или укажите свой путь:

bash
unzip /path/to/l1-support-release.zip -d /tmp/l1-support-release
sudo install -d -o "$USER" -g "$(id -gn)" /opt/l1-support
cp -a /tmp/l1-support-release/l1-support/. /opt/l1-support/
cd /opt/l1-support

sudo install -d -o 10001 -g 10001 -m 0750 config logs
sudo chown -R 10001:10001 config logs

При первой установке создайте .env из шаблона и ограничьте доступ к нему:

bash
cp .env.example .env
chmod 600 .env

При обновлении существующий .env не заменяется шаблоном из новой поставки. Новые и изменённые параметры нужно переносить вручную после сравнения файлов.

3. Настройка окружения

Полный перечень параметров приведён в справочнике конфигурации. До первого запуска обязательно настройте следующие группы в .env.

Версии образов

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

dotenv
BACKEND_IMAGE=registry.legionsecurity.ru/l1-support/l1-server
BACKEND_VERSION=v1.2.3 (получить у поставщика)
FRONTEND_IMAGE=registry.legionsecurity.ru/l1-support/l1-client
FRONTEND_VERSION=v1.2.3 (получить у поставщика)

Тег latest в промышленной установке не используется.

Публичные адреса

Для временного запуска без reverse proxy:

dotenv
FRONTEND_PUBLIC_URL=http://192.168.1.10:9090
S3_PUBLIC_ENDPOINT=http://192.168.1.10:9104

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

dotenv
FRONTEND_PUBLIC_URL=https://l1.example.org
S3_PUBLIC_ENDPOINT=https://s3.l1.example.org

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

Секреты

Сгенерируйте независимые значения для каждого секрета:

bash
printf 'JWT_SECRET=%s\n' "$(openssl rand -hex 32)"
printf 'APP_SECRETS_KEY=%s\n' "$(openssl rand -base64 32)"
printf 'DB_PASSWORD=%s\n' "$(openssl rand -hex 24)"
printf 'REDIS_PASSWORD=%s\n' "$(openssl rand -hex 24)"
printf 'MINIO_ROOT_PASSWORD=%s\n' "$(openssl rand -hex 24)"
printf 'S3_SECRET_KEY=%s\n' "$(openssl rand -hex 24)"

Перенесите значения в .env. Сохраните .env и APP_SECRETS_KEY в защищённом хранилище: потеря ключа сделает ранее зашифрованные настройки интеграций недоступными.

Корпоративный DNS

Если используется LDAP/AD:

dotenv
DOCKER_DNS_SERVER=192.168.20.100
DOCKER_DNS_SEARCH=corp.example.org

Указанный DNS-сервер и контроллеры домена должны быть доступны с Docker-сервера и из контейнера backend.

Проверка конфигурации

bash
grep -n 'CHANGE_ME' .env
ENVFILE=.env docker compose --env-file .env config --quiet

Строки в выводе grep означают, что соответствующие параметры необходимо заполнить. Команда docker compose config не должна возвращать ошибок.

4. Загрузка образов

Сервер с доступом к Container Registry

Если на сервере ещё нет действующих учётных данных, выполните авторизацию в Container Registry:

Учётные данные для доступа можно получить у поставщика.

bash
docker login registry.legionsecurity.ru

Загрузите образы приложения:

bash
docker compose pull

Повторная авторизация перед каждым запуском не требуется. Выполните docker login повторно, только если текущие учётные данные перестали действовать.

Закрытый контур

Передайте полученные от поставщика архивы образов на сервер разрешённым способом и загрузите каждый архив:

bash
for archive in /path/to/images/*.tar; do
  docker load --input "$archive"
done

Убедитесь, что загружены все образы и их теги совпадают со значениями в .env и docker-compose.yaml:

bash
docker image ls
docker compose config --images

В закрытом контуре не выполняйте docker compose pull. Если хотя бы один необходимый образ отсутствует, запуск завершится попыткой обращения к registry или ошибкой получения образа.

5. Запуск

bash
docker compose up -d
docker compose ps -a

Ожидаемое состояние:

СервисСтатус
postgres, redis, minio, backend, frontendUp и healthy.
migrate, minio-mcExited (0).

migrate и minio-mc являются одноразовыми сервисами. Их завершение с кодом 0 является штатным.

Если запуск не завершился успешно:

bash
docker compose ps -a
docker compose logs --tail=200 migrate minio-mc backend

После исправления причины повторите docker compose up -d.

6. Проверка на Docker-сервере

bash
curl -f http://127.0.0.1:9100/api/v1/system/bootstrap/status
curl -fI http://127.0.0.1:9090
curl -f http://127.0.0.1:9104/minio/health/live

Если локальные проверки проходят, а система недоступна с рабочего места, проверьте DNS, межсетевой экран, маршрутизацию и reverse proxy.

7. Публикация через HTTPS

Опубликуйте два адреса:

Публичный адресАдрес назначения
https://l1.example.orghttp://127.0.0.1:9090
https://s3.l1.example.orghttp://127.0.0.1:9104

Reverse proxy должен:

  • использовать действующие TLS-сертификаты;
  • передавать Host, X-Forwarded-For и X-Forwarded-Proto;
  • разрешать загрузку файлов размером не меньше FILES_MAX_SIZE_BYTES;
  • поддерживать долгоживущие соединения приложения;
  • не публиковать порты 9100, 9101, 9102 и 9103.

Публичные адреса должны в точности совпадать со значениями FRONTEND_PUBLIC_URL и S3_PUBLIC_ENDPOINT.

8. Первоначальная настройка

  1. Откройте FRONTEND_PUBLIC_URL в браузере.
  2. Создайте первого администратора на начальной странице.
  3. Войдите в систему.
  4. Загрузите и скачайте тестовый файл.
  5. Настройте почту и используемые провайдеры аутентификации.
  6. Проверьте внешнее резервное копирование PostgreSQL и MinIO.

Дальнейшие процедуры приведены в руководстве по эксплуатации.

Логотип ЛЕГИОНЛЕГИОН