Déploiement derrière reverse-proxy TLS (Caddy)
- Retire app.UseHttpsRedirection() : le conteneur écoute en HTTP, la terminaison TLS est assurée par le reverse-proxy (Caddy) placé devant. Évite les redirections parasites derrière le proxy. - Ajoute Caddyfile.example (Caddy devant le compose existant : TLS auto + reverse_proxy vers le frontend nginx qui sert l'app et proxifie /api). - .env.example : précise AUTH_FRONTEND_BASE_URL = URL publique HTTPS en production (liens de réinitialisation de mot de passe).
This commit is contained in:
@@ -16,6 +16,8 @@ ORS_API_KEY=your-openrouteservice-api-key-here
|
|||||||
JWT_SECRET_KEY=change-me-generate-a-long-random-secret
|
JWT_SECRET_KEY=change-me-generate-a-long-random-secret
|
||||||
JWT_EXPIRATION_MINUTES=720
|
JWT_EXPIRATION_MINUTES=720
|
||||||
AUTH_RESET_TOKEN_LIFETIME_MINUTES=60
|
AUTH_RESET_TOKEN_LIFETIME_MINUTES=60
|
||||||
|
# En production derrière un reverse-proxy HTTPS (Caddy), mets ton URL publique,
|
||||||
|
# ex. AUTH_FRONTEND_BASE_URL=https://schotz.exemple.fr (utilisée dans les liens de reset).
|
||||||
AUTH_FRONTEND_BASE_URL=http://localhost:8080
|
AUTH_FRONTEND_BASE_URL=http://localhost:8080
|
||||||
|
|
||||||
# --- SMTP (facultatif) : si SMTP_HOST est vide, le lien de reset est journalisé côté serveur ---
|
# --- SMTP (facultatif) : si SMTP_HOST est vide, le lien de reset est journalisé côté serveur ---
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Exemple de configuration Caddy pour exposer SchotzIAD KM Tracker en HTTPS.
|
||||||
|
#
|
||||||
|
# Architecture (option la plus simple) : Caddy est placé DEVANT le docker-compose
|
||||||
|
# existant. Le service `frontend` (nginx) sert l'application Angular et reverse-proxie
|
||||||
|
# déjà /api vers le backend en interne. Caddy n'a donc qu'à :
|
||||||
|
# - terminer le TLS (certificat automatique Let's Encrypt) ;
|
||||||
|
# - transmettre tout le trafic au port publié par le compose (8080 par défaut).
|
||||||
|
#
|
||||||
|
# Remplace `schotz.exemple.fr` par ton domaine, et l'adresse cible par l'IP:port
|
||||||
|
# de la machine/container qui publie le compose (par défaut le frontend nginx sur 8080).
|
||||||
|
|
||||||
|
schotz.exemple.fr {
|
||||||
|
encode zstd gzip
|
||||||
|
|
||||||
|
# Le compose publie le frontend nginx sur le port hôte 8080 (voir docker-compose.yml).
|
||||||
|
# nginx sert l'app et proxifie /api vers backend:8080 en interne : rien d'autre à router ici.
|
||||||
|
reverse_proxy 127.0.0.1:8080
|
||||||
|
|
||||||
|
# Caddy gère automatiquement le certificat TLS pour ce domaine (HTTP-01/TLS-ALPN).
|
||||||
|
# Aucune configuration TLS manuelle nécessaire si le domaine pointe vers cette machine.
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Points importants côté application ---
|
||||||
|
# 1) Renseigne dans ton fichier .env (non commité) :
|
||||||
|
# AUTH_FRONTEND_BASE_URL=https://schotz.exemple.fr
|
||||||
|
# afin que les liens de réinitialisation de mot de passe pointent vers l'URL publique.
|
||||||
|
# 2) Définis un JWT_SECRET_KEY aléatoire et long dans .env (obligatoire au démarrage).
|
||||||
|
# 3) Le backend écoute en HTTP dans le conteneur ; la terminaison TLS est faite par Caddy
|
||||||
|
# (l'application ne fait pas de redirection HTTPS interne).
|
||||||
@@ -199,8 +199,9 @@ if (app.Environment.IsDevelopment())
|
|||||||
app.UseSwaggerUI();
|
app.UseSwaggerUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
app.UseHttpsRedirection();
|
// Pas de redirection HTTPS côté application : le conteneur écoute en HTTP et la
|
||||||
|
// terminaison TLS est assurée par le reverse-proxy (Caddy/nginx) placé devant.
|
||||||
|
// Activer UseHttpsRedirection ici provoquerait des redirections parasites derrière le proxy.
|
||||||
app.UseCors(CorsPolicyName);
|
app.UseCors(CorsPolicyName);
|
||||||
|
|
||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
|
|||||||
Reference in New Issue
Block a user