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 126 vues)
0 0 vote
Note d'article
S’abonner
Notifier de
35 Commentaires
Inline Feedbacks
Voir tout

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

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

;)

De rien =)

Merci pour la découverte !

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 »

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.

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

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 »

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 »

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

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.

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 »

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 »

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 »

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 »

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 »

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 !

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 »

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 »

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… ^^