By Walid ETTAYEB

Nginx est un serveur web connu et un reverse proxy utilisé pour acheminer le trafic et le rediriger vers un autre serveur. La configuration de Nginx en tant que reverse proxy peut prendre du temps et être source d'erreurs et de mauvaises configurations.

Ce guide vous montrera comment mettre en place et utiliser Nginx Proxy Manager pour une gestion et une configuration plus faciles.

Qu'est-ce que le Nginx Proxy Manager ?

Nginx proxy manager (NPM) est un système de gestion de reverse proxy qui fonctionne sur Docker. NPM est basé sur un serveur Nginx et fournit aux utilisateurs une interface web propre et efficace pour une gestion de la configuration plus simple. L'outil est facile à configurer et ne nécessite pas connaissances approfondies sur Nginx ou les certificats SSL. NPM* est un outil open-source maintenu par des développeurs du monde entier. Il est bien adapté aux petits environnements de serveur et aux environnements de lab.

Installation de docker & docker-compose

Nginx Proxy Manager s'exécute en tant que conteneur Docker ; il faut donc que Docker et docker-compose soient installés sur le serveur. Pour installer Docker sur Ubuntu ou debian, vous pouvez utiliser cette commande :

sudo apt update && sudo apt dist-upgrade -y
sudo apt install docker.io docker-compose -y

Déployer NPM sur Docker

Pour déployer le Nginx Proxy Manager, nous devons créer un fichier docker-compose pour exécuter Docker et initialiser le conteneur. Je vous recommande vivement de créer le fichier docker-compose dans un répertoire pour lequel vous disposez de toutes les permissions.

nano docker-compose.yml

Ensuite, ajoutez les lignes suivantes au fichier, enregistrez et fermez.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

Enfin, exécutez cette commande pour lancer le conteneur :

docker-compose up -d

Accès à l'interface graphique de NPM

Vous pouvez vous connecter à l'interface en utilisant l'adresse IP et le port spécifiés dans le fichier docker-compose. Dans notre cas, le port 81.

Le login et le mot de passe par défaut sont :

Username : [email protected]
Password : changeme

Lors de la première connexion, vous devrez mettre à jour les identifiants de l'administrateur.

Une fois que vous aurez mis à jour tous les détails de l'utilisateur, vous accéderez au tableau de bord principal à partir duquel vous pourrez configurer vos hôtes proxy :

Utilisation de NPM

Après avoir installé et vérifié que Nginx Proxy Manager est en cours d'exécution, nous pouvons ajouter un hôte proxy pour exposer un service en cours d'exécution sur le serveur.  

Hosts > Proxy Hosts > Add Proxy Host

Sélectionnez le mode de fonctionnement, par exemple HTTP ou HTTPS. Si le service que vous souhaitez exposer ne prend pas en charge le trafic HTTPS, choisissez HTTP. Ensuite, ajoutez les noms de domaine, le nom d'hôte Forward et l'IP. Vous pouvez également sélectionner Bloquer les exploits courants pour plus de sécurité.

Une fois que vous avez exposé le service, essayez d'y accéder en utilisant le nom d'hôte. Ce service devrait être accessible. Vous pouvez également gérer le proxy dans la liste des hôtes du proxy.

Configuration des certificats SSL

NPM vous permet également de provisionner des certificats SSL sur différents noms de domaine. Avant d'ajouter un nom de domaine à la provision SSL, assurez-vous que le domaine pointe vers le serveur proxy NPM.

Naviguez jusqu'à SSL certificates, et cliquez sur Add SSL certificate. Fournissez les noms de domaine et l'adresse électronique pour Let's Encrypt. Enfin, acceptez les conditions de service et enregistrez.

Cela permettra de créer un nouveau certificat SSL.

Conclusion

Grâce à ce tutoriel, vous allez pouvoir installer et déployer Nginx Proxy Manager sur un serveur Ubuntu exécutant Docker.

Walid ETTAYEB • 36 Articles

Passionné par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

View Articles