Évite un conflit avec une instance existante sur 8080. Seul le port HÔTE change (2202:80) ; les ports internes des conteneurs (backend 8080) sont inchangés, donc le proxy interne nginx -> backend n'est pas affecté. Auth__FrontendBaseUrl par défaut et Caddyfile.example alignés sur 2202.
52 lines
2.6 KiB
Caddyfile
52 lines
2.6 KiB
Caddyfile
# 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 <IP_CADDY> 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=<valeur aléatoire longue> # obligatoire au démarrage
|
|
# ORS_API_KEY=<ta clé OpenRouteService>
|
|
# Le backend écoute en HTTP dans le conteneur ; la terminaison TLS est faite par Caddy.
|