From 93e98f445b99b9da090c9544fdec3bbad2ee4e44 Mon Sep 17 00:00:00 2001 From: Max Ronzhin Date: Sat, 25 Jul 2026 21:58:12 +0300 Subject: [PATCH] .env.example: cover new deploy params, sane default profiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены плейсхолдеры для всех переменных, введённых хардненингом деплоя (NGINX_SERVER_NAMES/NGINX_CERT_NAME, LIVEKIT_USE_EXTERNAL_IP/LIVEKIT_NODE_IP, TURN_EXTERNAL_IP) — generic-значения (example.com/127.0.0.1/false), реальные домены/IP боевой инсталляции задаются в .env вручную и install.sh их не перезапишет. COMPOSE_PROFILES по умолчанию — media,monitoring (только для ручного `docker compose up` без install.sh): убирает ресурсоёмкие transcribe/llm из дефолтного набора, install.sh продолжает выставлять профили по выбранному пресету инсталлятора независимо от этого дефолта. Добавлены MEDIA_URL/VITE_API_URL/VITE_LIVEKIT_URL/NEXT_PUBLIC_LIVEKIT_URL — присутствуют в .env боевого сервера, но не читаются текущим кодом (задокументировано как есть, для полноты покрытия реальных ключей). --- .env.example | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 9480e95..7b6d84e 100644 --- a/.env.example +++ b/.env.example @@ -25,6 +25,9 @@ FRONTEND_URL=http://localhost:5173 AUTH_COOKIE_SECURE=false # --- LiveKit (dev placeholders, replace in real .env) --- +# Без дефолтов в docker-compose.yml (${VAR:?}) — пустое/отсутствующее +# значение остановит `docker compose up` с явной ошибкой, а не тихо +# подставит небезопасный дефолт. LIVEKIT_API_KEY=devkey LIVEKIT_API_SECRET=change-me-livekit-secret LIVEKIT_URL=ws://localhost:7880 @@ -34,6 +37,27 @@ LIVEKIT_PUBLIC_URL=ws://localhost:7880 # --- Coturn (dev placeholders) --- TURN_REALM=vidconf.local TURN_STATIC_AUTH_SECRET=change-me-turn-secret +# Внешний IP/домен сервера — coturn (network_mode: host) не может определить +# его сам. 127.0.0.1 годится только для локальной разработки (без внешних +# участников конференции); в проде — реальный внешний IP/домен. +# Рендерится в deploy/coturn/turnserver.conf из turnserver.conf.template +# скриптом deploy/render-templates.sh (вызывается install.sh). +TURN_EXTERNAL_IP=127.0.0.1 + +# --- Nginx: TLS (443) + список доменов — deploy/nginx/nginx.conf.template --- +# Домены, которые обслуживает nginx (через пробел, все — в server_name). +NGINX_SERVER_NAMES=example.com www.example.com +# Каталог сертификата в /etc/letsencrypt/live/ — обычно primary-домен +# certbot-лайнеджа (SAN может покрывать и остальные домены из списка выше). +NGINX_CERT_NAME=example.com + +# --- LiveKit: ICE/публичный адрес (deploy/livekit/livekit.yaml.template) --- +# use_external_ip=false + node_ip=127.0.0.1 — режим для локальной разработки +# (подробности — в самом шаблоне). В проде: true + реальный внешний IP/домен. +# Рендерится в deploy/livekit/livekit.yaml скриптом deploy/render-templates.sh +# (вызывается install.sh). +LIVEKIT_USE_EXTERNAL_IP=false +LIVEKIT_NODE_IP=127.0.0.1 # --- Транскрибация (профиль compose `transcribe`: egress + worker-transcriber) --- # Общий путь тома `recordings` (egress пишет .ogg-треки, worker-transcriber @@ -61,10 +85,16 @@ SMTP_TIMEOUT_S=30 # установке/обновлении — руками менять не нужно. VIDCONF_VERSION=0.0.1 -# --- Профили compose — install.sh выставляет по выбранному +# --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного +# `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг, +# без ресурсоёмких transcribe/llm (whisper, worker-transcriber, egress, +# llama.cpp) — сервисы остаются в docker-compose.yml, просто не в дефолтном +# наборе профилей. install.sh ПЕРЕЗАПИСЫВАЕТ это значение по выбранному # пресету инсталлятора (1/2 — media; 3 — +transcribe,llm; 4 — те же, -# WHISPER_MODEL/LLM_MODEL_* другого уровня; 5 — +transcribe-gpu,llm-gpu). --- -COMPOSE_PROFILES=media +# WHISPER_MODEL/LLM_MODEL_* другого уровня; 5 — +transcribe-gpu,llm-gpu; +# monitoring install.sh нигде не включает — поднимайте отдельно, см. +# docs/deploy/monitoring.md). --- +COMPOSE_PROFILES=media,monitoring # --- Настройки модулей инстанса под пресет --- # install.sh пишет их по выбранному пресету, backend @@ -103,3 +133,13 @@ LLM_TOKENIZER_URL=https://huggingface.co/Qwen/Qwen3.5-4B/resolve/main/tokenizer. # --- Мониторинг (профиль compose `monitoring`) --- GRAFANA_ADMIN_USER=admin GRAFANA_ADMIN_PASSWORD=change-me-grafana + +# --- Присутствуют в .env боевого сервера, но НЕ читаются текущим кодом +# (backend/frontend) — ни backend/core/config.py, ни frontend/src не +# ссылаются на них (проверено grep'ом при харденинге репозитория). Оставлены +# здесь только для полноты покрытия реальных ключей сервера; вычистить или +# начать использовать — по итогам Сессии 2 (bug hunt). --- +MEDIA_URL=http://localhost/media/ +VITE_API_URL=http://localhost +VITE_LIVEKIT_URL=ws://localhost:7880 +NEXT_PUBLIC_LIVEKIT_URL=ws://localhost:7880