Abstract violet and amber illustration of a reverse proxy gateway routing encrypted HTTPS traffic to multiple backend services

Nginx Proxy Manager

Nginx Proxy Manager

Nginx Proxy Manager est un conteneur Docker qui place un tableau de bord web devant Nginx : pointer un domaine vers un service de votre réseau et obtenir un certificat HTTPS valide ne demande jamais de toucher à une ligne de configuration Nginx. On ajoute un proxy host, on demande un certificat Let’s Encrypt, on active Force SSL, et jellyfin.votredomaine.com devient joignable depuis n’importe où avec une vraie HTTPS devant, pas une IP et un port nus. C’est en général le premier reverse proxy qu’un homelabbeur installe : la barrière à l’entrée est vraiment basse, et l’objectif affiché du projet, dans les mots de son mainteneur, est une prise en main « si simple qu’un singe pourrait s’en sortir ».

Licence : MIT, confirmée directement dans le fichier LICENSE du dépôt GitHub NginxProxyManager/nginx-proxy-manager (Copyright (c) 2017) et reprise en pied de page du site de documentation officiel, avec la mention « Copyright © 2016-present jc21.com ». Libre pour tout usage, commercial inclus.

En bref : site officiel nginxproxymanager.com · code source github.com/NginxProxyManager/nginx-proxy-manager (33 000+ étoiles) · image Docker jc21/nginx-proxy-manager sur Docker Hub (pas de miroir GHCR) · dernière version stable v2.15.1 (juin 2026) · multi-arch amd64/arm64 (armv7 abandonné après la v2.14) · tableau de bord d’administration sur le port 81, distinct des ports 80/443 du proxy.

Pourquoi l’utiliser plutôt que configurer Nginx à la main

Éditer nginx.conf à la main pour chaque sous-domaine, puis lancer certbot séparément pour chaque certificat, c’est le genre de tâche répétitive et propice aux fautes de frappe qui décourage les homelabbeurs d’aller au-delà d’un ou deux services derrière une vraie HTTPS. Nginx Proxy Manager réduit tout ça à un formulaire : nom d’hôte, IP et port de redirection, une case à cocher pour le SSL, avec demande et renouvellement automatiques du certificat Let’s Encrypt, sans cron ni hook à maintenir. Ça compte d’autant plus que l’homelab grossit ; notre guide d’auto-hébergement pour débutants détaille ce matériel. À partir de cinq ou six sous-domaines, un bloc Nginx mal recopié devient un vrai risque de panne, pas juste une gêne. NPM ne dispense pas de comprendre ce que fait un reverse proxy, il se contente d’en effacer la syntaxe.

Installer Nginx Proxy Manager avec Docker

Voici la configuration SQLite tirée de la documentation officielle du projet, celle par laquelle démarrent la plupart des homelabs. Un backend MySQL ou MariaDB est documenté à part pour les déploiements plus lourds, mais il n’est pas nécessaire pour une première installation.

services:
  app:
    image: 'jc21/nginx-proxy-manager:2.15.1'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  1. Installez Docker s’il n’est pas déjà présent sur la machine, enregistrez le fichier ci-dessus sous docker-compose.yml, puis lancez docker compose up -d.
  2. Redirigez les ports 80 et 443 de votre routeur vers cette machine. Laissez le port 81 fermé vers l’extérieur : c’est le tableau de bord d’administration, ni Let’s Encrypt ni un visiteur n’a besoin d’y accéder.
  3. Laissez-lui une minute ou deux au premier démarrage, le temps que les clés JWT se génèrent et que la base de données s’initialise.
  4. Ouvrez http://ip-de-votre-serveur:81 et connectez-vous avec le compte par défaut, admin at example dot com et changeme, identique sur chaque installation neuve.
docker compose up -d
docker compose logs -f app

Ajouter un proxy host et activer le SSL

Une fois connecté, l’assistant de configuration commence par demander un nouveau nom d’administrateur, un email et un mot de passe. Remplacez les valeurs par défaut à ce moment-là, pas plus tard.

  1. Pointez l’enregistrement DNS A de votre domaine, ou un CNAME pour un sous-domaine, vers votre IP publique, ou utilisez un fournisseur DNS dynamique comme DuckDNS si cette IP change.
  2. Dans le tableau de bord, allez dans Hosts, puis Proxy Hosts, puis Add Proxy Host.
  3. Saisissez le nom de domaine, puis l’adresse IP interne et le port du service à exposer, Jellyfin sur le port 8096 par exemple, ou n’importe quel autre service déjà en cours d’exécution sur le réseau.
  4. Passez à l’onglet SSL, demandez un nouveau certificat Let’s Encrypt, puis activez Force SSL et HTTP/2.
  5. Enregistrez. Nginx Proxy Manager délivre le certificat et recharge Nginx tout seul, sans redémarrage manuel.

Notes de sécurité : ne redirigez jamais le port 81 vers internet, c’est l’interface d’administration, la seule partie de cette stack qui ne devrait jamais être joignable sans VPN ou restriction d’accès dédiée. Changez les identifiants par défaut avant tout : ils ne sont protégés par aucune authentification dès que le conteneur démarre. NPM bloque par défaut certaines attaques web courantes, mais reste un logiciel exposé à internet : gardez l’image à jour plutôt qu’un tag figé pendant des années. Pour le sensible, superposez ses Access Lists intégrées à l’authentification déjà en place côté application.

Nginx Proxy Manager face à Traefik et Caddy

Les trois font le même travail de fond : terminer le HTTPS et rediriger le trafic vers le bon conteneur. L’argument principal de Nginx Proxy Manager, c’est le tableau de bord : chaque proxy host, certificat et liste d’accès se gère via un formulaire, ce qui en fait généralement le premier reverse proxy qu’on installe. Caddy fait l’impasse sur l’interface pour quelques lignes dans un Caddyfile et des certificats automatiques, séduisant quand écrire un court fichier de config paraît plus rapide que cliquer dans une interface. Traefik vise les setups très Docker : socket Docker, labels sur chaque conteneur, découverte automatique des nouveaux services, rentable à partir d’une dizaine de conteneurs, superflu pour trois. Traefik et Caddy ont désormais chacun leur propre fiche sur selfhostlab.

  • Tableau de bord web pour les hosts, certificats et listes d’accès, sans syntaxe Nginx à connaître
  • Délivrance et renouvellement automatiques des certificats Let’s Encrypt, wildcard compris via challenge DNS
  • Image multi-arch (amd64, arm64) avec un rythme de sorties actif
  • Sous licence MIT, libre pour tout usage, aucune fonctionnalité verrouillée derrière un paywall
  • L’interface d’administration elle-même est une seconde surface d’attaque à sécuriser séparément
  • Aucune découverte automatique des services : chaque proxy host s’ajoute à la main, contrairement aux labels Docker de Traefik
  • Les identifiants par défaut sont identiques sur chaque installation neuve tant qu’on ne les change pas

Matériel : Nginx Proxy Manager, c’est Nginx plus un petit backend Node.js, assez léger pour un Raspberry Pi ou toute petite machine basse consommation ; notre guide d’auto-hébergement pour débutants aide à choisir cette première machine. La vraie exigence, c’est le réseau, pas le CPU : les ports 80 et 443 joignables depuis l’extérieur, et un domaine ou un hostname DNS dynamique pour Let’s Encrypt.

Accéder à un service auto-hébergé comme Jellyfin depuis l’extérieur de la maison est l’une des raisons les plus courantes pour lesquelles les homelabbeurs installent un reverse proxy. Notre guide d’accès distant à Jellyfin détaille cette configuration de bout en bout, et la compare à Tailscale et WireGuard, qui exposent un réseau privé complet plutôt qu’un sous-domaine HTTPS à la fois.

FAQ

Nginx Proxy Manager est-il gratuit et open source ?

Oui. Il est sous licence MIT, libre pour tout usage y compris commercial, et maintenu comme un projet communautaire plutôt que comme un produit d’entreprise.

Quels sont les identifiants par défaut de Nginx Proxy Manager ?

admin at example dot com et changeme, identiques sur chaque installation neuve. Changez les trois, nom, email et mot de passe, dès la première connexion.

Faut-il un nom de domaine pour utiliser Nginx Proxy Manager ?

Pour un vrai certificat Let’s Encrypt, oui, ou au minimum un sous-domaine via un fournisseur DNS dynamique gratuit comme DuckDNS. Un certificat auto-signé fonctionne en local sans domaine, mais les navigateurs le signalent comme non fiable.

Nginx Proxy Manager peut-il tourner sur un Raspberry Pi ?

Oui. L’image est construite pour amd64 et arm64. Le support armv7 a été abandonné à la version 2.14 quand Node.js a laissé tomber armhf ; les anciennes cartes Pi 32 bits doivent donc utiliser le tag d’image 2.13.7.

Est-il prudent d’exposer Nginx Proxy Manager à internet ?

Les ports du proxy, 80 et 443, sont faits pour être exposés à internet, c’est même tout l’intérêt. Le tableau de bord d’administration sur le port 81 ne l’est pas : gardez-le sur le réseau local ou derrière son propre VPN, remplacez les identifiants par défaut immédiatement, et mettez à jour l’image à intervalle régulier.

Pour un ou deux services, Nginx Proxy Manager reste le chemin le plus rapide entre un docker compose up et une vraie adresse HTTPS ouvrable dans n’importe quel navigateur. Le jour où ajouter chaque conteneur à la main devient fastidieux, la découverte automatique par labels de Traefik commence à justifier sa configuration plus poussée, détaillée dans sa propre fiche.