Debug — Caddy Docker : 127.0.0.1 injoignable depuis un container¶
Symptôme¶
Tous les sous-domaines tekdhi.dev retournent 502 Bad Gateway. Les logs Caddy montrent :
dial tcp 127.0.0.1:8080: connect: connection refused
Environnement¶
- VPS Hetzner, Linux
- Caddy 2 dans un container Docker (
shared_infra) - Services cibles liés à
127.0.0.1:PORTsur le host (psycho-frontend, psycho-backend, hermes, ttyd, datasette, wikijs...)
Cause identifiée¶
Dans un container Docker, 127.0.0.1 pointe vers la loopback du container lui-même, pas celle du host.
Même avec extra_hosts: ["host.docker.internal:host-gateway"], host.docker.internal résout vers l'interface réseau du host — mais les services liés à 127.0.0.1 ne sont accessibles que via la loopback, pas l'interface réseau.
Solution¶
Passer Caddy en network_mode: host dans docker-compose.yml :
caddy:
image: caddy:2
container_name: shared-caddy
restart: unless-stopped
network_mode: host # ← clé de la solution
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ...
# PAS de ports: (inutile en host mode)
# PAS de networks: (incompatible avec host mode)
Le Caddyfile reste inchangé avec 127.0.0.1:PORT — Caddy "voit" le réseau du host directement.
À retenir¶
- Règle : un container Caddy qui proxy vers des services
127.0.0.1doit être ennetwork_mode: host - Incompatibilité :
network_mode: host+networks:→ erreur Docker, choisir l'un ou l'autre - Alternative écartée :
extra_hosts: host.docker.internal:host-gateway+ remplacer127.0.0.1parhost.docker.internal— ne fonctionne pas si les services cibles sont liés à127.0.0.1(loopback uniquement)
Liens connexes¶
- shared/architecture/shared-infra-docker — architecture complète shared_infra
- shared/architecture/vps-ports-services — cartographie des ports/services du VPS