Gérer ses reverse proxy et ses certificats SSL à la main, c’est pas la mer à boire — mais faut connaître un peu. Entre les fichiers de conf Nginx et les renouvellements Let’s Encrypt, ça peut vite devenir pénible. Nginx Proxy Manager rend tout ça plus simple et plus visuel.
C’est quoi Nginx Proxy Manager ?
Nginx Proxy Manager est un outil basé sur Nginx qui permet de gérer ses reverse proxy et ses certificats SSL via une interface web. Plus besoin d’aller trifouiller les fichiers de conf !
Ce que ça permet (entre autres) :
- Créer des reverse proxy en quelques clics
- Générer et renouveler automatiquement des certificats SSL (Let’s Encrypt)
- Gérer des certificats wildcard via DNS Challenge
- Le tout avec une interface propre et claire
C’est quand même plus accessible et sympa que d’éditer des fichiers à la main.
Mon use case : SSL local sur le homelab
Dans mon cas, j’utilise Nginx Proxy Manager pour mon homelab. Mon objectif : avoir du HTTPS sur mes applis en local avec mon nom de domaine public.
Mon nom de domaine est hébergé chez Infomaniak, mais je gère le DNS via Cloudflare — principalement pour ce blog (Cloudflare Pages). Du coup, autant en profiter pour l’intégration Let’s Encrypt aussi. Mais Infomaniak aurait très bien pu faire l’affaire.
Concrètement :
proxmox.syspirit.fr→ Proxmox VEnginx.syspirit.fr→ Nginx Proxy Managerzabbix.syspirit.fr→ Zabbix- etc.
Les enregistrements DNS sont gérés en local sur mon Pi-hole, et j’utilise un certificat wildcard *.syspirit.fr pour couvrir tous les sous-domaines.
Installation avec Docker Compose
L’installation est simple avec Docker. Voici le docker-compose.yml :
services:
app:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: always
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
ports:
- 80:80
- 81:81
- 443:443Les ports :
- 80 : HTTP — pour les redirections et le challenge Let’s Encrypt
- 81 : Interface d’administration
- 443 : HTTPS
Un petit docker-compose up -d et c’est parti !
Pour plus de détails, la doc officielle est bien faite.
Premier accès
Une fois le conteneur lancé, l’interface est accessible sur http://<IP_DU_SERVEUR>:81.
Identifiants par défaut :
- Email :
admin@example.com - Mot de passe :
changeme
À la première connexion, NPM vous demande de créer votre propre compte admin. Faites-le immédiatement !
Créer un certificat SSL Wildcard
Pour générer un certificat wildcard *.syspirit.fr, on va utiliser le DNS Challenge avec Cloudflare. Ça permet à Let’s Encrypt de vérifier qu’on possède bien le domaine sans avoir besoin d’exposer le port 80 sur internet.
Créer un token API Cloudflare
NPM a besoin d’un accès à l’API Cloudflare pour créer automatiquement les enregistrements DNS nécessaires à la validation.
- Dans Cloudflare, aller dans My Profile → API Tokens → Create Token
- Choisir Custom token
- Configurer les permissions :
- Zone → DNS → Edit
- Zone → DNS → Read
- Dans Zone Resources, sélectionner le domaine concerné : Inclure → Zone Spécifique → syspirit.fr
- Créer le token et le copier — il ne sera plus visible après
Générer le certificat dans NPM
- Dans NPM, aller dans SSL Certificates → Add Certificate → Let’s Encrypt via DNS
- Remplir le champs Domain Names :
*.syspirit.fr - Sélectionner Cloudflare comme DNS Provider
- Coller le token API dans le champ Credentials File Content au format :
# Cloudflare API token dns_cloudflare_api_token=0123456789abcdef0123456789abcdef01234567 - Cliquer sur Save — NPM va créer un enregistrement TXT temporaire et valider le certificat
Le certificat se renouvellera automatiquement avant expiration.
Créer un Proxy Host
Maintenant qu’on a notre certificat wildcard, on peut créer des proxy hosts pour accéder à nos services en HTTPS.
Prenons l’exemple de NPM lui-même : on va le rendre accessible via nginx.syspirit.fr.
- Dans NPM, aller dans Hosts → Proxy Hosts → Add Proxy Host
- Onglet Details :
- Domain Names :
nginx.syspirit.fr - Scheme :
http - Forward Hostname / IP :
192.168.1.52(l’IP du serveur) - Forward Port :
81 - Websockets Support : activé (utile pour l’interface NPM)
- Domain Names :
- Onglet SSL :
- SSL Certificate : sélectionner le certificat wildcard
*.syspirit.fr
- SSL Certificate : sélectionner le certificat wildcard
- Cliquer sur Save
Le principe du reverse proxy : tous les sous-domaines doivent pointer vers l’IP de NPM. C’est lui qui se charge ensuite de rediriger vers le bon service en fonction du domaine demandé.
Dans mon cas, j’ajoute sur Pi-hole :
nginx.syspirit.fr→192.168.1.52proxmox.syspirit.fr→192.168.1.52zabbix.syspirit.fr→192.168.1.52
Toujours la même IP (celle de NPM), quel que soit le service. Sans ça, le sous-domaine ne sera pas résolu en local.
Et voilà ! https://nginx.syspirit.fr pointe maintenant vers l’interface de NPM avec un certificat valide 🚀. Il suffit de répéter l’opération pour chaque service en adaptant l’IP/port de destination dans NPM.
Conclusion
Nginx Proxy Manager rend vraiment service : plus besoin de jongler avec des fichiers de conf Nginx ou de gérer les renouvellements SSL à la main. Pour un homelab, c’est franchement idéal.
Et en entreprise ? Ça peut très bien faire le job aussi, surtout pour des applications internes ou des environnements pas trop exposés. NPM reste basé sur Nginx, qui est lui-même un reverse proxy éprouvé et très utilisé en production. La différence, c’est juste l’interface graphique par-dessus.
Pour ceux qui préfèrent la ligne de commande ou qui ont besoin de configurations très spécifiques, Nginx “classique”, Traefik ou HAProxy restent des alternatives solides — mais il faut mettre les mains dans le cambouis 😅.
Liens utiles :