Files
SHiNE-server/deploy/CONFIGURE_TURN_IN_SHINE.md

2.8 KiB
Raw Permalink Blame History

Подключение 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.

Проверка звонка

  1. Авторизоваться двумя клиентами.
  2. Запустить звонок.
  3. Проверить, что звонок устанавливается в сети, где прямой P2P затруднён.
  4. В диагностике звонков смотреть CallDeliveryReport, pcIceConnectionState, routeLabel, configuredTurnHosts*, reachableTurnHosts*.
  5. Если TURN недоступен, клиент должен откатиться к STUN-конфигу по умолчанию.