16 Docs
romain edited this page 2026-05-26 19:43:23 +00:00

Nginx Reverse Proxy Dashboard

Nginx Reverse Proxy Dashboard est tableau de bord et de gestion spécialement conçu pour être utiliser avec le conteneur Nginx Reverse Proxy que je maintien.

Il a volontaire été conçu sans base de données, ce qui explique que la configuration de celui-ci se fait exclusivement à travers des variables d'environnement avec Docker Compose ou par le biais de fichiers yml.

Dans cette documentation, je vais couvrir tout l'installation du Stack qui va vous permettre d'avoir un Reverse proxy basé sur Nginx complet.

Les fonctionalités de Nginx Reverse Proxy Dashboard

  • Monitoring du trafic basé sur VTS qui est inclus dans Nginx Reserve Proxy
  • Gestion des fichiers de configuration Nginx
    • Aperçu des fichiers de configuration
    • Aperçu des certificats SSL ( Type de certificat, domaine associé, validé)
    • Aperçu des logs en live (plus de besoin de tail -f depuis un terminal)
    • Synchronisation des fichiers de référence, ceci permet de mettre à jour les fichiers de configuration par défaut disponible le dépôt
    • Générateur de virtualhost
    • Déploiement depuis un dépôt Git des fichiers de configuration
    • Sauvegarde avec deux modes :
      • En local sur le serveur
      • Sur un dépôt Git dans une branche dédiée
  • Contrôle de Nginx
    • Test de configuration
    • Rechargement de la configuration
    • Gestion de cache static (suppression)
  • Intégrations
    • Crowdsec : visualisation des metrics et des decisions
    • GoAccess : Pour chaques fichiers de type : access_log, il est possible de lancer un conteneur et d'avoir des statiques de visites basés sur les fichiers de logs
    • GoDNS : permet de configurer un conteneur GoDNS pour gérer vos enregistrement dynamique (parfait pour un homelab)
    • SSL / Certbot : génération de certificat SSL basé sur le challenge HTTP

Certaines fonctionnalités ont été volontaire omises car celle-ci sont en cours de test

Pour le générateur de configuration et la génération SSL / Certbot, il est volontaire que le Dashbord ne touche pas aux fichiers de configuration. Une action manuelle est nécessaire.

Prérequis

Obligatoires

  • Avoir une machine Linux avec Docker et Docker Compose d'installés.
  • Le port 80 et 443 ne doivent pas être utilisé, ils seront dédié

Optionnels

  • Pour utiliser la fonctionnalité GeoIP (Pays, Ville et AS), vous devez avoir un compte sur MaxMind avec une clé d'API qui sera à renseigner.
  • Pour les DNS dynamique, vous devez avoir accès l'API de votre provider
  • Let's Encrypt DNS Challenge : dans la configuration seulement Cloudflare est proposé, vous devez avec un token d'accès à la zone DNS

Déploiement

Pour le déploiement, le simple est de passer par la ligne de commande ci-dessous, qui va cloner l'ensemble des fichiers dans votre dossier courant.

Par convention, je déploie mes conteneurs dans le dossier : /containers/<mon-stack> et vous optez pour un autre chemin, vous aurez un plus de modification à faire.

mkdir -p /containers/nginx-rproxy
cd /containers/nginx-rproxy
bash <(wget -qO- https://forge.rdr-it.com/romain/Docker-Compose/raw/branch/main/get.sh) Nginx-RProxy

Si préférer le faire manuellement, l'ensemble des fichiers se trouve ici : https://forge.rdr-it.com/romain/Docker-Compose/src/branch/main/Nginx-RProxy

Configuration rapide

Afin de limiter le nombre de fichiers compose pour déclarer les différents conteneurs, j'ai fais le choix d'utiliser les profiles dans le fichier docker-compose.yml.

Pour commencer, copier le fichier sample.env en le nommant .env

cp sample.env .env

Puis éditer le fichier :

nano .env

Pour commencer éditer les variables suivantes :

## Must be changed use : https://tools.rdr-it.com/#randgen - Format hex 32
NGINX_DASHBOARD_API_TOKEN=changeme-generate-with-openssl-rand-hex-32
NGINX_DASHBOARD_WEBHOOK_SECRET=changeme-generate-with-openssl-rand-hex-32
NGINX_DASHBOARD_SESSION_SECRET=changeme-generate-with-openssl-rand-hex-32

Ensuite, il faut configurer configurer le mot de passe du compte admin et l'activer.

nano nginx-dashboard/config/users.yml

Editer le paramètre password en indiant le mot de passe du compte (celui-ci sera chiffré en démarrage du conteneur) et passer le paramètre enabled à true.

users:
  - username: admin
    password: changeme-before-start
    role: admin
    name: Administrateur
    enabled: true

Pour finir cette configuration rapide, il faut ajouter créer un fichier docker-compose.override.yml qui va permettre de publier le port du Dashbord pour y accèder.

nano docker-compose.override.yml
services:
  nginx-dashboard:
    ports:
      - "3000:3000"

Cette configuration est choix volontaire, le but est de créer un virtualhost sur le reverse proxy pour accéder au Dashboard et gérer le SSL.

Démarrer les conteneurs :

docker compose --profile dash up -d

Si vous entrez seulement la commande docker compose up -d, seuls les services nginx et error-pages seront démarrés. Là aussi c'est un choix volontaire et vous permettre de choisir les services dont vous avez besoin.

Comment utiliser les profiles

Avant de passer à la configuration avancée des composants, je vous propose un petit focus sur l'utilisation des profiles.

Par défaut si aucun profile est passé dans la commande docker compose up seul les services nginx et error-pages seront démarrés.

Les services supplémentaires dans le stack ont tous deux profils :

  • un propre au service
  • all : qui permet de lancer tous les services

Pour lancer plusieurs services avec leur nom de profile :

docker compose --profile dash --profile geo up -d

Cette commande va me démarrer en plus les services nginx-dashboard et geoipupdate

Pour démarrer tous les services :

docker compose --profile all up -d

Accès au dashbord

Lancer un navigateur Internet et aller à l'adresse suivante : https://ip:port.

Sur la page de connexion :

  • Identifiant : admin
  • Mot de passe : celui configurer dans le fichier users.yml.

PB19009-20260526-0000