Skip to content

Переменные окружения

Справочник для администратора стенда. При установке из дистрибутива .env генерируется мастером install.sh — руками его менять нужно редко.

Применение изменений

Все переменные читаются контейнерами на старте: после правки .env достаточно docker compose up -d (пересоздание контейнеров). Пересборка образов не требуется — frontend получает свою конфигурацию в рантайме.

Ядро

env
APP_NAME="Orbita ITSM"
APP_ENV=production
APP_DEBUG=false            # true только временно при диагностике
APP_KEY=base64:...         # docker run --rm php:8.4-cli php -r "echo 'base64:'.base64_encode(random_bytes(32)).PHP_EOL;"
APP_MODE=onpremise         # onpremise | saas
APP_DOMAIN=itsm.example.com
APP_URL=https://itsm.example.com
APP_TIMEZONE=Europe/Moscow

# Зафиксировать интерфейс на одном языке (пусто = все языки)
LOCALE_LOCK=ru

# Email для Let's Encrypt — продублировать в traefik/onpremise/traefik.yml
ACME_EMAIL=admin@example.com

APP_KEY

Ключ шифрования генерируется один раз и не меняется: на нём зашифрованы данные в БД. Потеря APP_KEY = потеря зашифрованных значений. Храните его в резервной копии отдельно от сервера.

База данных

env
DB_CONNECTION=pgsql
DB_HOST=database           # имя сервиса в compose — не менять
DB_PORT=5432
DB_DATABASE=orbita
DB_USERNAME=orbita
DB_PASSWORD=...            # используется и контейнером Postgres при инициализации

Кэш, очереди, сессии

env
CACHE_STORE=redis
QUEUE_CONNECTION=redis     # redis в проде; database — допустимый fallback
SESSION_DRIVER=redis
SESSION_LIFETIME=120
BROADCAST_CONNECTION=reverb

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=null

Файловое хранилище (SeaweedFS, S3 API)

env
FILESYSTEM_DISK=s3
MEDIA_DISK=s3
AWS_ACCESS_KEY_ID=orbita_admin
AWS_SECRET_ACCESS_KEY=...            # openssl rand -hex 20
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=orbita-bucket
AWS_ENDPOINT=http://seaweedfs:9000   # внутренний адрес
AWS_URL=https://itsm.example.com/s3/orbita-bucket   # публичный путь через Traefik
AWS_USE_PATH_STYLE_ENDPOINT=true

WebSocket (Reverb)

env
REVERB_APP_ID=orbita-app
REVERB_APP_KEY=...        # openssl rand -hex 12
REVERB_APP_SECRET=...     # openssl rand -hex 20
REVERB_HOST=0.0.0.0
REVERB_PORT=8080
REVERB_SCHEME=http        # всегда http — TLS терминирует Traefik

# Координаты WebSocket для браузера — отдаются фронтенду в рантайме
# через /api/app-config (хост не задаётся: браузер использует текущий)
REVERB_PUBLIC_PORT=443
REVERB_PUBLIC_SCHEME=https

Поиск (Meilisearch)

env
SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://meilisearch:7700
MEILISEARCH_KEY=...       # openssl rand -hex 16

Почта

env
MAIL_MAILER=log           # log = письма только в лог; smtp для боевой почты
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=...
MAIL_PASSWORD=...
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="noreply@itsm.example.com"
MAIL_FROM_NAME="${APP_NAME}"

SMTP/IMAP/Telegram настраиваются и из интерфейса приложения (Система → Настройки) — env задаёт значения по умолчанию уровня стенда.

Sanctum / сессии

env
SANCTUM_STATEFUL_DOMAINS=itsm.example.com
SESSION_DOMAIN=itsm.example.com

Несовпадение этих доменов с реальным — классическая причина «login не работает, хотя пароль верный» (cookie не устанавливается).

Отчёты

Выделенная очередь экспорта отчётов (контейнер queue-reports). Значения по умолчанию разумны; переопределяются при необходимости:

env
REPORTS_DISK=s3                      # куда складывать готовые файлы
REPORTS_RUN_TTL_DAYS=30              # срок хранения файлов
REPORTS_XLSX_MAX_ROWS=50000
REPORTS_PDF_MAX_ROWS=1000            # не поднимать без увеличения memory_limit воркера!
REPORTS_SYNC_MAX_ROWS=10000
REPORTS_MAIL_ATTACH_MAX_BYTES=10485760
REPORTS_MAIL_LINK_TTL=604800
# REPORTS_QUEUE_CONNECTION=redis_reports   # авто по QUEUE_CONNECTION
# REPORTS_QUEUE_NAME=reports
REPORTS_STUCK_DEADLINE_MINUTES=25    # порог, после которого зависший экспорт помечается failed

SaaS-режим

env
APP_MODE=saas
SAAS_DOMAIN=orbita.example.com       # база для поддоменов тенантов; нужен wildcard DNS

SSO / OAuth (опционально)

env
# Authentik
AUTHENTIK_CLIENT_ID=... / AUTHENTIK_CLIENT_SECRET=... / AUTHENTIK_BASE_URL=...
# Keycloak
KEYCLOAK_CLIENT_ID=... / KEYCLOAK_CLIENT_SECRET=... / KEYCLOAK_BASE_URL=... / KEYCLOAK_REALM=...
# Google / GitHub
GOOGLE_CLIENT_ID=... / GOOGLE_CLIENT_SECRET=... / GOOGLE_REDIRECT_URI=https://<домен>/api/auth/google/callback
GITHUB_CLIENT_ID=... / GITHUB_CLIENT_SECRET=... / GITHUB_REDIRECT_URI=https://<домен>/api/auth/github/callback

Провайдер появляется на странице логина, только если его ключи заполнены и он включён в настройках платформы (SuperAdmin Settings).

Логи

env
LOG_CHANNEL=stack
LOG_LEVEL=error            # временно debug при диагностике

Orbita ITSM — документация для системных администраторов