Skip to content

Конфигурация

Основная конфигурация развёртывания находится в файле .env. Создавайте его только из .env.example той же версии поставки.

Правила работы с .env

  • Используйте разные случайные значения для всех паролей и ключей.
  • Не меняйте APP_SECRETS_KEY после первоначальной настройки без отдельной процедуры ротации.
  • Не используйте тег образа latest в промышленной среде.
  • Перед запуском проверяйте конфигурацию командой ENVFILE=.env docker compose --env-file .env config --quiet.
  • При обновлении сравнивайте новый .env.example с действующим .env; не заменяйте рабочий файл целиком.

Приложение

ПеременнаяНазначениеПример
BACKEND_IMAGEОбраз серверной части.registry.legionsecurity.ru/l1-support/l1-server
BACKEND_VERSIONТочная версия серверной части.v1.8.0
FRONTEND_IMAGEОбраз клиентской части.registry.legionsecurity.ru/l1-support/l1-client
FRONTEND_VERSIONТочная версия клиентской части.v1.8.0
SERVICE_NAMEИмя сервиса в журналах.l1-support
APP_ENVРежим работы.prod
SERVER_ADDRESSАдрес прослушивания внутри контейнера.0.0.0.0
SERVER_PORTВнутренний порт backend.3000
SERVER_HOST_PORTДиагностический порт backend на localhost.9100
FRONTEND_BIND_ADDRESSАдрес публикации frontend на хосте.127.0.0.1
FRONTEND_HOST_PORTПорт веб-интерфейса на хосте.9090
FRONTEND_PUBLIC_URLПубличный адрес веб-интерфейса.https://l1.example.org
DOCKER_DNS_SERVERКорпоративный DNS-сервер для контейнера backend. Используется для LDAP/AD192.168.20.100
DOCKER_DNS_SEARCHПоисковый домен DNS.corp.example.org

PostgreSQL

ПеременнаяНазначениеПример
DB_TYPEТип базы данных.postgres
DB_HOSTИмя сервиса PostgreSQL.postgres
DB_PORTВнутренний порт PostgreSQL.5432
DB_USERПользователь базы данных.l1_support
DB_PASSWORDПароль пользователя.<случайный_пароль>
DB_NAMEИмя базы данных.l1_support
DB_HOST_PORTДиагностический порт PostgreSQL на localhost.9101

Redis

ПеременнаяНазначениеПример
REDIS_HOSTИмя сервиса Redis.redis
REDIS_PORTВнутренний порт Redis.6379
REDIS_HOST_PORTДиагностический порт Redis на localhost.9102
REDIS_PASSWORDПароль Redis.<случайный_пароль>
REDIS_DBНомер логической базы.0
REDIS_MAX_RETRIESЧисло повторов подключения.3
REDIS_DIAL_TIMEOUTТайм-аут подключения.5s
REDIS_READ_TIMEOUTТайм-аут чтения.3s
REDIS_WRITE_TIMEOUTТайм-аут записи.3s

MinIO и S3

ПеременнаяНазначениеПример
MINIO_ROOT_USERАдминистратор MinIO.l1-minio-admin
MINIO_ROOT_PASSWORDПароль администратора MinIO.<случайный_пароль>
MINIO_API_BIND_ADDRESSАдрес публикации S3 API на хосте.127.0.0.1
MINIO_API_HOST_PORTПорт S3 API на хосте.9104
MINIO_CONSOLE_HOST_PORTПорт консоли MinIO на localhost.9103
S3_BUCKETИмя приватного бакета.l1-files
S3_REGIONРегион S3.us-east-1
S3_ACCESS_KEYТехнический пользователь backend.l1-app
S3_SECRET_KEYПароль технического пользователя.<случайный_пароль>
S3_ENDPOINTВнутренний адрес MinIO для backend.http://minio:9000
S3_PUBLIC_ENDPOINTБазовый адрес S3 API в подписанных URL.https://s3.l1.example.org
S3_USE_PATH_STYLEИспользование path-style адресов S3.true

В штатной поставке используется MinIO из docker-compose.yaml:

  • backend обращается к хранилищу по внутреннему адресу S3_ENDPOINT; для встроенного MinIO оставьте http://minio:9000;
  • backend использует S3_PUBLIC_ENDPOINT при формировании временных подписанных URL, по которым браузеры напрямую загружают и скачивают файлы;
  • S3_PUBLIC_ENDPOINT указывается без имени бакета, пути к объекту и служебного пути /minio/health/live, например https://s3.l1.example.org, https://l1.example.org:9443 или http://192.168.1.10:9104;
  • S3_USE_PATH_STYLE=true требуется для встроенного MinIO.

Если FRONTEND_PUBLIC_URL использует HTTPS, S3_PUBLIC_ENDPOINT также должен использовать HTTPS, иначе браузер может заблокировать файловые запросы как mixed content. При одном DNS-имени задайте разные порты, например https://l1.example.org для frontend и https://l1.example.org:9443 для S3. Нельзя указывать одинаковый адрес для frontend и S3: оба сервиса используют корневые URL и не разделяются дополнительным путём.

При локальном reverse proxy оставьте FRONTEND_BIND_ADDRESS=127.0.0.1 и MINIO_API_BIND_ADDRESS=127.0.0.1. Значение 0.0.0.0 используйте только для временного прямого HTTP-доступа или когда доступ к портам отдельно ограничен внешним межсетевым экраном.

Сервис minio-mc при запуске автоматически создаёт приватный бакет S3_BUCKET, технического пользователя S3_ACCESS_KEY и назначает ему политику readwrite. Backend работает с хранилищем под этим техническим пользователем. Пара MINIO_ROOT_USER/MINIO_ROOT_PASSWORD используется для администрирования MinIO и первоначальной настройки; не используйте её вместо S3_ACCESS_KEY/S3_SECRET_KEY.

S3_ENDPOINT и S3_PUBLIC_ENDPOINT не взаимозаменяемы. Публичный адрес должен быть доступен с каждого рабочего места пользователя. Подключение внешнего S3-совместимого хранилища требует отдельной конфигурации Compose и не входит в штатную схему развёртывания.

Аутентификация и шифрование

ПеременнаяНазначениеПример
JWT_SECRETСекрет подписи JWT.<случайный_секрет>
ACCESS_TOKEN_TTLВремя жизни access token.5m
REFRESH_TOKEN_TTLВремя жизни refresh token.720h
PASSWORD_RESET_TOKEN_TTLВремя жизни токена восстановления пароля.30m
APP_SECRETS_KEYBase64-ключ шифрования настроек.результат openssl rand -base64 32
APP_TOTP_ISSUERНазвание в приложении-аутентификаторе.Л1 Первая Линия Техподдержки

Значение APP_SECRETS_KEY должно декодироваться в 32 байта. Его потеря или несогласованная замена сделает сохранённые зашифрованные пароли интеграций недоступными.

Файловый модуль

ПеременнаяНазначениеПример
FILES_CONFIG_PATHПуть к конфигурации файлов внутри контейнера.config/files.json
FILES_CONFIG_RELOAD_INTERVALИнтервал перечитывания конфигурации.30s
FILES_MAX_SIZE_BYTESМаксимальный размер одного файла.500mb
FILES_MULTIPART_THRESHOLD_BYTESПорог multipart-загрузки.50mb
FILES_MULTIPART_PART_SIZE_BYTESРазмер части multipart-загрузки.16mb
FILES_UPLOAD_URL_TTL_SECONDSВремя жизни ссылки на загрузку.3600
FILES_DOWNLOAD_URL_TTL_SECONDSВремя жизни ссылки на скачивание.300
FILES_CLEANUP_INTERVALИнтервал очистки незавершённых загрузок.20m
FILES_CLEANUP_BATCH_SIZEРазмер пачки при очистке.100

Ограничение размера запроса на reverse proxy должно быть не меньше FILES_MAX_SIZE_BYTES.

Интеграции и фоновые обработчики

ПеременнаяНазначениеПример
APPEARANCE_CONFIG_PATHКонфигурация внешнего вида.config/appearance.json
NOTIFICATION_TEMPLATES_CONFIG_PATHШаблоны уведомлений.config/notification_templates.json
NOTIFICATION_TEMPLATES_RELOAD_INTERVALИнтервал перечитывания шаблонов.30s
DADATA_DEFAULT_TOKENТокен DaData.пусто
DADATA_BASE_URLАдрес API DaData.https://suggestions.dadata.ru
DADATA_TIMEOUTТайм-аут обращения к DaData.5s
DADATA_CONFIG_PATHКонфигурация DaData.config/dadata.json
DADATA_CONFIG_RELOAD_INTERVALИнтервал перечитывания конфигурации.30s
EMAIL_WORKERS_ENABLEDОбработка электронной почты.true
EMAIL_IMAP_POLL_INTERVALИнтервал проверки входящей почты.30s
EMAIL_OUTBOUND_POLL_INTERVALИнтервал отправки исходящей почты.30s
EMAIL_WORKER_BATCH_SIZEРазмер пачки почтовых сообщений.100
EMAIL_LOCK_TIMEOUTВремя блокировки почтовой задачи.15m
SLA_WORKER_ENABLEDОбработка SLA.true
SLA_POLL_INTERVALИнтервал обработки SLA.30s
SLA_WORKER_BATCH_SIZEРазмер пачки SLA-записей.100
REPORTS_EXPORT_RETENTIONСрок хранения выгруженных отчётов.720h
REPORTS_EXPORT_MAX_PER_USERМаксимум выгрузок на пользователя.50
REPORTS_EXPORT_CLEANUP_INTERVALИнтервал очистки истории выгрузок.1h
REPORTS_EXPORT_CLEANUP_BATCH_SIZEРазмер пачки при очистке выгрузок.100

Параметры конкретных LDAP, IMAP и SMTP-подключений задаются в интерфейсе системы. До их включения обеспечьте сетевые доступы, перечисленные в системных требованиях.

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