Docker : publier le frontend sur le port hôte 2202 (au lieu de 8080)
É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.
This commit is contained in:
+8
-8
@@ -2,7 +2,7 @@
|
|||||||
# avec Caddy sur une machine SÉPARÉE de la machine Docker.
|
# avec Caddy sur une machine SÉPARÉE de la machine Docker.
|
||||||
#
|
#
|
||||||
# Topologie :
|
# Topologie :
|
||||||
# Internet ──HTTPS──> [Machine Caddy] ──HTTP──> [Machine Docker] : port 8080
|
# Internet ──HTTPS──> [Machine Caddy] ──HTTP──> [Machine Docker] : port 2202
|
||||||
# (frontend nginx du compose,
|
# (frontend nginx du compose,
|
||||||
# qui sert l'app et proxifie /api)
|
# qui sert l'app et proxifie /api)
|
||||||
#
|
#
|
||||||
@@ -13,9 +13,9 @@
|
|||||||
schotz.exemple.fr {
|
schotz.exemple.fr {
|
||||||
encode zstd gzip
|
encode zstd gzip
|
||||||
|
|
||||||
# La machine Docker publie le frontend nginx sur son port 8080 (voir docker-compose.yml).
|
# 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.
|
# nginx sert l'app Angular et proxifie /api vers le backend en interne.
|
||||||
reverse_proxy 192.168.1.50:8080 {
|
reverse_proxy 192.168.1.50:2202 {
|
||||||
# En-têtes transmis au backend pour qu'il connaisse le schéma/hôte d'origine.
|
# 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-Proto {scheme}
|
||||||
header_up X-Forwarded-Host {host}
|
header_up X-Forwarded-Host {host}
|
||||||
@@ -32,16 +32,16 @@ schotz.exemple.fr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# --- SÉCURITÉ RÉSEAU (important, machines séparées) ---
|
# --- SÉCURITÉ RÉSEAU (important, machines séparées) ---
|
||||||
# Le port 8080 de la machine Docker devient joignable sur le réseau : sans filtrage,
|
# 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.
|
# l'application serait accessible en HTTP direct (sans TLS), en contournant Caddy.
|
||||||
# Recommandations :
|
# Recommandations :
|
||||||
# 1) Restreindre l'accès au port 8080 de la machine Docker à la seule IP de la machine
|
# 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) :
|
# Caddy (pare-feu : ufw/iptables/nftables ou security group), ex. (ufw) :
|
||||||
# ufw allow from <IP_CADDY> to any port 8080 proto tcp
|
# ufw allow from <IP_CADDY> to any port 2202 proto tcp
|
||||||
# ufw deny 8080
|
# ufw deny 2202
|
||||||
# 2) Idéalement, faire communiquer les deux machines via un réseau privé/VPN
|
# 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.
|
# (WireGuard, réseau interne du datacenter) plutôt qu'en clair sur Internet.
|
||||||
# 3) Ne pas publier le backend (8080 du service backend) directement : seul le frontend
|
# 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.
|
# nginx est exposé ; le backend reste sur le réseau interne du compose.
|
||||||
|
|
||||||
# --- Points côté application (fichier .env sur la machine Docker) ---
|
# --- Points côté application (fichier .env sur la machine Docker) ---
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ services:
|
|||||||
- JWT__SecretKey=${JWT_SECRET_KEY:?JWT_SECRET_KEY requis}
|
- JWT__SecretKey=${JWT_SECRET_KEY:?JWT_SECRET_KEY requis}
|
||||||
- JWT__ExpirationMinutes=${JWT_EXPIRATION_MINUTES:-720}
|
- JWT__ExpirationMinutes=${JWT_EXPIRATION_MINUTES:-720}
|
||||||
- Auth__ResetTokenLifetimeMinutes=${AUTH_RESET_TOKEN_LIFETIME_MINUTES:-60}
|
- Auth__ResetTokenLifetimeMinutes=${AUTH_RESET_TOKEN_LIFETIME_MINUTES:-60}
|
||||||
- Auth__FrontendBaseUrl=${AUTH_FRONTEND_BASE_URL:-http://localhost:8080}
|
- Auth__FrontendBaseUrl=${AUTH_FRONTEND_BASE_URL:-http://localhost:2202}
|
||||||
# --- SMTP (facultatif) : Smtp__Host vide ⇒ repli journalisation du lien de reset ---
|
# --- SMTP (facultatif) : Smtp__Host vide ⇒ repli journalisation du lien de reset ---
|
||||||
- Smtp__Host=${SMTP_HOST:-}
|
- Smtp__Host=${SMTP_HOST:-}
|
||||||
- Smtp__Port=${SMTP_PORT:-587}
|
- Smtp__Port=${SMTP_PORT:-587}
|
||||||
@@ -36,7 +36,7 @@ services:
|
|||||||
context: ./frontend
|
context: ./frontend
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "8080:80" # hôte 8080 -> nginx (frontend)
|
- "2202:80" # hôte 2202 -> nginx (frontend)
|
||||||
depends_on:
|
depends_on:
|
||||||
backend:
|
backend:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|||||||
Reference in New Issue
Block a user