Files
SHiNE-server/deploy/SETUP_TURN_SERVER.md
T

98 lines
2.7 KiB
Markdown

# Настройка TURN-сервера
TURN-хосты SHiNE должны использовать домены:
- `turn1.shineup.me`
- `turn2.shineup.me`
- `turn3.shineup.me`
IP не фиксировать в документах и скриптах как основной идентификатор.
## 1. DNS
Создать или обновить DNS `A/AAAA` для нужного `turnX.shineup.me`.
## 2. Пакеты
```bash
sudo apt update
sudo apt install -y coturn caddy
```
Можно использовать вспомогательный скрипт на самом TURN-хосте:
```bash
sudo bash deploy/scripts/setup_turn_coturn.sh --realm turn1.shineup.me --secret CHANGE_ME_LONG_RANDOM_SECRET
```
По умолчанию этот скрипт настраивает relay-диапазон `49000-53999`.
Это стандарт SHiNE: 5000 UDP-портов под TURN relay.
## 3. coturn
Секреты не хранить в git. Настраивать на сервере через `/etc/turnserver.conf` или отдельный secret/override.
Минимальная схема:
```conf
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
realm=turn1.shineup.me
server-name=turn1.shineup.me
use-auth-secret
static-auth-secret=<secret-on-server-only>
no-multicast-peers
no-cli
```
Для SHiNE держать relay-range большим сразу, чтобы не упираться в `create_relay_ioa_sockets: no available ports`.
Стандартный диапазон:
```conf
min-port=49000
max-port=53999
```
Включить сервис:
```bash
sudo systemctl enable coturn
sudo systemctl restart coturn
```
## 4. Caddy
Caddy можно использовать для HTTPS health/check endpoint и автоматического TLS на домене.
Пример:
```caddyfile
turn1.shineup.me {
respond /health "ok" 200
}
```
Проверка:
```bash
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl restart caddy
curl -I https://turn1.shineup.me/health
```
## 5. Проверка портов
```bash
sudo systemctl --no-pager --full status coturn caddy
sudo ss -lntup | grep -E ':(3478|5349)'
```
## 6. Важное
- TURN credentials и shared secret не коммитить.
- Если TURN домен переносится на другой VPS, менять DNS, а не код приложения.
- После изменения TURN-адресов обновить серверные/UI настройки, где они используются.
- Не сужать relay-range ниже 5000 UDP-портов без явной причины: для SHiNE это уже приводило к отказам звонков на проде `24 июля 2026`.