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.

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 :)


(453 vues)

9
Poster un Commentaire

4 Fils de commentaires
5 Réponses de fil
4 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
4 Auteurs du commentaire
  S’abonner  
Notifier de
spider1163

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

B3nJ

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

;)

Cyprien

Merci pour la découverte !

B3nJ

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 »