VM200 est le point d'entrée Web de l'infrastructure auto-hébergée. Elle publie des applications installées sur d'autres machines sans exposer directement leurs ports internes à Internet. Elle reçoit les connexions HTTPS, présente le certificat public, sélectionne le service demandé et relaie la requête vers la bonne machine du réseau local.
✅ État déployé
  • VM Linux dédiée issue d'un template Ubuntu Server
  • Nginx comme reverse proxy
  • Certificats Let's Encrypt gérés par Certbot
  • Pare-feu local actif
  • Fail2ban actif et validé pour l'administration SSH
  • Redirection HTTP → HTTPS et renouvellement de certificat testés
  • Réponses progressives et connexions WebSocket validées
  • Redémarrage de VM200 validé sans perte de configuration
🌐 État des publications
ServiceÉtat public
OpenWebUI · VM210🟢 publié & validé HTTPS
n8n · VM300🟢 publié & validé HTTPS
Nextcloud · VM205🟢 publié & validé HTTPS
autres services internes⚪ non publiés / différés
🧭 D'un nom de domaine vers une autre machine
chemin d'une requête publique
1. Navigateur Internet
        ↓ demande gpt.stephanemuraro.fr
2. DNS public
        ↓ renvoie l'adresse Internet de la connexion
3. Routeur
        ↓ transfère uniquement le trafic Web vers VM200
4. VM200 / Nginx
        ↓ choisit le virtual host correspondant au nom
5. VM210 / OpenWebUI
        ↓ produit la réponse applicative
6. VM200 / Nginx
        ↓ renvoie la réponse dans la session HTTPS
7. Navigateur

Le DNS associe seulement le nom public à l'adresse Internet — il ne connaît pas la VM qui héberge l'application. Le routeur ne choisit pas non plus le service : il remet les connexions Web à VM200. C'est Nginx qui effectue le routage applicatif : le nom demandé pendant la négociation TLS et dans la requête HTTP sélectionne un bloc de configuration (virtual host) qui désigne la machine et le service internes cibles.

plusieurs noms publics, une même connexion Internet
gpt.stephanemuraro.fr         ─┐
n8n.stephanemuraro.fr         ─┼─> même adresse publique ─> VM200
nextcloud.stephanemuraro.fr   ─┘                           ├─> VM IA
                                                           ├─> VM automatisation
                                                           └─> VM fichiers
L'existence d'un enregistrement DNS ne prouve pas qu'un service est publié : il faut aussi un virtual host, un certificat valide, un backend autorisé et un test depuis un réseau extérieur.
🧱 Rôle des composants
ComposantResponsabilitéLimite
DNS publicassocier un nom à l'adresse Internetne choisit pas la VM interne
Routeurtransmettre le trafic Web vers VM200ne comprend pas les applications
Pare-feu VM200refuser les entrées non prévuesne remplace pas l'authentification
Nginxterminer HTTPS, sélectionner le virtual host, relayerne stocke pas les données métier
Certbotobtenir/renouveler les certificats Let's Encryptne publie pas seul une application
Fail2banbloquer certaines attaques répétitives des journauxne remplace ni pare-feu ni mots de passe robustes
Backendfournir l'application, contrôler ses utilisateursne doit pas être exposé directement
🔐 Terminaison TLS

Le chiffrement public se termine sur VM200. Le certificat et sa clé privée restent centralisés sur le reverse proxy, ce qui évite de gérer un certificat public différent sur chaque backend.

Client Internet  ═════ HTTPS chiffré ═════>  VM200
VM200            ───── flux LAN contrôlé ──>  backend

Nginx transmet au backend le nom demandé, le protocole externe et les informations nécessaires à la traçabilité. Pour les applications interactives, il prend en charge les WebSockets, les réponses progressives et des délais adaptés aux traitements longs.

🛡️ Défense en profondeur
  • le routeur n'envoie à VM200 que le trafic Web nécessaire
  • le pare-feu local refuse les autres connexions entrantes
  • l'administration reste limitée au réseau interne
  • Nginx ne relaie que les noms et services configurés
  • TLS chiffre et authentifie la connexion publique
  • Fail2ban réduit certaines tentatives répétitives observables
  • chaque backend conserve son authentification et son filtrage
  • bases de données et API techniques restent absentes du WAN

Fail2ban est validé pour SSH ; cela ne protège pas automatiquement les formulaires de connexion applicatifs — chaque protection exige un journal exploitable et un filtre testé.

➕ Publier un nouveau service
  • valider le service sur le réseau local
  • identifier ses besoins HTTPS, WebSocket, taille de requête et délais
  • définir son nom public et son modèle d'authentification
  • configurer l'application pour son origine publique
  • créer un virtual host distinct sur VM200
  • valider la syntaxe Nginx avant rechargement
  • obtenir et tester le certificat
  • tester depuis un réseau réellement extérieur
  • vérifier les journaux et l'absence d'exposition directe
  • documenter le retour arrière
↩️ Retour arrière — trois niveaux :

Le test formel du retour arrière global par retrait du transfert WAN reste le dernier contrôle ouvert de la première tranche.

🎯 Compétences illustrées
  • Conception d'un reverse proxy mutualisé
  • DNS, NAT, SNI, virtual hosts et en-têtes de proxy
  • Automatisation du cycle de vie des certificats
  • Prise en charge des WebSockets et du streaming
  • Segmentation entre frontière Internet et backends
  • Défense en profondeur et stratégie de retour arrière
  • Publication d'un service hébergé sur une autre machine

Pages liées

Références & Sources

CatégorieRessourceURL
Documentation officielleNginx — Documentationnginx.org/en/docs
Documentation officielleCertbot / Let's Encrypteff-certbot.readthedocs.io
Documentation officielleFail2bangithub.com/fail2ban/fail2ban
Publications validéesOpenWebUI (VM210) · n8n (VM300) · Nextcloud (VM205) — HTTPS testé depuis un réseau extérieur, 2026-08-15—
LicenceNginx — BSD-2-Clause · Certbot — Apache-2.0 · Fail2ban — GPLv2nginx.org/LICENSE
Contenu de cette pagePartagé sous CC BY-SA 4.0creativecommons.org/licenses/by-sa/4.0