n8n : guide complet pour l'auto-hébergement en 2026

n8n : guide complet pour l'auto-hébergement en 2026

n8n : guide complet pour l'auto-hébergement en 2026

n8n est une plateforme d'automatisation de workflows open source qui permet de connecter des API, des services et des applications sans écrire de code — ou presque. Contrairement à Zapier ou Make, n8n peut être auto-hébergé, offrant un contrôle total sur les données et une flexibilité sans limite.

Ce guide détaille l'installation via Docker, la configuration avancée, la sécurisation de l'instance et la création de premiers workflows.

Pourquoi auto-héberger n8n

L'auto-hébergement de n8n présente plusieurs avantages décisifs :

  • Contrôle des données : aucune information ne transite par un serveur tiers
  • Coût réduit : pas d'abonnement mensuel, seul le serveur est à payer
  • Flexibilité illimitée : nombre d'exécutions non plafonné, nodes personnalisés
  • Personnalisation : accès complet à la configuration et aux nodes custom
  • Évolutivité : scale horizontal possible avec n8n clustering

Prérequis techniques

Avant de commencer l'installation, vérifier les prérequis suivants :

Composant Minimum Recommandé
RAM 1 Go 4 Go
CPU 1 vCPU 2 vCPU
Disque 10 Go SSD 50 Go SSD
Docker 20.10+ Dernière version
Docker Compose v2+ Dernière version

Un serveur VPS (OVH, Hetzner, DigitalOcean) ou une machine locale sous Linux (Ubuntu 22.04/24.04 recommandé) convient parfaitement.

Installation avec Docker

Méthode 1 : Docker Compose (recommandée)

Créer un fichier docker-compose.yml :

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=VotreMotDePasseSecurise
      - N8N_HOST=n8n.votredomaine.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.votredomaine.com/
      - GENERIC_TIMEZONE=Europe/Paris
      - TZ=Europe/Paris
      - N8N_PAYLOAD_SIZE_MAX=64
      - NODE_FUNCTION_ALLOW_EXTERNAL=axios,moment
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n-net

volumes:
  n8n_data:
    driver: local

networks:
  n8n-net:
    driver: bridge

Lancer l'instance :

docker compose up -d

Méthode 2 : Docker CLI

docker run -d \
  --name n8n \
  --restart unless-stopped \
  -p 5678:5678 \
  -e N8N_BASIC_AUTH_ACTIVE=true \
  -e N8N_BASIC_AUTH_USER=admin \
  -e N8N_BASIC_AUTH_PASSWORD=VotreMotDePasseSecurise \
  -e N8N_HOST=n8n.votredomaine.com \
  -e N8N_PROTOCOL=https \
  -e GENERIC_TIMEZONE=Europe/Paris \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n:latest

Méthode 3 : avec une base de données PostgreSQL

Pour une utilisation en production, PostgreSQL est fortement recommandé :

version: "3.8"

services:
  postgres:
    image: postgres:16-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=VotrePasswordDB
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n-net

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    depends_on:
      - postgres
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=VotrePasswordDB
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=VotreMotDePasseSecurise
      - N8N_HOST=n8n.votredomaine.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.votredomaine.com/
      - GENERIC_TIMEZONE=Europe/Paris
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n-net

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n-net:
    driver: bridge

Configuration et sécurisation

Reverse proxy avec Nginx + SSL

Installer Certbot et Nginx :

sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx

Configuration Nginx (/etc/nginx/sites-available/n8n) :

server {
    listen 80;
    server_name n8n.votredomaine.com;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        proxy_cache off;
        chunked_transfer_encoding off;
    }
}

Activer le SSL :

sudo certbot --nginx -d n8n.votredomaine.com

Variables d'environnement essentielles

Variable Description Valeur recommandée
N8N_ENCRYPTION_KEY Clé de chiffrement des credentials Chaîne aléatoire 32+ chars
EXECUTIONS_DATA_PRUNE Purge auto des exécutions true
EXECUTIONS_DATA_MAX_AGE Âge max des exécutions (heures) 168 (7 jours)
N8N_PAYLOAD_SIZE_MAX Taille max des payloads (Mo) 64
N8N_METRICS Activer les métriques Prometheus true
N8N_DIAGNOSTICS_ENABLED Télémétrie false (privé)

Génération d'une clé de chiffrement

openssl rand -hex 32

Ajouter cette valeur dans le docker-compose.yml :

- N8N_ENCRYPTION_KEY=la_cle_generee_ici

Important : ne jamais changer cette clé après le premier démarrage. Les credentials existants deviendraient illisibles.

Créer son premier workflow

Workflow 1 : notification Slack à chaque nouvelle ligne Google Sheets

  1. Se connecter à l'interface n8n sur https://n8n.votredomaine.com
  2. Cliquer sur "New Workflow"
  3. Ajouter un node Google Sheets Trigger et configurer le spreadsheet et la feuille à surveiller
  4. Ajouter un node Slack et sélectionner l'action "Send Message"
  5. Mapper les colonnes du Sheets dans le message Slack
  6. Cliquer sur "Test Workflow" puis "Active"

Workflow 2 : synchronisation automatique entre deux API

Ce workflow illustre la puissance d'n8n pour connecter des systèmes :

[Webhook] → [HTTP Request - API Source] → [Set Node - Transformation] → [HTTP Request - API Cible] → [Response]
  1. Webhook : point d'entrée pour déclencher le workflow
  2. HTTP Request (source) : récupérer les données depuis l'API source (GET)
  3. Set : transformer et filtrer les données
  4. HTTP Request (cible) : envoyer les données transformées vers l'API cible (POST/PUT)
  5. Respond to Webhook : renvoyer un accusé de réception

Workflow 3 : scraping et stockage automatisé

[Cron Trigger - Quotidien] → [HTTP Request - Page Web] → [HTML Extract] → [Code Node - Parsing] → [PostgreSQL - Insert] → [Slack - Notification]

Ce workflow tourne automatiquement chaque jour, extrait des données d'une page web, les structure et les stocke en base de données.

Nodes essentiels à connaître

n8n propose plus de 400 nodes intégrés. Voici les plus utiles :

  • Webhook : déclencher un workflow via HTTP
  • HTTP Request : appeler n'importe quelle API REST
  • Code Node : exécuter du JavaScript personnalisé
  • IF/Switch : logique conditionnelle
  • Set : transformer les données
  • Merge : combiner plusieurs flux de données
  • Loop : itérer sur des listes
  • Wait : mettre en pause l'exécution
  • Error Trigger : capturer les erreurs globales
  • Sub-Workflow : appeler un workflow depuis un autre

Sauvegarde et maintenance

Sauvegarde automatique

Ajouter un cron job sur le serveur hôte :

# Sauvegarder tous les jours à 3h du matin
0 3 * * * docker exec n8n-postgres pg_dump -U n8n n8n | gzip > /backups/n8n_$(date +\%Y\%m\%d).sql.gz
# Supprimer les backups de plus de 30 jours
0 4 * * * find /backups -name "n8n_*.sql.gz" -mtime +30 -delete

Restauration

gunzip < /backups/n8n_20260414.sql.gz | docker exec -i n8n-postgres psql -U n8n n8n

Mise à jour

docker compose pull
docker compose up -d

Vérifier les notes de version de n8n avant chaque mise à jour majeure.

Surveillance

Activer les métriques Prometheus et configurer Grafana :

- N8N_METRICS=true

Endpoint : https://n8n.votredomaine.com/metrics

FAQ

n8n auto-hébergement est-il vraiment gratuit ?

Oui, n8n est sous licence "Fair-code" (sustainable use). L'auto-hébergement est gratuit pour un usage interne. Seule l'utilisation d'n8n comme service commercial (SaaS) nécessite une licence payante. Tous les nodes intégrés sont disponibles sans limitation d'exécutions.

Quelles sont les différences entre n8n et Zapier ?

n8n offre un contrôle total sur les données (auto-hébergement), un nombre d'exécutions illimité, la possibilité de créer des nodes personnalisés en JavaScript, et un coût réduit au seul serveur. Zapier propose une interface plus aboutie mais limite les exécutions selon le plan et les données transitent par leurs serveurs.

Comment ajouter des nodes personnalisés ?

Créer un fichier JavaScript dans le dossier ~/.n8n/custom/ ou utiliser la variable NODE_FUNCTION_ALLOW_EXTERNAL. Pour des nodes complets, n8n propose un template de node personnalisé. Le node doit exporter une classe avec les méthodes execute et description.

Est-il possible de scalabilité horizontalement n8n ?

Oui, depuis la version 1.0, n8n supporte le mode "queue mode" avec Redis pour le scaling horizontal. Plusieurs instances n8n peuvent traiter les workflows en parallèle, idéal pour les charges élevées. La configuration requiert un broker de messages (Redis ou RabbitMQ).

Docker est-il obligatoire pour auto-héberger n8n ?

Non, n8n peut être installé directement avec Node.js (npm install -g n8n), mais Docker simplifie considérablement la gestion des dépendances, les mises à jour et l'isolation. Docker est la méthode recommandée par les mainteneurs et la communauté.


Publié le 14 avril 2026 par My Integration.

blog.share

7 min de lecture