SHA256
feat(ui): зелёная кнопка ответа и автообновление PWA
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Установка TURN сервера (coturn)
|
||||
|
||||
## 1. Что нужно
|
||||
- Сервер с публичным IP (в примере: `37.214.58.208`).
|
||||
- Доступ `root` по SSH.
|
||||
- Открытые порты в firewall:
|
||||
- `3478/tcp`
|
||||
- `3478/udp`
|
||||
- диапазон relay-портов, например `49160-49200/udp`
|
||||
|
||||
## 2. Быстрая установка (рекомендуется)
|
||||
В проекте уже есть готовый скрипт:
|
||||
|
||||
```bash
|
||||
sudo bash scripts/setup_turn_coturn.sh \
|
||||
--secret "CHANGE_ME_LONG_RANDOM_SECRET" \
|
||||
--realm "shineup.me"
|
||||
```
|
||||
|
||||
Что делает скрипт:
|
||||
- ставит `coturn`;
|
||||
- включает режим `use-auth-secret` (временные логин/пароль);
|
||||
- пишет `/etc/turnserver.conf`;
|
||||
- включает и перезапускает сервис `coturn`.
|
||||
|
||||
## 3. Проверка
|
||||
Проверить статус:
|
||||
|
||||
```bash
|
||||
sudo systemctl status coturn --no-pager
|
||||
```
|
||||
|
||||
Проверить, что порт слушается:
|
||||
|
||||
```bash
|
||||
sudo ss -lntup | grep 3478
|
||||
```
|
||||
|
||||
## 4. Ручная установка (если без скрипта)
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y coturn
|
||||
```
|
||||
|
||||
Пример `/etc/turnserver.conf`:
|
||||
|
||||
```conf
|
||||
listening-port=3478
|
||||
fingerprint
|
||||
lt-cred-mech
|
||||
use-auth-secret
|
||||
static-auth-secret=CHANGE_ME_LONG_RANDOM_SECRET
|
||||
realm=shineup.me
|
||||
external-ip=37.214.58.208
|
||||
listening-ip=0.0.0.0
|
||||
relay-ip=37.214.58.208
|
||||
min-port=49160
|
||||
max-port=49200
|
||||
no-cli
|
||||
simple-log
|
||||
```
|
||||
|
||||
В `/etc/default/coturn`:
|
||||
|
||||
```conf
|
||||
TURNSERVER_ENABLED=1
|
||||
```
|
||||
|
||||
Запуск:
|
||||
|
||||
```bash
|
||||
sudo systemctl enable coturn
|
||||
sudo systemctl restart coturn
|
||||
```
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
# Подключение TURN к SHiNE-серверу
|
||||
|
||||
Начиная с текущей версии, клиент звонков запрашивает ICE-конфиг у backend через WS-операцию `GetCallIceConfig` и использует её для `RTCPeerConnection`.
|
||||
|
||||
## 1. Настройки backend
|
||||
Файл: `src/main/resources/application.properties`
|
||||
|
||||
Ключи:
|
||||
|
||||
```properties
|
||||
call.ice.stun.urls=stun:stun.l.google.com:19302
|
||||
call.ice.turn.urls=turn:37.214.58.208:3478?transport=udp,turn:37.214.58.208:3478?transport=tcp
|
||||
call.ice.turn.ttlSec=600
|
||||
call.ice.turn.userPrefix=shine
|
||||
call.ice.turn.sharedSecret=CHANGE_ME_LONG_RANDOM_SECRET
|
||||
|
||||
# fallback (если не используете shared-secret)
|
||||
call.ice.turn.username=
|
||||
call.ice.turn.password=
|
||||
```
|
||||
|
||||
## 2. Рекомендуемый режим (временные credentials)
|
||||
- На coturn и на SHiNE-сервере должен быть **одинаковый** secret:
|
||||
- coturn: `static-auth-secret=...`
|
||||
- SHiNE: `call.ice.turn.sharedSecret=...`
|
||||
- Тогда SHiNE выдаёт короткоживущие `turnUsername/turnPassword` (TTL).
|
||||
|
||||
## 3. Fallback режим (статический логин/пароль)
|
||||
Если временные credentials не используются:
|
||||
|
||||
```properties
|
||||
call.ice.turn.sharedSecret=
|
||||
call.ice.turn.username=turn_user
|
||||
call.ice.turn.password=turn_password
|
||||
```
|
||||
|
||||
## 4. Деплой после изменения
|
||||
```bash
|
||||
./gradlew deployServerNoCleanNoTests
|
||||
./gradlew deployWEB
|
||||
```
|
||||
|
||||
## 5. Проверка
|
||||
1. Авторизоваться двумя клиентами.
|
||||
2. Запустить звонок.
|
||||
3. Проверить, что звонок устанавливается даже в сети, где прямой P2P затруднён.
|
||||
4. Если TURN недоступен, клиент автоматически откатится к STUN-конфигу по умолчанию.
|
||||
|
||||
Reference in New Issue
Block a user