Files
ENI-projet-piscine/docs
Johan LEROY 3e871a3e8b feat(deploy): URL sans port et certificats Let's Encrypt sur la VM ENI
Les trois environnements passent sur enervision-g3.duckdns.org, rec. et
dev. : noms publics qui visent l'IP privée de la VM, donc résolus sans
/etc/hosts sur le réseau de l'école et injoignables ailleurs (ADR 0018).

- infra/front : nginx sur le réseau de l'hôte, seul exposé en 80 et 443.
  Aiguille par SNI vers la stack visée sans déchiffrer le TLS, et lui
  transmet l'IP du client en PROXY protocol.
- Proxy de stack : écouteur 4443 en PROXY protocol, real_ip_header ;
  sans lui, limit_req et get_client_ip() compteraient tous les postes
  comme un seul. PROXY_FRONT_PORT le publie sur 127.0.0.1.
- make tls-duckdns : Let's Encrypt par défi DNS-01 via l'API DuckDNS
  (acme.sh 3.1.6), rejouable, rejoué à chaque déploiement et chaque nuit.
- provision-host.sh fait foi pour l'adressage et les secrets : un .env
  existant garde ses secrets, reçoit ceux qui manquent (supervision) et
  voit hôte et ports réalignés. Planifie le renouvellement des certificats.
- deploy.yml : nouvelles URL, sonde prod sur 10443, front-up en prod.
- Terraform : variable domaine. CI : validation du frontal.
2026-09-23 11:21:12 +02:00
..

Documentation

  • adr : décisions d'architecture, une par fichier, numérotées et immuables.
  • architecture : les vues du système. Point d'entrée : architecture/README.md.

Décisions en vigueur

ADR Sujet
0001 PostgreSQL avec l'extension TimescaleDB
0002 Authentification par JWT d'accès et jeton de rafraîchissement opaque
0003 Autorisation RBAC à trois rôles, relecture du compte à chaque requête
0004 Journal d'audit en ajout seul, garanti par PostgreSQL
0005 LightGBM pour la prédiction de consommation, un modèle global
0006 Le moteur de règles de recommandation vit dans le backend, pas dans ml/
0007 Terminaison TLS par un reverse proxy Nginx, en Docker Compose
0008 Airflow exécute le code du backend en sous-processus, dans son propre environnement
0009 Deux environnements sur la VM ENI, un projet Compose chacun, déployés par un runner auto-hébergé
0010 Terraform provisionne la machine, GitHub Actions déploie l'application
0011 Procédure de déploiement, telle qu'exécutée le 22/09/2026
0012 État de la recette et de la production sur la VM ENI
0013 La surveillance de dérive vit dans le backend et écrit sa propre table
0014 Un pipeline CI unique appelle les workflows de composant et conditionne le déploiement
0015 Les tests de bout en bout et de charge visent la stack Compose déployée
0016 La supervision vit dans un profil Compose, active en prod