2.8 KiB
Подключение TURN к SHiNE-серверу
Клиент звонков запрашивает ICE-конфиг у backend через WS-операцию GetCallIceConfig и использует её для RTCPeerConnection.
Репозиторный конфиг
В SHiNE-server/src/main/resources/application.properties можно хранить только публичные домены и пустые placeholders.
Пример:
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=<secret-on-server-only>; - в SHiNE-сервере задать такой же
call.ice.turn.sharedSecretилиcall.ice.turn.servers.N.sharedSecret; - сервер будет выдавать короткоживущие
turnUsername/turnPasswordс TTL.
Fallback-режим:
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 deploy/scripts/production_shineupme_server.sh
Если менялись только серверные TURN-настройки во внешнем override-конфиге, достаточно перезапустить соответствующий shine-server.service.
Проверка звонка
- Авторизоваться двумя клиентами.
- Запустить звонок.
- Проверить, что звонок устанавливается в сети, где прямой P2P затруднён.
- В диагностике звонков смотреть
CallDeliveryReport,pcIceConnectionState,routeLabel,configuredTurnHosts*,reachableTurnHosts*. - Если TURN недоступен, клиент должен откатиться к STUN-конфигу по умолчанию.