diff --git a/README.md b/README.md index c1513c2..b4eed5a 100644 --- a/README.md +++ b/README.md @@ -391,6 +391,28 @@ services. obtient et renouvelle les certificats Let's Encrypt automatiquement. Y démarrer un second frontal les aurait mis en conflit et coupé les services existants. Le bloc à ajouter est dans [`deploy/Caddyfile.snippet`](deploy/Caddyfile.snippet). +- **Deux pare-feux à traverser, pas un** — le serveur a `ufw`, et le projet + Hetzner Cloud a son propre pare-feu *en amont de la machine*. Ouvrir un port + dans `ufw` ne suffit pas : le paquet n'arrive jamais jusqu'à `ufw`. + Diagnostic sans ambiguïté — `tcpdump` sur l'hôte ne voit **aucun paquet** + alors qu'un port autorisé, lui, apparaît. Les trois ports d'ingestion média + (1935/tcp, 8890/udp, 8189/udp) doivent être ouverts **des deux côtés** : + + ```bash + # Sur la machine + ufw allow 1935/tcp && ufw allow 8890/udp && ufw allow 8189/udp + + # Puis dans la console Hetzner Cloud > Firewalls > règles entrantes, + # ou via l'API : + hcloud firewall add-rule --direction in --protocol tcp --port 1935 --source-ips 0.0.0.0/0 + hcloud firewall add-rule --direction in --protocol udp --port 8890 --source-ips 0.0.0.0/0 + hcloud firewall add-rule --direction in --protocol udp --port 8189 --source-ips 0.0.0.0/0 + ``` + + Sans 8189/udp, la signalisation WebRTC aboutit mais aucun média ne circule : + la console bascule silencieusement en HLS. Panne d'autant plus trompeuse que + l'interface continue d'afficher une image. + - **Isolation réseau** — Kafka et PostgreSQL vivent sur un réseau Docker privé sans aucun port publié sur l'hôte. Seule l'application rejoint le réseau partagé du reverse proxy.