feat(deploy): TURN/TLS анонсируется именем хоста с сертификатом

Браузеры отклоняют TLS-соединение к TURN по IP, если сертификат выписан на
домен: релей с публичным адресом отдавал `turns:<ip>:5349`, и этот эндпоинт был
нерабочим.

- флаг `--turn-relay-tls-host` (по умолчанию `turn.<домен>`, если он резолвится,
  иначе адрес релея) попадает в `rtc.turn_servers` как TLS-эндпоинт;
- значение сохраняется в `.env` и переиспользуется при `--reconfigure`;
- `scripts/test-install.sh` проверяет, что в `livekit.yaml` попали и UDP-адрес,
  и TLS-имя релея.
This commit is contained in:
2026-09-20 20:48:32 +03:00
parent 4a0b70ab24
commit 8b477ac314
2 changed files with 36 additions and 3 deletions
+15 -1
View File
@@ -71,7 +71,21 @@ secrets_before="$(docker exec "$CONTAINER" bash -lc '
')"
printf '%s\n' "$secrets_before"
run_install "4/5 идемпотентность: повторный запуск с --reconfigure" --reconfigure
# Внешний TURN-релей: в livekit.yaml должны попасть UDP-адрес и TLS-имя хоста
# (сертификат выписан на домен, поэтому TLS-эндпоинт анонсируется именем).
run_install "4/5 идемпотентность: повторный запуск с --reconfigure" --reconfigure \
--turn-relay-host 203.0.113.10 --turn-relay-tls-host turn.gl.test.local
log "4b/5 адреса TURN-релея в livekit.yaml"
relay_rendered="$(docker exec "$CONTAINER" bash -lc 'cat /opt/glchat/livekit/livekit.yaml')"
printf '%s\n' "$relay_rendered" | grep -A 3 "turn_servers" | head -12
for expected in "host: 203.0.113.10" "protocol: udp" "host: turn.gl.test.local" "protocol: tls"; do
if ! printf '%s\n' "$relay_rendered" | grep -q "$expected"; then
echo "ОШИБКА: в livekit.yaml нет строки \"$expected\"" >&2
exit 1
fi
done
echo "адреса TURN-релея отрендерены: ok"
log "5/5 секреты после повторного запуска"
secrets_after="$(docker exec "$CONTAINER" bash -lc '