# Скопировать в .env. Файл в .gitignore: ключи в репозиторий не едут. BIND_HOST=127.0.0.1 POSTGRES_PORT=5432 # Development profile defaults to lct. Before production/offline deployment, # generate a unique URL-safe value: python -c "import secrets; print(secrets.token_urlsafe(32))" POSTGRES_PASSWORD= BACKEND_PORT=8000 # Per-backend PostgreSQL connection pool (cluster default budget: 60 total). DB_POOL_SIZE=20 DB_POOL_MAX_OVERFLOW=10 # Stable node identity; set a distinct value for each explicit backend node. BACKEND_NODE_ID=backend-01 FRONTEND_PORT=5173 TLS_PORT=5443 TLS_CERT_DIR=./.local/tls SIP_PORT=5060 SIPS_PORT=5061 SIP_WS_PORT=8088 RTP_PORT_START=10000 RTP_PORT_END=10099 SIP_TLS_DIR=./.local/sip-tls # Если пусто, Asterisk создаст стойкие случайные пароли в volume sipdata. SIP_6001_PASSWORD= SIP_6002_PASSWORD= SIP_6003_PASSWORD= SIP_6101_PASSWORD= SIP_6102_PASSWORD= # IP/DNS сервера, который WebRTC-клиенты видят в локальной сети. При запуске # только на той же машине оставьте 127.0.0.1; RTP-порты должны отображаться 1:1. SIP_EXTERNAL_MEDIA_ADDRESS=127.0.0.1 DATABASE_URL=postgresql+asyncpg://lct:lct@localhost:5432/lct # Два локальных OpenAI-совместимых сервера (например, llama-server). # Адреса должны быть loopback: OFFLINE=true не допускает внешний API. LLM_PROVIDER=local LLM_BASE_URL=http://127.0.0.1:18080/v1 # Адреса тех же процессов из backend-контейнера Docker Desktop (macOS/Windows). DOCKER_LLM_BASE_URL=http://host.docker.internal:18080/v1 LLM_API_KEY= LLM_MODEL_CALLER=Qwen3-1.7B LLM_CONTROL_BASE_URL=http://127.0.0.1:18081/v1 DOCKER_LLM_CONTROL_BASE_URL=http://host.docker.internal:18081/v1 LLM_MODEL_CONTROL=Vikhr-1B GRAMMAR_LLM_ENABLED=true DIALOGUE_MODEL_MODE=dialogue JUDGE_TEMPERATURE=0 # Голосовой контур MODELS_DIR=models STT_MODEL=whisper-small WHISPER_MODEL_PATH=models/whisper-small WHISPER_SERVER_URL=http://127.0.0.1:18082 VOICE_ENABLED=false RECORD_CALLS=true RECORDINGS_DIR=recordings BACKUP_INTERVAL_SECONDS=86400 BACKUP_RETRY_SECONDS=300 BACKUP_KEEP=14 ENDPOINTING_MS=600 OFFLINE=true SECURE_COOKIES=false # Необязательно для Compose: если пусто, стойкий случайный ключ создаётся в # volume securitydata. На управляемом стенде можно задать свой 48+ байтный ключ. # Compose generates this in its persistent securitydata volume if left blank. # If managed explicitly, use at least 32 random characters. SESSION_SECRET= # Необязательный AD/LDAP: требует LDAPS или StartTLS и проверку сертификата. # Для включения задайте ldap(s)://url, base DN, bind-учётку и явные группы. # Ключи LDAP_ROLE_GROUPS — DN групп, значения: admin/instructor/trainee. # LDAP_SERVICE_GROUPS связывает DN групп курсантов с названием службы ДДС. LDAP_ENABLED=false LDAP_URL= LDAP_BASE_DN= LDAP_BIND_DN= LDAP_BIND_PASSWORD= LDAP_USER_FILTER=(objectClass=person) LDAP_LOGIN_ATTRIBUTE=sAMAccountName LDAP_ROLE_GROUPS={} LDAP_SERVICE_GROUPS={} # Путь к доверенному внутреннему CA внутри контейнера или локального backend. LDAP_CA_CERTS_FILE= LDAP_CONNECT_TIMEOUT_SECONDS=5