Тема
Развёртывание
Перед установкой ознакомьтесь с системными требованиями и подготовьте 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.orgS3_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, frontend | Up и healthy. |
migrate, minio-mc | Exited (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.org | http://127.0.0.1:9090 |
https://s3.l1.example.org | http://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. Первоначальная настройка
- Откройте
FRONTEND_PUBLIC_URLв браузере. - Создайте первого администратора на начальной странице.
- Войдите в систему.
- Загрузите и скачайте тестовый файл.
- Настройте почту и используемые провайдеры аутентификации.
- Проверьте внешнее резервное копирование PostgreSQL и MinIO.
Дальнейшие процедуры приведены в руководстве по эксплуатации.