DOC
Accueil/ Projets/ VPS Hostinger - Stack ENGWE/ 03 - DNS + Reverse proxy (Nginx Proxy Manager) + HTTPS

03 - DNS + Reverse proxy (Nginx Proxy Manager) + HTTPS

Ici on relie tes sous-domaines à ton VPS, puis on met en place Nginx Proxy Manager (NPM) : c'est nginx, mais piloté par une interface web, avec les certificats HTTPS Let's Encrypt en quelques clics. Idéal pour ne pas éditer des fichiers de conf nginx à la main.


1. Créer les enregistrements DNS

Le domaine engwe-france.fr est géré chez Shopify ; on ne touche pas à la racine (elle sert ton site). On ajoute uniquement des sous-domaines qui pointent vers l'IP de ton VPS.

Dans l'éditeur DNS (Shopify → Paramètres → Domaines → gérer le DNS), crée un enregistrement A par service. Schéma retenu : des sous-domaines simples à un niveau de la forme <nom>-it, tous vers la même IP :

Type Nom (hôte) Valeur Service
A npm-it IP_DU_VPS Admin proxy (facultatif, on passe par tunnel SSH)
A n8n-it IP_DU_VPS n8n
A chat-it IP_DU_VPS Open WebUI
A data-it IP_DU_VPS NocoDB
A mongo-it IP_DU_VPS Mongo Express
A api-it IP_DU_VPS FastAPI
A portainer-it IP_DU_VPS Portainer (GUI Docker)
A uptime-it IP_DU_VPS Uptime Kuma (surveillance)

Pourquoi <nom>-it plutôt que <nom>.it ? Un sous-domaine à un seul niveau (n8n-it.engwe-france.fr) = un seul enregistrement A, mieux supporté par l'éditeur DNS de Shopify que les sous-sous-domaines. La racine engwe-france.fr reste intacte pour ton site.

La cohérence avec le reste : dans docker/.env, DOMAIN=engwe-france.fr. Les services répondront donc sur n8n-it.engwe-france.fr, etc.

Vérifier la propagation

Depuis ton PC (PowerShell), attends quelques minutes puis :

nslookup n8n-it.engwe-france.fr

L'IP renvoyée doit être celle du VPS. (La propagation peut prendre de quelques minutes à ~1 h.)

2. Lancer Nginx Proxy Manager

NPM fait partie de la stack (docker/docker-compose.yml). On va d'abord copier la stack et le démarrer - détaillé à l'étape suivante. Pour l'instant, sur le VPS, place-toi dans le dossier de la stack et lance uniquement NPM :

cd ~/stack          # là où tu as copié le dossier docker/ (voir étape 04)
cp .env.example .env && nano .env    # remplis les secrets (voir étape 04)
docker compose up -d nginx-proxy-manager
docker compose ps

3. Accéder à l'admin NPM via un tunnel SSH (sécurisé)

L'interface d'admin (port 81) n'est pas ouverte sur Internet (bonne pratique). On y accède par un tunnel SSH depuis ton PC. Dans PowerShell :

ssh -L 8181:localhost:81 engwe-seer@IP_DU_VPS

Laisse cette fenêtre ouverte, puis dans ton navigateur va sur :

http://localhost:8181

Identifiants par défaut (à changer immédiatement) :

  • Email : admin@example.com
  • Mot de passe : changeme

NPM te forcera à définir un vrai email + mot de passe fort au premier login.

4. Créer un « Proxy Host » par service

Pour chaque service, dans NPM : Hosts → Proxy Hosts → Add Proxy Host.

Onglet Details :

  • Domain Names : le sous-domaine, ex. n8n-it.engwe-france.fr
  • Scheme : http
  • Forward Hostname / IP : le nom du conteneur (ex. n8n)
  • Forward Port : le port interne du service (voir tableau ci-dessous)
  • Active Block Common Exploits et Websockets Support

Onglet SSL :

  • SSL Certificate : Request a new SSL Certificate
  • Active Force SSL + HTTP/2 Support
  • Coche I Agree to the Let's Encrypt Terms, mets ton email, Save

NPM obtient alors le certificat automatiquement. ✅

Tableau des cibles (Forward Hostname / Port)

Sous-domaine Forward Hostname Forward Port
n8n-it.engwe-france.fr n8n 5678
chat-it.engwe-france.fr open-webui 8080
data-it.engwe-france.fr nocodb 8080
mongo-it.engwe-france.fr mongo-express 8081
api-it.engwe-france.fr fastapi 8000
portainer-it.engwe-france.fr portainer 9000
uptime-it.engwe-france.fr uptime-kuma 3001

NPM et les services partagent le réseau Docker proxy, donc NPM peut joindre les conteneurs par leur nom (n8n, open-webui, …). Pas besoin d'IP.

5. Astuce : restreindre les accès sensibles

Pour Mongo Express et NocoDB, tu peux ajouter dans NPM une Access List (Hosts → Access Lists) avec authentification et/ou filtrage par IP, en plus du HTTPS. Associe-la ensuite au Proxy Host correspondant.


Vérifications de fin d'étape

  • https://n8n-it.engwe-france.fr s'ouvre avec un cadenas (certificat valide).
  • Pas d'alerte « connexion non sécurisée ».

➡️ Étape suivante : 04-lancer-la-stack.md