Appearance
Переменные окружения
Справочник для администратора стенда. При установке из дистрибутива .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.comAPP_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=trueWebSocket (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 # порог, после которого зависший экспорт помечается failedSaaS-режим
env
APP_MODE=saas
SAAS_DOMAIN=orbita.example.com # база для поддоменов тенантов; нужен wildcard DNSSSO / 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 при диагностике