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 (сейчас не используются кодом, оставлены про запас).
This commit is contained in:
47
deploy/coturn/turnserver.conf.template
Normal file
47
deploy/coturn/turnserver.conf.template
Normal file
@@ -0,0 +1,47 @@
|
||||
# Конфигурация 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}
|
||||
Reference in New Issue
Block a user