Конфигурация
Переменные окружения и настройка сервисов
Вся конфигурация в одном .env файле рядом с docker-compose.yml. Копируем
пример и заполняем поля под своё развёртывание:
cp .env.example .envЭталонный .env.example опубликован в публичном репо quickstart
рядом с compose-файлом.
Секции
Файл сгруппирован по сервисам. Каждый сервис читает только свой префикс —
например, всё для asp-net бэкенда это BACKEND_*, для python-воркера это
WORKER_* и т.п. Общие значения (хост Postgres, брокеры Kafka, пароль Redis)
определены один раз в базовых секциях в начале файла и подставляются через
${VAR} в секциях сервисов ниже.
| Секция | Префикс | Что настраивает |
|---|---|---|
| Host ports | *_EXTERNAL_PORT | Хост-порты, на которых docker выставляет сервисы. Меняй если конфликтует. |
| Service URLs | *_INTERNAL_URL, *_PUBLIC_URL | Внутренние DNS-имена vs URL, видимые из браузера. |
| Postgres | POSTGRES_* | Креды БД. Один инстанс Postgres хостит несколько БД. |
| Redis | REDIS_* | Общий пароль. Сервисы используют разные logical DB. |
| Kafka | KAFKA_* | SASL-креды + bootstrap servers. |
| MinIO | MINIO_* | S3-совместимое хранилище для записей и счетов. |
| Keycloak | KEYCLOAK_* | Admin-пользователь, SMTP, OAuth, подтверждение email. |
| LiveKit | LIVEKIT_* | API-ключи, SIP-транк, WebRTC NAT-конфиг. |
| Backend | BACKEND_* | Настройки .NET API, ключи LLM, Stripe-планы. |
| Worker | WORKER_* | Python voice agent — ключи LLM/STT/TTS провайдеров. |
| Frontend | FRONTEND_CLIENT_*, FRONTEND_WIDGET_* | Runtime-конфиг для Angular-бандлов. |
| Lago | GETLAGO_* | Биллинговый движок: БД, Redis, Stripe, webhook URL. |
| Webhooks | WEBHOOKS_* | Приёмник входящих вебхуков (Lago, LiveKit). |
| Logging (opt-in) | LOGGING_* | Креды Fluent Bit / Benthos / Elasticsearch. |
Критичные настройки
Часть значений обязательно заполнить перед первым запуском — дефолты не подойдут:
| Переменная | Зачем |
|---|---|
| API-ключи для LLM / STT / TTS-провайдеров, которые вы включаете | Доступ к моделям для агентов (конкретные имена переменных зависят от вендора — смотрите .env.example) |
GETLAGO_MIGRATE_STRIPE_SECRET_KEY | Биллинг (если включён Stripe) |
KEYCLOAK_SMTP_* | Доставка email при регистрации / сбросе пароля |
LIVEKIT_API_KEY / LIVEKIT_API_SECRET | Подпись WebRTC — сгенерируйте случайные 32-char секреты |
GETLAGO_RSA_PRIVATE_KEY | Base64-кодированный RSA для подписи Lago-вебхуков |
Encryption keys (*_ENCRYPTION_*, SECRET_KEY_BASE) | В проде заменить дефолты на случайные строки |
В .env.example лежат рабочие placeholder'ы для локальной разработки, но
каждый секрет должен быть заменён для прода.
Профили
Часть сервисов — opt-in и не стартует без профиля:
# Стек логирования (Elasticsearch + Kibana + Fluent Bit + Benthos)
docker compose --profile logging up -d
# Аналитика (ClickHouse)
docker compose --profile analytics up -dМасштабирование отдельных сервисов
Чтобы запустить более одного инстанса session-bound сервиса (worker, livekit, bridge) — используйте реплики Docker Swarm или замените Compose на настоящий оркестратор (Kubernetes, Nomad, ECS). Все сервисы stateless, кроме backbone (Postgres, Redis, Kafka, MinIO, Keycloak).
Как подобрать размер под ожидаемую нагрузку — см. Требования.