freedzhost.cloud

Homelab 2 : une seule entrée HTTPS pour tous vos services

Niveau DébutantTemps estimé 1 hÀ lire avant Homelab 1 : Proxmox, la base sous chaque serviceUn mot inconnu ? Lexique

Chaque service que vous hébergez a besoin d'une adresse et d'un cadenas. Plutôt que d'ouvrir une porte par service, ouvrez-en une : un proxy inverse. Il reçoit chaque visiteur, garde les certificats HTTPS, et passe chaque requête au bon service à l'intérieur de votre réseau. Le nôtre, c'est Nginx Proxy Manager (NPM) : open source, avec une interface web, et il renouvelle seul les certificats Let's Encrypt.

InternetvisiteurDNS : *.votredomaine → votre IP publiquevotre réseauhttps://Votre boxtransmet 80, 443Proxy inverseHTTPS, certificats443siteport 8000forgeport 8001photosport 8002selon le nom demandéadmin :81, LAN seulementLet's Encrypt vérifie le port 80
Une seule entrée. La box ne transmet que 80 et 443 au proxy ; le proxy lit le nom demandé et passe la requête au bon service de votre réseau. Le port d'administration 81 ne sort jamais de la maison.

Un peu d'histoire

Igor Sysoev a publié nginx en 2004 pour servir de nombreuses connexions simultanées avec peu de mémoire ; il est devenu l'un des serveurs web les plus utilisés au monde. Let's Encrypt, ouvert au public fin 2015, a rendu les certificats HTTPS gratuits et automatiques. Nginx Proxy Manager emballe les deux dans une interface web : un formulaire par site, et un certificat qui se renouvelle tout seul.

La preuve que c'est simple

Ce site a été mis en ligne exactement ainsi : un conteneur qui sert les pages, une entrée de proxy, un certificat, environ quinze minutes. Une petite VM suffit pour tout un homelab.

1. Le nom

Chez votre registraire de domaine, créez un enregistrement A pour votre domaine et un pour chaque sous-domaine (ou un joker *), qui pointe vers votre adresse IP publique. Vérifiez depuis l'extérieur de votre réseau que le nom répond avant d'aller plus loin.

2. La box

Dans votre box, redirigez les ports 80 et 443 vers la machine qui fait tourner le proxy. Rien d'autre.

Ne redirigez jamais le port 81 : c'est la page d'administration de NPM. Elle reste joignable depuis votre réseau domestique uniquement.

3. Le proxy

Sur une VM ou un conteneur avec Docker (voir Homelab 1), le fichier compose officiel, version épinglée :

services:
  npm:
    image: jc21/nginx-proxy-manager:2.16.0
    restart: unless-stopped
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
docker compose up -d

Ouvrez http://<adresse-du-proxy>:81 depuis votre réseau. Un compte administrateur par défaut est créé au premier démarrage (voir la page d'installation de la documentation officielle) : connectez-vous, puis changez tout de suite son e-mail et son mot de passe.

4. Publier un service

  1. Hosts → Proxy Hosts → Add Proxy Host.
  2. Noms de domaine : votredomaine.tld, www.votredomaine.tld.
  3. Redirigez vers l'adresse et le port du service sur votre réseau, par exemple 192.0.2.10 et 8000.
  4. Onglet SSL : demandez un nouveau certificat Let's Encrypt, cochez Force SSL.

Enregistrez : Let's Encrypt vérifie par le port 80 que le nom est bien à vous, délivre le certificat, et NPM le renouvelle avant qu'il n'expire.

Pièges

Épinglez une version plutôt que :latest : sinon une mise à jour arrive le jour où vous redémarrez, sans prévenir. Et n'ajoutez jamais privileged: true par habitude : un proxy n'a pas besoin du contrôle total de l'hôte.

Si les demandes de certificat échouent en boucle, arrêtez de réessayer : Let's Encrypt limite le nombre de certificats identiques par semaine. Corrigez d'abord la cause, en général le port 80 non redirigé ou un nom qui ne répond pas encore.

Vous testez depuis chez vous et le site ne répond pas ? Certaines box ne savent pas reboucler vers leur propre adresse publique. Testez depuis un téléphone en données mobiles avant de soupçonner le proxy.

Sources

Utile ? Dites-nous ce qu'il faut mesurer ensuite.