From 1c05fd3578a5abad13000feb817d5075bb633743 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 19 Aug 2026 17:48:23 +0200 Subject: [PATCH] fix(stacks): coturn annonce la bonne IP et publie 3478 en UDP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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 --- stacks/matrix.poneyworld.net/README.md | 32 +++++++++++-------- .../coturn/turnserver.conf | 2 +- .../matrix.poneyworld.net/docker-compose.yml | 4 ++- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/stacks/matrix.poneyworld.net/README.md b/stacks/matrix.poneyworld.net/README.md index 41803db..4c42058 100644 --- a/stacks/matrix.poneyworld.net/README.md +++ b/stacks/matrix.poneyworld.net/README.md @@ -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 : diff --git a/stacks/matrix.poneyworld.net/coturn/turnserver.conf b/stacks/matrix.poneyworld.net/coturn/turnserver.conf index cee7781..72d94e9 100644 --- a/stacks/matrix.poneyworld.net/coturn/turnserver.conf +++ b/stacks/matrix.poneyworld.net/coturn/turnserver.conf @@ -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 diff --git a/stacks/matrix.poneyworld.net/docker-compose.yml b/stacks/matrix.poneyworld.net/docker-compose.yml index 6d5f6f5..d610c73 100644 --- a/stacks/matrix.poneyworld.net/docker-compose.yml +++ b/stacks/matrix.poneyworld.net/docker-compose.yml @@ -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: