Files
vidconf/deploy/coturn/turnserver.conf.template
Max Ronzhin 826a0a391a
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
fix(coturn): verbose-логирование — иначе ALLOCATE/CreatePermission не видны в docker logs
Дефолтный simple-log в coturn не пишет построчно ALLOCATE/CreatePermission/
Refresh даже при реально работающем relay (найдено на релизе 0.0.22:
рабочий звонок через TURN, но grep -ci allocate по логам coturn = 0,
подтверждение пришлось брать из логов LiveKit). Добавлен флаг verbose
(умеренный режим, не Verbose/-V — тот слишком шумный). DEPLOYMENT.md
предупреждает, что проверка через grep -ci allocate надёжна только с
этим флагом.
2026-08-02 22:11:32 +03:00

64 lines
3.9 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
# TLS-порт объявлен всегда; реально слушать TLS coturn начинает только когда
# заданы cert/pkey ниже (блок TLS-CERT) — без них строка ничего не включает.
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
# Блок ниже рендерится ТОЛЬКО когда в .env задан TURN_TLS_HOST (см.
# render-templates.sh) — тогда coturn-certs-init (docker-compose.yml) уже
# скопировал fullchain/privkey из /etc/letsencrypt в volume coturn-certs.
# Без TURN_TLS_HOST маркеры и всё, что между ними, вырезаются целиком —
# в файле не остаётся ни следа cert/pkey, а не просто закомментированных строк.
# BEGIN-TLS-CERT
cert=/etc/coturn/certs/cert.pem
pkey=/etc/coturn/certs/key.pem
# END-TLS-CERT
log-file=stdout
simple-log
# Умеренная verbose-логика (`-v`/`verbose` в терминах coturn, НЕ
# `Verbose`/`-V` — тот режим сам coturn документирует как "very annoying",
# построчный дамп пакетов). Без этого флага дефолтный уровень логов не
# печатает ни строки на ALLOCATE/CreatePermission/Refresh, даже когда TURN
# реально обслуживает relay — проверено на релизе 0.0.22 (`docker logs
# vidconf-coturn-1 | grep -ci allocate` = 0 при живом рабочем звонке,
# подтверждение пришлось брать из логов LiveKit). С этим флагом coturn
# печатает по сессии: create/delete allocation, create permission, refresh —
# достаточно, чтобы дальше проверять относительно скромный вывод.
verbose
# Внешний IP сервера — обязателен для клиентов вне docker-сети
# (network_mode: host здесь не даёт coturn определить публичный IP
# автоматически). Для локальной разработки (без внешних участников)
# достаточно 127.0.0.1 (значение по умолчанию в .env.example); в проде —
# реальный внешний IP/домен сервера.
external-ip=${TURN_EXTERNAL_IP}