Nginx Proxy Manager est une image docker qui permet de mettre en place facilement un reverse-proxy. De plus il gère automatiquement les certificats Let’s encrypt.

En tâche préliminaires à ce tutoriel il faut faire la redirection des ports 443 et 80 de votre box vers votre machine qui serviras de serveur pour Nginx Proxy Manager. Pour moi je possède une Freebox la configuration se fait alors très simplement depuis l’interface web.

Il faut aussi faire la création des sous domaines auprès de votre registraire de domaine. Pour moi c’est OVH. Il faut donc créer les domaines et sous domaines que vous souhaiteriez faire passer par le reverse proxy. Ici plex.antoinesaludo.fr et ombi.antoinesaludo.fr sont redirigés vers antoinesaludo.fr qui est lui même redirigé sur mon IP.

Pour finir il faut créer un utilisateur avec les droits sur une base de données sql que le service utiliseras.

Ne pas oublier de cocher Créer une base portant son nom….

Passons maintenant à la mise en place du reverse proxy. Premièrement, pour mettre cette solution en place il faut créer un dossier data, un dossier letsencrypt et un fichier production.json qui contiendras les informations pour se connecter à la base de données.

vi production.json

{
  "database": {
    "engine": "mysql",
    "host": "db",
    "name": "npm",
    "user": "npm",
    "password": "npm",
    "port": 3306
  }
}

Il faut ensuite adapté ses données en fonction de celle en place. Le champ « host » correspond à l’IP de la machine contenant votre base de données précédemment créé.

/!\ Attention /!\ Le champs « engine » n’est pas à changer, même si notre base de données est une mariadb il faut laisser mysql. Le terme mariadb n’étant pas reconnu.

Il faut ensuite créer un container docker avec ces paramètres. Les ports 80 et 443 vont permettre de rendre accessible les sites web. Le port 81 est quand à lui utilisé pour l’interface web d’administration du service.

vi dockerNPM.sh

docker run -d -p 80:80 -p 443:443 -p 81:81 \
-v /docker/npm/data:/data \
-v /docker/npm/letsencrypt:/etc/letsencrypt \
-v /docker/npm/production.json:/app/config/production.json \
jc21/nginx-proxy-manager:latest

chmod +x dockerNPM.sh

sh dockerNPM.sh

Après avoir correctement adapter le script de sorte à ce que les dossiers et fichiers créés précédemment correspondent bien, il faut l’exécuter.

Lors du premier lancement il faut attendre que la base de données soit bien créer avant d’effectuer toute interaction avec la page de configuration accessible sur @IP:81 . Ce processus dure environ 10 minutes. Il est possible de suivre l’avancée en consultant les logs du container.

Les identifiants de base sont :

Email:    admin@example.com
Password: changeme

Une fois connecté il seras demandé de les changer.

Pour mettre en place le reverse-proxy rien de plus simple il faut se rendre dans le menu Hosts > Proxy Hosts :

Il faut ensuite ajouter un proxy avec Add Proxy Host :

Dans Domain Names il faut renseigner le domaine sur lequel on accéderas au site web. Par exemple : antoinesaludo.fr; plex.antoinesaludo.fr; ombi.antoinesaludo.fr dans mon cas.

Dans Scheme il faut spécifier comment l’accès se fais actuellement sur la machine cible. Forward Hostname / IP correspond à l’ip de la machine que l’on veut rendre accessible via l’URL et faire passer par le reverse proxy. Forward Port est quant à lui le port de base de la machine cible.

Les options suivantes sont à adapter en fonction des besoins. Il est conseillé d’activer Block Common Exploits.

Cette configuration terminé le site est maintenant accessible depuis l’extérieur en HTTP.

Pour le rendre accessible en HTTPS il faut se rendre dans l’onglet SSL :

Si un certificat n’est pas déjà présent il faut sélectionner Request a new SSL Certificate, Nginx Proxy Manager va donc maintenant mettre à jour le certificat avant qu’il arrive à expiration. Force SSL permet d’automatiquement faire les redirections HTTP en HTTPS. Il faut cliquer sur Save et attendre que Nginx Proxy Manager se charge de demander le certificat.

Le site est maintenant accessible en HTTPS avec votre nom de domaine.

Problèmes rencontrés :

Lors de la première connexion le formulaire de connexion me renvoyais l’erreur « Bad Gateway« .

Les causes de cette erreur sont multiple :

► Le fichier de configuration de la base de données est erroné.

► La base de données n’as pas été complètement importés.

Solution :

Il faut éteindre le container et corriger les informations de connexion à la base de données. Si celle-ci sont correct il faut supprimer les données renseigner dans la base de données npm et redémarrer le container.

Il est possible de suivre l’avancé de l’import de la base de données via les logs du container.

Sources :

https://github.com/jc21/nginx-proxy-manager

https://nginxproxymanager.com/

No responses yet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *