Files
vidconf/deploy/coturn/turnserver.conf.template
Max Ronzhin 79003eb56c deploy: harden nginx/coturn/livekit configs (TLS on 443, templates, required secrets)
Переносит рабочие правки продакшен-сервера в репозиторий воспроизводимо:

- nginx: HTTPS-блок на 443 (TLS1.2/1.3, http->https redirect, ACME
  webroot, X-Forwarded-Proto) добавлен в nginx.conf.template. Список
  доменов и имя каталога сертификата — параметры (NGINX_SERVER_NAMES,
  NGINX_CERT_NAME), не хардкод. Рендерится штатным entrypoint'ом образа
  nginx (envsubst-on-templates).
- Самоподписанный dev-сертификат генерируется на старте контейнера
  (docker-entrypoint-certs.sh), если реальный Let's Encrypt не смонтирован
  — иначе `docker compose up` без профиля ломался бы локально без
  реальных сертификатов.
- healthcheck nginx переключён на /healthz (без TLS-редиректа), иначе
  http://127.0.0.1:80/ после добавления 443-редиректа всегда unhealthy.
- coturn/turnserver.conf и livekit/livekit.yaml переведены в *.template —
  оба образа не читают env для статических полей (static-auth-secret,
  use_external_ip/node_ip, webhook.api_key), поэтому реальные файлы
  генерируются перед стартом стека скриптом deploy/render-templates.sh
  (вызывается install.sh). Секреты/IP — только в .env, не в git.
- docker-compose.yml: LIVEKIT_API_KEY/SECRET везде (backend, livekit,
  egress) через ${VAR:?} без небезопасных дефолтов; порт 443 + монтирование
  /etc/letsencrypt (ro) и certbot-webroot у nginx; build-args
  VITE_LIVEKIT_URL/NEXT_PUBLIC_LIVEKIT_URL для frontend (сейчас не
  используются кодом, оставлены про запас).
2026-07-25 21:57:46 +03:00

48 lines
2.5 KiB
Plaintext
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.
# Конфигурация coturn. Верифицировано по официальной документации
# (github.com/coturn/coturn/wiki/turnserver, docker/coturn/README.md).
# Запускается с network_mode: host в docker-compose.yml (рекомендация coturn
# для широких диапазонов UDP relay-портов).
#
# coturn подставляет $(VAR) при старте ТОЛЬКО когда вызывается через
# CLI-флаги entrypoint'а образа — при передаче файла конфигурации (как
# здесь, `-c /etc/coturn/turnserver.conf`) подстановка не работает. Поэтому
# реальные static-auth-secret/realm/external-ip рендерятся из этого шаблона
# в turnserver.conf скриптом deploy/render-templates.sh (envsubst) ПЕРЕД
# `docker compose up`. Не редактируйте turnserver.conf напрямую — правки
# затрутся при следующем рендере.
listening-port=3478
# Установить 5349 в проде для TURN over TLS, если будут смонтированы
# реальные TLS-сертификаты (см. закомментированные cert/pkey ниже).
tls-listening-port=5349
# Диапазон relay-портов для TURN-аллокаций.
min-port=49160
max-port=49200
# --- Long-term credential mechanism через shared secret (TURN REST API) ---
use-auth-secret
static-auth-secret=${TURN_STATIC_AUTH_SECRET}
realm=${TURN_REALM}
# Обязателен для WebRTC-клиентов (добавляет STUN FINGERPRINT атрибут).
fingerprint
# Без CLI/telnet admin-интерфейса в этой поставке.
no-cli
# Раскомментировать и смонтировать реальные сертификаты, чтобы включить
# TURN over TLS на 443:
# cert=/etc/coturn/certs/cert.pem
# pkey=/etc/coturn/certs/key.pem
log-file=stdout
simple-log
# Внешний IP сервера — обязателен для клиентов вне docker-сети
# (network_mode: host здесь не даёт coturn определить публичный IP
# автоматически). Для локальной разработки (без внешних участников)
# достаточно 127.0.0.1 (значение по умолчанию в .env.example); в проде —
# реальный внешний IP/домен сервера.
external-ip=${TURN_EXTERNAL_IP}