Files
Deal/deploy/.env.prod.example
T
Rustam Khalimov 27c7831910
ci / build-test (push) Canceled after 0s
Deal — единая кодовая база
SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/
Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue,
контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер),
Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог).

Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0,
тесты 1340/130/52/38/9 зелёные.
2026-09-11 23:56:47 +03:00

63 lines
3.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# deploy/.env.prod.example — шаблон production-окружения «Дейла» (compose.prod.yml, Ruling 9; Task 14).
#
# Использование:
# cp deploy/.env.prod.example deploy/.env.prod
# # заполнить ВСЕ секреты (пустое значение = config упадёт с подсказкой — fail-fast, Ruling 9)
# docker compose --env-file deploy/.env.prod -f deploy/compose.prod.yml config # проверка
# docker compose --env-file deploy/.env.prod -f deploy/compose.prod.yml up -d --build
# # + наблюдаемость (профиль): ... up -d --build --profile observability
#
# Пароли/токены/ключи НЕ имеют значений-дефолтов (генерация: openssl rand -base64 32 и т.п.).
# DEAL_OPERATOR_* можно оставить пустыми: оператор тогда НЕ создаётся при старте (Ruling 1) —
# заведёте позже env + рестартом core.
# ── Обязательные секреты (пусто → docker compose config: ошибка с именем переменной) ──
# Пароль Postgres (пользователь/БД фиксированы: deal/deal).
DEAL_PG_PASSWORD=
# Ключ AES-256-GCM шифрования секретов настроек core (32 байта, base64): openssl rand -base64 32.
# Альтернатива — файл data/encryption.key на volume deal_api_data (см. техдок §13.4a).
DEAL_ENCRYPTION_KEY=
# Общий service-token процессов (gRPC-metadata; один на весь стек).
DEAL_SERVICE_TOKEN=
# Ключ AES-256-GCM файлов сессий telegram-service (32 байта, base64): openssl rand -base64 32.
DEAL_TELEGRAM_SESSION_KEY=
# Креды MinIO (root; S3 API и консоль). Бакет deal-files создаётся лениво (Ruling 4).
MINIO_ROOT_USER=
MINIO_ROOT_PASSWORD=
# Origin фронта для CORS/Origin-проверки core (Ruling 9/10). При статике за caddy тот же домен:
DEAL_ALLOWED_ORIGINS=https://deal.example
# ── Оператор (Ruling 1): пусто = bootstrap пропущен (стартовый warning), заводится позже env+рестарт ──
DEAL_OPERATOR_LOGIN=
DEAL_OPERATOR_PASSWORD=
# ── mTLS внутреннего gRPC (Ruling 6; Task 13/14) ──
# 0/пусто — plaintext + service-token внутри изолированной сети; 1 — TLS + клиентский сертификат.
# Сертификаты: запустите scripts/mtls-certs.sh (deploy/certs/*) и задайте пароль PFX:
DEAL_MTLS_ENABLED=0
DEAL_MTLS_CERT_PASSWORD=
# При DEAL_MTLS_ENABLED=1 схемы внутренних endpoint'ов обязаны стать https:// (иначе рукопожатие
# падает — код схему сам не переключает, см. task-13-report). Порт/имя менять не нужно:
DEAL_ML_ENDPOINT=http://ml-service:5103
DEAL_AI_ENDPOINT=http://ai-service:5102
DEAL_TELEGRAM_ENDPOINT=http://telegram-service:5101
DEAL_CORE_INGRESS=http://core:5082
# ── Необязательные (дефолты в compose.prod.yml) ──
# Каталог сертификатов mTLS на хосте (монтируется в /etc/deal/certs контейнеров):
# DEAL_CERTS_DIR=./certs
# Дефолт-бюджет ИИ нового тенанта (токенов/месяц; константа кода — 10 000 000):
# DEAL_DEFAULT_AI_BUDGET=
# ── Observability-профиль (только при --profile observability; см. compose.prod.yml) ──
# Пароль admin'а Grafana. Задать ПЕРЕД подъёмом профиля (пусто — grafana не получит пароль):
DEAL_GRAFANA_ADMIN_PASSWORD=
# DEAL_GRAFANA_ADMIN_USER=admin