# Настройка TURN-сервера TURN-хосты SHiNE должны использовать домены: - `turn1.shineup.me` - `turn2.shineup.me` - `turn3.shineup.me` IP не фиксировать в документах и скриптах как основной идентификатор. ## 1. DNS Создать или обновить DNS `A/AAAA` для нужного `turnX.shineup.me`. ## 2. Пакеты ```bash sudo apt update sudo apt install -y coturn caddy ``` Можно использовать вспомогательный скрипт на самом TURN-хосте: ```bash sudo bash deploy/scripts/setup_turn_coturn.sh --realm turn1.shineup.me --secret CHANGE_ME_LONG_RANDOM_SECRET ``` По умолчанию этот скрипт настраивает relay-диапазон `49000-53999`. Это стандарт SHiNE: 5000 UDP-портов под TURN relay. ## 3. coturn Секреты не хранить в git. Настраивать на сервере через `/etc/turnserver.conf` или отдельный secret/override. Минимальная схема: ```conf listening-port=3478 tls-listening-port=5349 fingerprint lt-cred-mech realm=turn1.shineup.me server-name=turn1.shineup.me use-auth-secret static-auth-secret= no-multicast-peers no-cli ``` Для SHiNE держать relay-range большим сразу, чтобы не упираться в `create_relay_ioa_sockets: no available ports`. Стандартный диапазон: ```conf min-port=49000 max-port=53999 ``` Включить сервис: ```bash sudo systemctl enable coturn sudo systemctl restart coturn ``` ## 4. Caddy Caddy можно использовать для HTTPS health/check endpoint и автоматического TLS на домене. Пример: ```caddyfile turn1.shineup.me { respond /health "ok" 200 } ``` Проверка: ```bash sudo caddy validate --config /etc/caddy/Caddyfile sudo systemctl restart caddy curl -I https://turn1.shineup.me/health ``` ## 5. Проверка портов ```bash sudo systemctl --no-pager --full status coturn caddy sudo ss -lntup | grep -E ':(3478|5349)' ``` ## 6. Важное - TURN credentials и shared secret не коммитить. - Если TURN домен переносится на другой VPS, менять DNS, а не код приложения. - После изменения TURN-адресов обновить серверные/UI настройки, где они используются. - Не сужать relay-range ниже 5000 UDP-портов без явной причины: для SHiNE это уже приводило к отказам звонков на проде `24 июля 2026`.