# Подключение TURN к SHiNE-серверу Клиент звонков запрашивает ICE-конфиг у backend через WS-операцию `GetCallIceConfig` и использует её для `RTCPeerConnection`. ## Репозиторный конфиг В `SHiNE-server/src/main/resources/application.properties` можно хранить только публичные домены и пустые placeholders. Пример: ```properties call.ice.stun.urls=stun:stun.l.google.com:19302 call.ice.turn.urls=turn:turn1.shineup.me:3478?transport=udp,turn:turn1.shineup.me:3478?transport=tcp call.ice.turn.ttlSec=600 call.ice.turn.userPrefix=shine call.ice.turn.sharedSecret= call.ice.turn.servers.1.id=turn1 call.ice.turn.servers.1.urls=turn:turn1.shineup.me:3478?transport=udp,turn:turn1.shineup.me:3478?transport=tcp call.ice.turn.servers.1.sharedSecret= ``` ## Production override Реальные `sharedSecret`, статические логины/пароли и другие секреты задавать только на сервере через внешний `application.properties` или override-конфиг. В git их не хранить. Рекомендуемый режим: - на coturn включить `use-auth-secret`; - в coturn задать `static-auth-secret=`; - в SHiNE-сервере задать такой же `call.ice.turn.sharedSecret` или `call.ice.turn.servers.N.sharedSecret`; - сервер будет выдавать короткоживущие `turnUsername` / `turnPassword` с TTL. Fallback-режим: ```properties call.ice.turn.sharedSecret= call.ice.turn.username=turn_user call.ice.turn.password=turn_password ``` Fallback тоже не должен хранить реальные credentials в git. ## Деплой после изменения TURN-настроек Для production сначала обновить бэкап в `deploy/backup/archive/`, затем выполнить нужный server deploy script: ```bash bash deploy/scripts/production_shineupme_server.sh ``` Если менялись только серверные TURN-настройки во внешнем override-конфиге, достаточно перезапустить соответствующий `shine-server.service`. ## Проверка звонка 1. Авторизоваться двумя клиентами. 2. Запустить звонок. 3. Проверить, что звонок устанавливается в сети, где прямой P2P затруднён. 4. В диагностике звонков смотреть `CallDeliveryReport`, `pcIceConnectionState`, `routeLabel`, `configuredTurnHosts*`, `reachableTurnHosts*`. 5. Если TURN недоступен, клиент должен откатиться к STUN-конфигу по умолчанию.