Nginx-Proxy-Manager : reverse proxy Nginx + SSL via interface Web [NOOB]

Docker nécessite souvent, pour faire propre et simple, d’utiliser une solution globale de reverse proxy. Ces dernières utilisant plutôt Nginx qu’Apache.

La solution la plus connue est sans doute Traefik, que j’ai utilisé après longtemps avoir fait tourner le couple JWilder/Nginx-proxy & JrCs/letsencrypt-nginx-proxy-companion pour la partie Lets Encrypt.

Nginx-Poxy-Manager de jc21 est un petit nouveau sur le marché. Avec un peu de recul, et pour une utilisation basique de Docker, je le trouve plus simple que les autres solutions. Enfin du moins plus abordable notamment du fait de son interface graphique qui permet de créer des reverses, avec ou sans SSL (Lets Encrypts, perso, autre) et d’ajouter des paramètres Nginx (par exemple l’authentification).

L’installation est simple et peut se faire via un docker-compose.yml. Il nécessite une base de données SQL, dans mon exemple je prend MariaDB.

version: "3"
services:
app:
image: jc21/nginx-proxy-manager:2
restart: always
container_name : nginx-proxy-manager
ports:
- 80:80
- 81:81
- 443:443
volumes:
- /home/aerya/docker/nginx-proxy-manager/config.json:/app/config/production.json
- /home/aerya/docker/nginx-proxy-manager/data:/data
- /home/aerya/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: mariadb
restart: always
container_name : mariadb
environment:
MYSQL_ROOT_PASSWORD: "unmotdepassedelamortquitue"
MYSQL_DATABASE: "nginxproxymanagertest"
MYSQL_USER: "nginxproxymanagertestinguser"
MYSQL_PASSWORD: "unautremotdepassedelamortquitue"
volumes:
- /home/aerya/docker/mariadb/data/mysql:/var/lib/mysql

Et il faudra aussi compléter son fichier de configuration

/home/aerya/docker/nginx-proxy-manager/config.json
{
"database": {
"engine": "mysql",
"host": "mariadb",
"name": "nginxproxymanagertest",
"user": "nginxproxymanagertestinguser",
"password": "unautremotdepassedelamortquitue",
"port": 3306
}
}

Bien évidemment pour chaque container Docker qu’on souhaite utiliser via un reverse-proxy il convient de créer un domaine ou sous-domaine adéquate chez son gestionnaire de domaines. Le plus courant étant de créer un sous-domaine du genre « Plex » vers l’IP de son serveur.

EDIT 06/02/19 : le projet continue dévoluer et gère maintenant le HTTP/2 ainsi que les redirections SSL.

EDIT 21/02/19 : ajout de HSTS pour domaine et sous-domaines

L’ajout d’un reverse se fait en quelques clics : Add Proxy Host, entrez votre sous-domaine, le port configuré dans votre Docker, si vous voulez un SSL et, éventuellement, une authentification Nginx. Bien évidemment pas d’auth avec Plex, c’est qu’un exemple…

Pour pouvoir ajouter une authentification vous devez créer le fichier indiqué dans les paramètres : /data/htpassword/plex.upandclear.org

Le /data correspond à /home/aerya/docker/nginx-proxy-manager/data:/data, comme nous l’avons vu (ou pas !) dans le docker-compose.yml du début.

Du coup pour créer votre utilisateur:mot_de_passe (chiffré) vous pouvez vous servir de ce site. Il convient enfin d’écrire ces infos dans un fichier « plex.upandclear.org » dans /home/aerya/docker/nginx-proxy-manager/data

Voilà, je n’ai pas trouvé plus accessible pour ceux qui ne sont pas à l’aise sur Linux :)

(4 925 vues)
S’abonner
Notifier de
36 Commentaires
Inline Feedbacks
Voir tout
spider1163
Membre
20/09/2018 10:55

C’est un super projet, merci pour la découverte !

B3nJ
Invité
20/09/2018 11:11

Bonjour, je pense qu’il y à une coquille dans ton tuto.

« Et il faudra aussi compléter son fichier de configuration

/home/aerya/docker/nginx-proxy-manager/PRODUCTION.SON »

Je pense que le fichier a créer c’est config.json et non pas production.json

;)

Benjamin Le Dizes
Invité
Répondre à  Aerya
20/09/2018 20:36

De rien =)

Cyprien
Invité
25/09/2018 19:08

Merci pour la découverte !

B3nJ
Invité
14/11/2018 18:47

Bonsoir, après plusieurs jours de test j’ai trouvé ce petit programme fort sympathique. Cependant je ne suis pas très doué avec nginx et je cherchais à faire en sorte que mes application ne soit pas disponible sur ipduserver:5000 par exemple. N’y a-t-il pas une ligne à rajouté dans les paramètre sur nginx pour rendre les application inaccessible via numéro de… Lire la suite »

B3nJ
Invité
Répondre à  Aerya
26/11/2018 14:23

Merci de ta réponse, mais en utilisant le tuto, on fait bien de la redirection d’un port vers un ndd. Et donc si je ne publie pas de port, comment je lie mes applications, à mon ndd.

lolo
Invité
01/01/2019 18:38

Salut Aerya faut-il installer nginx et mariadb et php le fichier de configuration est à placer dans /home/aerya/docker/nginx-proxy-manager/config.json donc dans le config.json si je comprend bien
car quand je vais sur mon ip sa me dis You’ve successfully started the Nginx Proxy Manager mais quand je vais sur mon ip :81 page blanche

lolo
Invité
Répondre à  Aerya
01/01/2019 20:26

Merci Aerya, ça fonctionne super , si je veux installer wordpress à la racine de mon nom de domaine il faut que j’installe nginx pour avoir le www dans var ou alors ça se passe autrement car installer un site wordpress avec nginx je sais faire mais avec Nginx-Proxy-Manager je sais pas si ça se passe autrement encore une question… Lire la suite »

lolo
Invité
Répondre à  Aerya
07/01/2019 19:51

Merci Aerya, j’ai commencé à tout installé en docker aussi Nginx Poxy Manager fonctionne plutôt bien à part avec wordpress une erreur s’affiche pour le faire passer avec ssl , en http pas de souci ,aussi si je veux pas que les ports s’affiche derriere mon wordpress il faut que je fais un redirection hosts avec juste mon nom de… Lire la suite »

lolo
Invité
Répondre à  Aerya
08/01/2019 17:01

Merci Aerya
d’avoir pris le temps de répondre 👍

XxS3BxX
Invité
22/08/2019 01:26

Bonjour aerya j’essaie d’installer ceci mais sans sucés dois je lancer le docker compose avant de faire le config.json pour éditer le config.json sous débian c’est bien la commande « nano » je suis un peu perdu.

Vendetta90
Invité
20/09/2019 13:47

Salut Aerya. Tout d’abord, merci pour la découverte. J’adore tes tutos, toujours aussi clairs et instructifs. Malgré tout, je n’arrive pas à faire fonctionner ce p*** de reverse proxy. Je ne pense pas que ce soit celui-ci particulièrement car j’ai pas réussi à faire fonctionner non plus Traefik mdr. Je dois rater un truc, mais je ne vois pas quoi.… Lire la suite »

Vendetta90
Invité
Répondre à  Aerya
21/09/2019 19:44

Du coup, je suis passé directement sur mon ptit serveur … après tout, ce n’est que du Docker, je risque pas de tout casser (et j’ai pris un snapshot lol). Alors, pour le port 80, j’ai une belle page : Congratulations! You’ve successfully started the Nginx Proxy Manager. If you’re seeing this site then you’re trying to access a host… Lire la suite »

Vendetta90
Invité
Répondre à  Aerya
23/09/2019 20:33

Merci pour ton aide Aerya. J’ai réussi à le faire fonctionner en modifiant le config.json. Dans la partie « host », j’ai dû mettre directement l’adresse du conteneur de la BDD fournit par le bridge Docker (en 172.17.x.x). Il semble que le nom d’hôte ne soit pas résolu, mais je ne sais pas encore pourquoi… J’ai cette ligne dans les logs du… Lire la suite »

piolet
Invité
10/11/2019 22:20

Bonjour, J’ai suivi ce tuto super sympa, mais j’ai un soucis. Si je désactive tout ce qui est lié à https (le « scheme » et le certificat fraichement généré), j’arrive bien sur ma page en http (donc mon container fonctionne bien). Dès que je repasse en https et avec le certificat, j’ai un bon ERR_CONNECTION_REFUSED sur mon domaine en https. Côté… Lire la suite »

Jihefge
Invité
03/05/2020 21:13

Hello, j’utilise actuellement le couple nginx-proxy avec le companion letsencrypt. Le souci que je rencontre est que je ne peux pas modifier le fichier de conf de nginx. Donc, je ne peux pas rajouter une entrée correspondante à une autre machine de mon réseau, je suis cantonné aux containers hébergés sur la même machine. De ce que je comprends, nginx-proxy-manager… Lire la suite »

jihefge
Invité
Répondre à  Aerya
12/05/2020 17:27

Hello,
je te confirme que tout fonctionne niquel. J’ai donc installé nginx-proxy-manager en container, et je peux rediriger vers d’autres VMs sans souci. Merci pour l’article !

superboki
Invité
07/05/2020 00:23

Hello Aerya J’ai voulu faire quelques chose de propre sur mon serveur maison et la solution nginx proxy est parfaite donc merci pour le tuto :) J’ai une machine sous OpenMediaVault5 sur laquelle j’ai nginx proxy manager d’installer J’ai une autre machine sous debian ou j’ai mes applis d’installé (sickchill,plex,rutorrent+vpn, autre…) J’ai réussi à tout rediriger comme je l’entend sauf…… Lire la suite »

superboki
Invité
Répondre à  Aerya
07/05/2020 00:48

Elles sont déjà décochées… là en gros j’ai : domaine name : torrent.mondomaine.com scheme https forward hostname/ip : 192.168.1.ipdemamachine forward port 443 cache assets / block common exploits / websockets support : tous desactivés j’ai demandé un ssl Force SSL activé HTTP/2 support activé HSTS enable désactivé HSTS Subdomaine désactivé . et en custom nginx configuration j’ai ajouté ca pour… Lire la suite »

superboki
Invité
Répondre à  Aerya
15/05/2020 10:35

hello et à mon tour de mettre trois plombes à repondre…
J’ai test avec mondedie/rutorrent et ca fonctionne plutot pas mal, sauf que le statut du port reste en « inconnu » et la copie vers avec filemanager se lance mais ne copie rien… ^^

Fred
Invité
Répondre à  Aerya
07/01/2022 11:55

Bonjour à tous Très bon tuto merci à tous J’ai un Microserver Gen8 chez moi avec Proxmox en vue du remplacement de mon NAS Qnap. N’ayant pas d’IP fixe j’ai mis en place via NOIP une redirection qui arrive sur le serveur Nginx-Proxy manager. Je n’arrive pas à installer le HTTPS via letsencrypt. Pour info j’ai mis en place un… Lire la suite »