Pourquoi installer Nginx Proxy Manager sur votre VPS
Dès que vous hébergez plusieurs services sur un VPS (une API, un panneau d'admin, un Portainer, un n8n…), vous devez router chaque domaine vers le bon conteneur et gérer un certificat SSL pour chacun. Le faire à la main avec des fichiers de configuration Nginx et Certbot est fastidieux et source d'erreurs. Nginx Proxy Manager résout ce problème : depuis une interface web, vous créez un « Proxy Host » en indiquant un domaine, une cible interne (IP:port) et NPM génère automatiquement le certificat Let's Encrypt. Il gère aussi les redirections, les en-têtes personnalisés, les listes d'accès et les certificats wildcard. Contrairement à un PaaS, NPM ne déploie pas d'applications : c'est une brique d'infrastructure dédiée au routage HTTP/HTTPS, qui se place idéalement devant tous vos autres conteneurs.
Ce que Nginx Proxy Manager apporte
- Création de reverse proxies en quelques clics, sans éditer de fichier Nginx.
- Certificats Let's Encrypt automatiques, y compris wildcard via DNS challenge.
- Gestion centralisée de tous vos domaines et sous-domaines depuis une interface unique.
- Listes d'accès (Access Lists) pour protéger un service par mot de passe ou par IP.
- Redirections, hôtes 404 et en-têtes personnalisés configurables visuellement.
- Logs d'accès et d'erreur consultables par hôte, utiles pour le débogage.
Prérequis pour Nginx Proxy Manager
Nginx Proxy Manager est très léger : un VPS d'1 Go de RAM et 1 vCPU suffit amplement, car NPM ne fait que router le trafic vers vos autres conteneurs. Prévoyez 15 Go de disque SSD pour les certificats, la base SQLite et les logs. Docker et Docker Compose doivent être installés. Point crucial : NPM doit être le seul service à écouter sur les ports 80 et 443 du VPS, puisqu'il sert de point d'entrée unique pour tout le trafic web. Le port 81 est utilisé pour l'interface d'administration et ne doit jamais être exposé directement sur Internet. Faites pointer vos enregistrements DNS (A pour chaque domaine, ou wildcard pour le DNS challenge) vers l'IP du VPS avant de générer les certificats.
Nginx Proxy Manager face à Traefik
| Critère | Nginx Proxy Manager | Traefik |
|---|---|---|
| Configuration | Interface web visuelle, aucun fichier à éditer | Fichiers YAML et labels Docker |
| Courbe d'apprentissage | Faible, accessible aux débutants | Plus raide, orientée DevOps |
| SSL Let's Encrypt | Automatique via l'interface, wildcard possible | Automatique via configuration |
| Découverte de services | Manuelle (saisie IP:port) | Automatique via labels Docker |
| Idéal pour | Quelques services gérés à la main | Environnements dynamiques et nombreux conteneurs |
| Consommation RAM | Très faible | Faible |
| Logs par hôte | Consultables dans l'interface | Via stack de logs externe |
| Gestion des accès | Access Lists intégrées (IP, mot de passe) | Middlewares à configurer |
Installer Nginx Proxy Manager et créer un proxy
Préparer le docker-compose
Sur le VPS, créez un dossier /opt/npm et un fichier docker-compose.yml déclarant l'image jc21/nginx-proxy-manager:latest, en mappant les ports 80, 443 et 81, avec des volumes pour ./data et ./letsencrypt.
Lancer le conteneur
Exécutez docker compose up -d. NPM démarre avec une base SQLite par défaut. L'interface d'administration devient accessible sur http://IP_DU_VPS:81.
Se connecter et sécuriser le compte admin
Connectez-vous avec les identifiants par défaut (admin@example.com / changeme), puis changez immédiatement l'email et le mot de passe. C'est une étape de sécurité non négociable avant toute exposition.
Créer un Proxy Host
Dans « Proxy Hosts », ajoutez un hôte : domaine app.mondomaine.ma, cible Forward Hostname (le nom du conteneur ou l'IP interne) et port. Activez « Block Common Exploits » et le support WebSocket si besoin.
Activer le SSL automatique
Dans l'onglet SSL du Proxy Host, choisissez « Request a new SSL Certificate », acceptez les conditions Let's Encrypt et activez « Force SSL ». NPM obtient et installe le certificat ; votre service est désormais accessible en HTTPS.
Protéger l'interface d'administration
Fermez le port 81 au pare-feu et créez un Proxy Host dédié pour accéder à l'admin via un domaine en HTTPS, protégé par une Access List. Ne laissez jamais le port 81 ouvert sur Internet.
Pour obtenir un certificat wildcard *.mondomaine.ma et couvrir tous vos sous-domaines d'un coup, utilisez le DNS challenge : dans l'onglet SSL, sélectionnez votre fournisseur DNS et fournissez une clé API. Connectez ensuite tous vos conteneurs (Portainer, n8n, vos applications) au même réseau Docker que NPM, afin de cibler chaque service par son nom de conteneur plutôt que par une IP : la configuration reste stable même si les adresses internes changent au redémarrage.