Comment j’ai installĂ© N8N sur mon VPS Debian avec Docker (+ SSL automatique)

par Déc 28, 2025Automatisation

🚀 N8N Open Source : Pourquoi j’ai choisi le self-host

N8N est un outil d’automatisation 100% open source. Ça veut dire : code accessible, self-host gratuit, aucune limite d’exĂ©cutions. Le rĂȘve, non ?

Pourtant, beaucoup commencent par le cloud hébergé officiel n8n.cloud. Pratique pour tester, mais :

  • Plan Starter : 20€/mois pour 2,500 exĂ©cutions/mois (vite atteint)
  • Plan Pro : 50€/mois pour 10,000 exĂ©cutions
  • Gros volumes ? Ça explose le budget…

Avec mes automations clients (synchronisations CRM, webhooks, traitements quotidiens), je dépassais facilement les 10,000 exécutions. Facture mensuelle qui monte, alors que le code est open source et self-hostable !

Ma décision : VPS Debian + Docker + N8N self-hosted.

Résultat aprÚs 6 mois :

  • ✅ ExĂ©cutions illimitĂ©es
  • ✅ CoĂ»t fixe : 6€/mois (VPS OVH)
  • ✅ ContrĂŽle total (donnĂ©es, config, nodes custom)
  • ✅ Performance : serveur dĂ©diĂ©, zĂ©ro throttling
  • ✅ Économie : ~600€/an vs cloud

Dans ce guide, je vous montre exactement comment reproduire mon setup. Temps d’installation : 30 minutes chrono.

Mais au-delà du coût, self-host N8N apporte des avantages stratégiques :

  • ✅ ContrĂŽle total : Vos donnĂ©es restent chez vous (RGPD friendly)
  • ✅ Performance : Serveur dĂ©diĂ©, pas de throttling
  • ✅ Personnalisation : Nodes custom, variables env illimitĂ©es
  • ✅ ÉvolutivitĂ© : Ajoutez d’autres services (PostgreSQL, Redis…)
  • ✅ Apprentissage : Vous maĂźtrisez votre stack DevOps

Dans ce guide, je vous montre exactement comment j’ai dĂ©ployĂ© N8N sur mon VPS Debian avec Docker et Nginx Reverse Proxy. Temps d’installation : 30 minutes chrono.

🐳 Docker et Docker Compose : Pourquoi on les utilise ?

Avant de plonger dans l’installation, clarifions deux outils essentiels.

Docker, c’est quoi ?

Docker = Conteneurs d’applications. Imagine une boĂźte qui contient N8N + toutes ses dĂ©pendances (Node.js, libs…). Cette boĂźte fonctionne partout : Ubuntu, Debian, Windows, Mac.

Avantages pour nous :

  • ✅ Installation simple : docker run au lieu de 50 commandes
  • ✅ Isolation : N8N ne pollue pas le systĂšme
  • ✅ Reproductible : mĂȘme config sur tous les serveurs
  • ✅ Updates faciles : docker pull pour mettre Ă  jour

Docker Compose, c’est quoi ?

Docker Compose = Chef d’orchestre. Au lieu de lancer N8N, Nginx, PostgreSQL avec 3 commandes sĂ©parĂ©es, on Ă©crit un fichier docker-compose.yml qui dit : « Lance ces 3 services ensemble avec ces configs ».

Exemple concret :

# Sans Docker Compose (galĂšre)
docker run -d --name n8n -p 5678:5678 -e N8N_HOST=... n8nio/n8n
docker run -d --name nginx -p 80:80 -p 443:443 nginx
docker run -d --name postgres -p 5432:5432 postgres

# Avec Docker Compose (propre)
docker-compose up -d
→ Tout dĂ©marre automatiquement ✹

Pas besoin d’ĂȘtre expert Docker pour suivre ce guide. On utilise des configs prĂȘtes Ă  l’emploi que vous copierez-collez. Simple et efficace ! đŸ’Ș

📋 PrĂ©requis techniques

Avant de commencer, assurez-vous d’avoir :

Serveur :

  • VPS Debian 11 ou 12 (Ubuntu fonctionne aussi)
  • 2 GB RAM minimum (4 GB recommandĂ©)
  • 20 GB stockage (pour Docker images + workflows)
  • AccĂšs SSH root

Domaine :

  • Un nom de domaine (ex: mondher.ch)
  • Sous-domaine configurĂ© (ex: automation.mondher.ch)
  • DNS pointant vers IP du VPS (A record)

Connaissances :

  • Commandes Linux de base (cd, ls, nano)
  • Notions Docker (pas besoin d’ĂȘtre expert)
  • SSH et accĂšs terminal

⚠ Important : Ce guide suppose que vous partez d’un VPS vierge. Si vous avez dĂ©jĂ  des services installĂ©s, adaptez les ports et configurations.

đŸ› ïž PrĂ©paration du serveur Debian

PremiÚre étape : préparer notre serveur. Connectez-vous en SSH :

ssh root@VOTRE_IP_VPS

1. Mettre Ă  jour le systĂšme

apt update && apt upgrade -y

2. Installer Docker

Docker va nous permettre de containeriser N8N et tous les services associés :

# Installer les dépendances
apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

# Ajouter la clé GPG officielle Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Ajouter le repository Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installer Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io

# Vérifier installation
docker --version

3. Installer Docker Compose

# Télécharger Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Rendre exécutable
chmod +x /usr/local/bin/docker-compose

# Vérifier
docker-compose --version

4. Configurer le firewall

# Installer ufw
apt install -y ufw

# Autoriser SSH (IMPORTANT !)
ufw allow 22/tcp

# Autoriser HTTP et HTTPS
ufw allow 80/tcp
ufw allow 443/tcp

# Activer le firewall
ufw enable

# Vérifier les rÚgles
ufw status

✅ Checkpoint : Docker installĂ©, firewall configurĂ©. Serveur prĂȘt pour le dĂ©ploiement !

🔐 Nginx Reverse Proxy : Le composant essentiel

Ici, on arrive au secret d’une installation pro : le reverse proxy.

Pourquoi un reverse proxy ?

PlutĂŽt que d’exposer N8N directement sur Internet (port 5678), on passe par Nginx Reverse Proxy. Avantages Ă©normes :

  • 🔒 SSL automatique : Let’s Encrypt gĂ©rĂ© par Nginx (HTTPS gratuit)
  • ⚡ Performance : Cache, compression, load balancing
  • đŸ›Ąïž SĂ©curitĂ© : N8N n’est pas exposĂ© directement
  • 🚀 Multi-apps : HĂ©bergez plusieurs services sur le mĂȘme VPS (N8N, WordPress, API…)
  • 🎯 Domaines propres : automation.mondher.ch au lieu de mondher.ch:5678

J’utilise Nginx Proxy Manager, une interface web qui rend la config ultra-simple (pas besoin de toucher aux fichiers Nginx).

Installation Nginx Proxy Manager

Créez un dossier pour vos services Docker :

mkdir -p /opt/docker
cd /opt/docker

Créez le fichier docker-compose.yml pour Nginx Proxy Manager :

nano docker-compose-npm.yml

Collez cette configuration :

version: '3.8'

services:
  nginx-proxy-manager:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'  # Interface admin
    environment:
      DB_SQLITE_FILE: "/data/database.sqlite"
    volumes:
      - ./npm-data:/data
      - ./npm-letsencrypt:/etc/letsencrypt
    networks:
      - proxy

networks:
  proxy:
    driver: bridge

Lancez Nginx Proxy Manager :

docker-compose -f docker-compose-npm.yml up -d

AccĂ©dez Ă  l’interface web : http://VOTRE_IP_VPS:81

Login par défaut :

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

⚠ Changez immĂ©diatement l’email et le mot de passe !

🐳 DĂ©ploiement N8N avec Docker Compose

Maintenant qu’on a notre reverse proxy, dĂ©ployons N8N.

Dans /opt/docker, créez un nouveau fichier :

nano docker-compose-n8n.yml

Configuration N8N optimisée :

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - '5678:5678'
    environment:
      - N8N_HOST=automation.mondher.ch
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://automation.mondher.ch/
      - GENERIC_TIMEZONE=Europe/Paris
      - N8N_ENCRYPTION_KEY=VOTRE_CLE_SECRETE_32_CARACTERES
    volumes:
      - ./n8n-data:/home/node/.n8n
    networks:
      - proxy

networks:
  proxy:
    external: true

⚠ GĂ©nĂ©rez une clĂ© d’encryption unique :

openssl rand -base64 32

Remplacez VOTRE_CLE_SECRETE_32_CARACTERES par le résultat.

Lancez N8N :

docker-compose -f docker-compose-n8n.yml up -d

Vérifiez que le container tourne :

docker ps

Vous devriez voir n8n et nginx-proxy-manager actifs.

🔒 Configuration SSL automatique

Retournez sur Nginx Proxy Manager (http://VOTRE_IP:81).

Étapes :

  1. Hosts → Proxy Hosts → Add Proxy Host
  2. Remplissez :
    • Domain Names : automation.mondher.ch
    • Scheme : http
    • Forward Hostname/IP : n8n (nom du container)
    • Forward Port : 5678
    • ☑ Block Common Exploits
    • ☑ Websockets Support (IMPORTANT pour N8N !)
  3. Onglet SSL :
    • SSL Certificate : Request a new SSL Certificate
    • ☑ Force SSL
    • ☑ HTTP/2 Support
    • Email : votre email
    • ☑ I Agree to Let’s Encrypt TOS
  4. Save

Nginx Proxy Manager va automatiquement :

  • ✅ GĂ©nĂ©rer le certificat Let’s Encrypt
  • ✅ Configurer le reverse proxy
  • ✅ Rediriger HTTP → HTTPS
  • ✅ Renouveler le certificat auto (tous les 90 jours)

✅ Checkpoint : AccĂ©dez Ă  https://automation.mondher.ch → N8N avec HTTPS fonctionne !

đŸ›Ąïž SĂ©curitĂ© et maintenance

1. Activer l’authentification N8N

Ajoutez ces variables dans docker-compose-n8n.yml :

environment:
  - N8N_BASIC_AUTH_ACTIVE=true
  - N8N_BASIC_AUTH_USER=votre_user
  - N8N_BASIC_AUTH_PASSWORD=votre_password_securise

Redémarrez :

docker-compose -f docker-compose-n8n.yml down
docker-compose -f docker-compose-n8n.yml up -d

2. Backups automatiques

Vos workflows sont dans /opt/docker/n8n-data. Script backup quotidien :

#!/bin/bash
# /root/backup-n8n.sh

tar -czf /root/backups/n8n-$(date +%Y%m%d).tar.gz /opt/docker/n8n-data
find /root/backups -name "n8n-*.tar.gz" -mtime +7 -delete

Cron quotidien (2h du matin) :

crontab -e
0 2 * * * /root/backup-n8n.sh

3. Updates réguliers

# Update N8N
cd /opt/docker
docker-compose -f docker-compose-n8n.yml pull
docker-compose -f docker-compose-n8n.yml up -d

# Update Nginx Proxy Manager
docker-compose -f docker-compose-npm.yml pull
docker-compose -f docker-compose-npm.yml up -d

🔧 Problùmes courants et solutions

❌ « 502 Bad Gateway »

Cause : N8N container pas démarré ou Websockets désactivés

Solution :

docker logs n8n
# Vérifiez que Websockets Support est coché dans Nginx Proxy Manager

❌ SSL ne se gĂ©nĂšre pas

Cause : DNS pas encore propagé ou port 80/443 bloqués

Solution :

# Vérifiez DNS
nslookup automation.mondher.ch

# Vérifiez firewall
ufw status

❌ Webhooks ne fonctionnent pas

Cause : WEBHOOK_URL mal configurée

Solution : Vérifiez WEBHOOK_URL=https://automation.mondher.ch/ (avec trailing slash !)

📋 Logs utiles

# Logs N8N
docker logs -f n8n

# Logs Nginx Proxy Manager
docker logs -f nginx-proxy-manager

# Vérifier containers
docker ps -a

🎯 Conclusion : N8N self-hosted, le game-changer

En 30 minutes, vous venez de déployer une infrastructure automation professionnelle :

  • ✅ N8N avec exĂ©cutions illimitĂ©es
  • ✅ HTTPS automatique via Let’s Encrypt
  • ✅ Reverse proxy Ă©volutif (ajoutez d’autres apps facilement)
  • ✅ CoĂ»t : 6€/mois au lieu de 20€

Prochaines étapes pour aller plus loin :

  1. Ajouter PostgreSQL pour meilleures performances
  2. Configurer Redis pour le cache
  3. Créer des workflows de monitoring (uptime, alertes)
  4. Connecter N8N Ă  vos outils (Make, Airtable, Notion…)

Depuis que j’ai migrĂ© sur mon VPS, j’ai Ă©conomisĂ© +600€ en 1 an tout en gagnant en flexibilitĂ©. Mes clients apprĂ©cient aussi le fait que leurs donnĂ©es restent sous contrĂŽle.

🚀 Besoin d’aide pour votre automatisation ?

Je partage avec vous mes workflows N8N, astuces Docker et stratégies automatisation dans ma newsletter.

Recevoir les tips automation

Vous avez dĂ©ployĂ© N8N en suivant ce guide ? Partagez votre expĂ©rience en commentaire ou contactez-moi ! đŸ’Ș

Articles similaires

Aucun résultat

La page demandée est introuvable. Essayez d'affiner votre recherche ou utilisez le panneau de navigation ci-dessus pour localiser l'article.