Featured image of post Installation de Nginx Proxy Manager

Installation de Nginx Proxy Manager

Installation et configuration de Nginx Proxy Manager

Introduction

NPM (Nginx Proxy Manager) est une image Docker contenant le proxy inverse ‘Nginx’ et une interface WebUI permettant une configuration simple et convivial du serveur proxy. Il permet entre autres de gérer simplement les cerificats SSL via Let’s Encrypt.

Pour cette installation j’utilise l’image officielle qui est présente ici : NginxProxyManager

Le fichier compose.yaml

Voici le fichier compose.yaml à deposer dans le répertoire contenant vos piles (par exemple /opt/docker/projects/) ou à coller dans votre interface de gestion (Arcane, Dockge, Portainer…).


services:
  app:
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    container_name: npm
    environment:
      - TZ=Europe/Paris    
    ports:
      - 80:80   # Vous pouvez spécifier l'IP de l'Hote ; Par défaut 0.0.0.0
      - 81:81   # Port pour l'interface WebUI
      - 443:443
    volumes:
      - /opt/docker/data/npm:/data
      - /opt/docker/data/log:/data/logs   # Pour analyser les logs en dehors du container
      - /opt/docker/data/npm/letsencrypt:/etc/letsencrypt

Vous devrez adapter ce fichier à votre environnement de travail Docker. J’utilise le chemin /opt/docker/data/mon_container pour tous mes containers docker.

Le volume ‘/opt/docker/data/log’ me permet de visualiser et d’externalyser les logs produits par NPM pour qu’ils puissent être analysés par des outils tiers (fail2ban, reaction… etc).

Remarque : Vous pouvez rajouter l’adresse IP de votre hôte au niveau des ports pour restreindre l’accès à votre seul hôte (exemple : 192.168.x.x:80:80).

Une fois le fichier créer ; déployer l’image soit en ligne de commande : sudo docker compose up -d ; soit via votre interface de gestion.

Vous pouvez maintenant accèder à l’interface de NPM : http://votreip:81

Configuration

1er Lancement

Il faut dans un premier temps créer un compte Administrateur :

création du compte Administrateur

Une fois le compte créé, vous arrivez au niveau du tableau de Bord :

Tableau de bord

Création d’un certificat

NPM gère la création de certificat via Let’s Encrypt. Nous utiliserons comme exemple la méthode via DNS avec l’hébergeur OVH.



Création certificat - Etape 1

Une fois le choix sélectioné, nous arrivons sur l’écran de création du certificat pour votre domaine.

Création certificat - Etape 2

Je choisi mon hébergeur (Provider DNS) et je choisi mon domaine.

Remarque : J’utilise ici un wildcard ‘*’ pour générer un certificat pour tous les sous/sous domaines de mon domaine ‘subdomain.domain.fr’. Le wildcard permet de cacher les services derriere le Proxy et seul les personnes connaissants le lien complet (service.subdomain.domain.fr par exemple) pourront traverser le proxy.

Chaque hébergeur à sa propre procédure de création de certificat et les informations demandées sur l’écran précédant seront différents.

Pour OVH, il faut vous connecter et aller à cette adresse : OVH Creation Token

Vous devez remplir le formulaire tel quel :

Création certificat - Etape 3

Il faut utilisez pour chaque ligne le texte suivant : /domain/zone/*

Vous aurez en retour les 3 Tokens nécessaires à remplacer dans l’écran plus haut au niveau de la zone ‘Credentials File Content:

  • Application Key
  • Application Secret
  • Consumer Key

Une fois cela fait, vous pourrez voir vos certificats au niveau du tableau de bord :

Certificats

Création d’un hôte proxy

Le hôte proxy permet d’exposer de facon sécurisé votre service interne avec le monde extérieur. Il fait le lien entre une URL externe publique et votre service privé situé derriere votre serveur proxy.

Nous allons créér un hôte proxy en prenant comme exmple le nom de domaine “exemple.subdomain.domain.fr” :

Creation Hôte proxy - Etape 1

Il vous faudra compléter la zone ‘Forward’ de votre formulaire en ajoutant l’adresse IP de votres service interne, ainsi que son port.

Cocher aussi l’option “Block Common Exploits

On passe maintenant à l’onglet ‘SSL’ :

Creation Hôte proxy - Etape 2

Sélectionner le certificat associé à votre domaine et cocher les 4 options.

Une fois la validation du formulaire effectué ; votre service exposé apparaitra dans la liste des Hôtes proxy :

Creation Hôte proxy - Etape 3

Pour aller plus loin

Nous avons vus l’installation et la configuration de bases de NPM. Pour plus de sécurité et de personnalisations, il est nécessaire parfois de passer par l’édition manuelle des fichiers de configurations quand cela n’est pas possible par l’interface graphique (la personnalisation reste possible, mais est fortement limitée).

Nous verrons cela dans d’autres articles à paraitre sur le blog.

Généré avec Hugo
Thème Stack conçu par Jimmy