Files
SHiNE-server/deploy/CONFIGURE_TURN_IN_SHINE.md

61 lines
2.8 KiB
Markdown
Raw Permalink 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.
# Подключение 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=<secret-on-server-only>`;
- в 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-конфигу по умолчанию.