# Exemple de configuration Caddy pour exposer SchotzIAD KM Tracker en HTTPS, # avec Caddy sur une machine SÉPARÉE de la machine Docker. # # Topologie : # Internet ──HTTPS──> [Machine Caddy] ──HTTP──> [Machine Docker] : port 2202 # (frontend nginx du compose, # qui sert l'app et proxifie /api) # # Remplace : # - `schotz.exemple.fr` par ton domaine (doit pointer en DNS vers la machine Caddy) ; # - `192.168.1.50` par l'IP (LAN/VPN) de la machine Docker qui publie le compose. schotz.exemple.fr { encode zstd gzip # La machine Docker publie le frontend nginx sur son port 2202 (voir docker-compose.yml). # nginx sert l'app Angular et proxifie /api vers le backend en interne. reverse_proxy 192.168.1.50:2202 { # En-têtes transmis au backend pour qu'il connaisse le schéma/hôte d'origine. header_up X-Forwarded-Proto {scheme} header_up X-Forwarded-Host {host} header_up X-Forwarded-For {remote_host} # Sonde de santé optionnelle (le compose expose GET /health via nginx -> backend). health_uri /health health_interval 30s } # Caddy gère automatiquement le certificat TLS (Let's Encrypt) pour ce domaine, # à condition que le DNS de schotz.exemple.fr pointe vers CETTE machine (Caddy) # et que les ports 80/443 y soient ouverts. } # --- SÉCURITÉ RÉSEAU (important, machines séparées) --- # Le port 2202 de la machine Docker devient joignable sur le réseau : sans filtrage, # l'application serait accessible en HTTP direct (sans TLS), en contournant Caddy. # Recommandations : # 1) Restreindre l'accès au port 2202 de la machine Docker à la seule IP de la machine # Caddy (pare-feu : ufw/iptables/nftables ou security group), ex. (ufw) : # ufw allow from to any port 2202 proto tcp # ufw deny 2202 # 2) Idéalement, faire communiquer les deux machines via un réseau privé/VPN # (WireGuard, réseau interne du datacenter) plutôt qu'en clair sur Internet. # 3) Ne pas publier le backend (8080 interne du service backend) directement : seul le frontend # nginx est exposé ; le backend reste sur le réseau interne du compose. # --- Points côté application (fichier .env sur la machine Docker) --- # AUTH_FRONTEND_BASE_URL=https://schotz.exemple.fr # liens de réinitialisation # JWT_SECRET_KEY= # obligatoire au démarrage # ORS_API_KEY= # Le backend écoute en HTTP dans le conteneur ; la terminaison TLS est faite par Caddy.