Il y a des applications que vous pourriez avoir envie d'ouvrir sur le web, mais cela ne se fait pas comme ça, sans un minimum de sécurité.
En HTTP, tout transite en clair, comme vos identifiants, par exemple. Vous conviendrez que ce n'est pas génial.
Il y a bien le certificat SLL auto-signé mais cela fait des alertes peu réjouissantes et ce n'est pas non plus la panacée niveau sécurité.
Reste le certificat SSL certifié et signé. C'est cette fonction que va remplir Nginx Proxy Manager, dit NPM pour les intimes, grâce à sa gestion du reverse proxy.
En tout cas c'est la base de la base même si je préfère de loin Cosmos qui va plus en profondeur pour la sécurité. Cela fera l'objet d'un prochain article et d'une vidéo car c'est un sacré morceau.
Mais revenons à nos proxies!
Que fait NPM?
⚡Caractéristiques
- Interface d'administration belle et sécurisée basée sur Tabler.
- Créez facilement des domaines de transfert, des redirections, des flux et des hôtes 404 sans rien connaître de Nginx.
- SSL gratuit en utilisant Let's Encrypt ou fournissez vos propres certificats SSL personnalisés.
- Listes d'accès et authentification HTTP de base pour vos hôtes.
- Configuration avancée de Nginx disponible pour les super utilisateurs.
- Gestion des utilisateurs, autorisations et journal d'audit.
Ouverture des ports sur votre routeur
Pour pouvoir générer des certificats SSL et fonctionner correctement, NPM a besoin d'avoir accès aux ports 80 et 443.
Il est de ce fait impératif que vous redirigiez ces deux ports vers l'IP locale de votre serveur.
Il y a tellement de routeurs que je ne saurais vous dire comment faire pour le votre. Ce n'est généralement pas bien compliqué. Une simple recherche dans votre moteur de recherche devrait vous donner la marche à suivre.
Attention, certains FAI exigent que vous fassiez la demander chez eux pour activer l'ouverture des ports avant de le faire sur votre routeur. Parfois cela se fait dans l'interface client de votre FAI, parfois il faut leur téléphoner. Renseignez-vous bien avant.
Faire pointer votre domaine vers votre IP publique
Autre point important, ajouter une entrée type A chez votre fournisseur de domaine qui pointe vers votre IP publique.
Il y a tellement de fournisseurs de nom de domaine que je ne peux pas les détailler, mais je vous donne un exemple avec OVH, c'est quasi similaire chez les autres.
Chez OVH, il faut se rendre dans la zone DNS de votre nom de domaine, cliquez sur Ajouter une entrée et choisir une entrée de type A:
Cliquez sur suivant et complétez comme sur le screenshot, ajoutez une * dans le sous domaine, votre IP publique dans Cible:
Une fois que c'est fait on valide en cliquant sur Suivant et pour terminer, on clique sur Valider.
Il faudra attendre la propagation complète de votre domaine. Pour vérifier ou cela en est, rendez-vous ici:
Dans le champ de recherche, entrez votre domaine:
Dans cet exemple j'ai mis ovh.com, ne vous inquiétez pas si certains pays comme le Pakistan ou la Chine ont une croix rouge. Tant que le reste est propagé, c'est bon, vous pouvez passer à la suite. Toute tentative de créer des certificats SLL avant que votre domaine ne soit propagé va vous mettre dans la merde. Soyez patient, c'est relativement rapide en général.
L'installation
- Créez votre docker-compose.yml:
nano docker-compose.yml
- Collez ça dedans:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /srv/appdata/npm/data:/data
- /srv/appdata/npm/letsencrypt:/etc/letsencrypt
- On installe l'application:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- Rendez-vous sur l'ip:port:
http://ip:81
Configurer NPM
Voici un tutoriel détaillé et en français expliqué par Zatoufly j'ai mis le timer de sorte à ce que ça prenne le relais une fois que vous avez lancé NPM pour la première fois.