fix(stacks): coturn annonce la bonne IP et publie 3478 en UDP

`external-ip` pointait sur 91.121.90.228, l'adresse d'admin.opytex.org, alors
que la stack tourne sur chioggia (188.165.240.182) : coturn annonçait aux
clients une machine qui n'écoute rien sur ces ports.

3478 n'était par ailleurs publié qu'en TCP, alors qu'un client TURN tente
l'UDP en premier. Les deux défauts se cumulaient, le relais était inopérant.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 17:48:23 +02:00
parent 0584856ea3
commit 1c05fd3578
3 changed files with 23 additions and 15 deletions

View File

@@ -182,21 +182,27 @@ zcat /other/backups/db-dumps/matrix_poneyworld.sql.gz | grep -c "CREATE TABLE"
Un `0` signifie que la sauvegarde est vide.
## L'IP publique est écrite en dur, à deux endroits
`coturn/turnserver.conf` (`external-ip`) et `livekit/livekit.yaml` (`node_ip`)
portent tous deux l'adresse publique de chioggia, `188.165.240.182`. Les deux
services tournent en bridge : ils ne voient qu'une IP privée et ne peuvent pas
deviner celle qu'il faut annoncer aux clients.
**Si la machine change d'adresse, ces deux fichiers doivent changer avec
elle.** Aucun des deux ne le signalera : coturn et LiveKit démarrent
normalement en annonçant une adresse erronée, et seuls les appels échouent —
sans erreur dans les logs, puisque du point de vue des serveurs tout va bien.
C'est déjà arrivé : `external-ip` a pointé pendant des mois sur
`91.121.90.228`, l'adresse d'`admin.opytex.org`.
## Défauts connus
1. **`external-ip` de coturn pointe sur une autre machine.**
`coturn/turnserver.conf` annonce `91.121.90.228`, alors que chioggia est en
`188.165.240.182` (l'adresse que `livekit.yaml` déclare en `node_ip`).
coturn annonce donc aux clients une adresse qui n'est pas la sienne.
2. **UDP 3478 n'est pas publié.** `ports:` déclare `3478:3478`, sans `/udp`
donc TCP seul. Un client TURN parle UDP en premier. Combiné au point 1,
coturn est très probablement inopérant.
3. **Trois images en tag flottant** : `nginx:latest`,
`livekit/livekit-server:latest`, `ghcr.io/element-hq/lk-jwt-service:latest`.
La convention du dépôt veut une version en dur, et Renovate ne sait rien
faire d'un `latest`.
**Trois images en tag flottant** : `nginx:latest`,
`livekit/livekit-server:latest`, `ghcr.io/element-hq/lk-jwt-service:latest`.
La convention du dépôt veut une version en dur, et Renovate ne sait rien faire
d'un `latest`.
Références :

View File

@@ -11,4 +11,4 @@ min-port=49160
max-port=49200
verbose
allow-loopback-peers
external-ip=91.121.90.228
external-ip=188.165.240.182

View File

@@ -134,9 +134,11 @@ services:
- --cli-password=${TURN_CLI_PASSWORD:?}
volumes:
- ./coturn/turnserver.conf:/etc/coturn/turnserver.conf:ro
# 3478 et 5349 sont publiés en TCP seul, sans /udp. Voir README.md.
# 3478 doit être publié en UDP autant qu'en TCP : un client TURN tente
# l'UDP en premier. 5349 (TURNS) reste en TCP seul, c'est du TLS.
ports:
- "3478:3478"
- "3478:3478/udp"
- "5349:5349"
- "49160-49200:49160-49200/udp"
networks: