Навести порядок в deploy и документации проекта

This commit is contained in:
AidarKC
2026-07-20 17:28:35 +04:00
parent fa1f7358b7
commit d2f65b169c
99 changed files with 1035 additions and 1708 deletions
+60
View File
@@ -0,0 +1,60 @@
# Подключение 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-конфигу по умолчанию.