n8n est un outil d’automatisation de workflows que l’on peut utiliser dans le cloud de l’éditeur ou héberger sur sa propre machine. Pour installer n8n avec Docker, la documentation officielle propose plusieurs méthodes, et elle annonce qu’à partir de n8n 3.0, prévu pour octobre 2026, l’outil ne sera plus distribué que par Docker.
Ce tutoriel s’adresse aux personnes à l’aise avec un terminal qui veulent héberger n8n sur un serveur Linux, avec un nom de domaine et le HTTPS. Il suit le guide Docker Compose de n8n jusqu’au premier compte, puis couvre la mise à jour, la sauvegarde et les erreurs courantes.
L’essentiel à retenir
- Selon sa documentation, n8n ne sera distribué que par Docker à partir de la version 3.0, annoncée pour octobre 2026.
- L’installation décrite ici repose sur deux conteneurs : n8n et Traefik, un proxy qui gère le certificat HTTPS et le routage vers n8n.
- Le volume Docker
n8n_datacontient la base SQLite et la clé de chiffrement des identifiants : le perdre revient à perdre l’instance. - L’édition Community, gratuite, couvre presque toutes les fonctions de n8n, mais l’éditeur recommande l’auto-hébergement aux utilisateurs expérimentés.
En bref
| Éditeur | n8n |
| Prix | édition Community gratuite en auto-hébergement, plans Business et Enterprise payants |
| Licence | Sustainable Use License |
| Version | 2.42.5 en version stable au 8 octobre 2026, selon la documentation |
| Durée | une dizaine de commandes, plus le délai de propagation du DNS |
| Niveau | intermédiaire : serveur Linux et ligne de commande |
Pourquoi installer n8n avec Docker
Dans n8n, un workflow enchaîne des nœuds, comme un déclencheur planifié suivi d’une action dans un autre service. Le principe rappelle celui d’un scénario Make, avec une différence nette : n8n peut tourner sur votre propre serveur. Les workflows se construisent à la souris, comme en no-code, mais l’hébergement demande des compétences d’administration.
Docker exécute une application dans un conteneur, un environnement isolé qui embarque tout ce dont elle a besoin. Docker Compose décrit plusieurs conteneurs dans un fichier YAML et les lance d’une commande.
n8n signale comme obsolète sa page « Install with Docker », bâtie sur une commande docker run, et propose trois autres chemins :
- l’installation en une ligne lance n8n en local sur
http://localhost:5678; - le guide Docker Compose complet ajoute la sandbox de l’assistant IA et demande 4 Go de RAM et 2 vCPU au minimum ;
- le guide pour serveur Linux place n8n derrière Traefik, en HTTPS : c’est celui de ce tutoriel.
Prérequis
Il faut avoir sous la main :
- un serveur Linux joignable depuis internet, par exemple un VPS ;
- Docker Engine et Docker Compose ;
- un accès SSH avec un compte autorisé à utiliser
sudo; - un nom de domaine dont vous gérez la zone DNS ;
- une adresse e-mail pour la création du certificat TLS ;
- les ports 80 et 443 ouverts sur le pare-feu du serveur.
Selon la documentation, une erreur d’auto-hébergement peut entraîner une perte de données, une faille de sécurité ou une interruption de service. Aux profils peu expérimentés, l’éditeur conseille n8n Cloud, sa version hébergée.
Tutoriel : installer n8n avec Docker Compose sur un serveur
Les étapes suivent le guide « Use Docker Compose » de n8n, relu le 8 octobre 2026. Les commandes se tapent dans le terminal du serveur, en SSH.
Étape 1 : vérifier Docker et Docker Compose
Le but est de confirmer que les deux outils répondent. Tapez :
docker --version
docker compose version
Chaque commande doit afficher un numéro de version. Sinon, le guide de n8n renvoie aux pages d’installation de Docker propres à chaque distribution.
Étape 2 : utiliser Docker sans sudo
Cette étape facultative évite de préfixer chaque commande Docker par sudo. Pour le compte connecté :
sudo usermod -aG docker ${USER}
exec sg docker newgrp
La première ligne ajoute votre utilisateur au groupe docker, la seconde l’applique à la session en cours. La commande groups doit ensuite afficher docker. La suite garde sudo, comme le guide officiel.
Étape 3 : faire pointer un sous-domaine vers le serveur
n8n sera servi sur un sous-domaine dédié, comme n8n.example.com. Dans l’interface DNS de votre registraire, créez un enregistrement de type « A », nommé « n8n » ou autre, qui pointe vers l’adresse IP publique du serveur.
Mieux vaut attendre que le sous-domaine réponde avant l’étape 7, puisque le certificat sera demandé pour lui.
Étape 4 : créer le dossier du projet et le fichier .env
Toute l’installation tient dans un dossier :
mkdir n8n-compose
cd n8n-compose
Créez-y un fichier .env et collez ce contenu, avec vos propres valeurs :
# Domaine principal et sous-domaine : n8n répondra sur https://n8n.example.com
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
# Fuseau horaire des nœuds planifiés (New York par défaut)
GENERIC_TIMEZONE=Europe/Paris
# Adresse e-mail utilisée pour créer le certificat TLS/SSL
SSL_EMAIL=vous@example.com
Le fichier Compose lira ces quatre variables. Pour le fuseau, le guide donne Europe/Berlin en exemple ; Europe/Paris convient pour la France.
Étape 5 : créer le dossier des fichiers partagés
Ce dossier sert à échanger des fichiers entre le serveur et n8n, avec le nœud « Read/Write Files from Disk » notamment :
mkdir local-files
La documentation conseille de le créer à la main pour qu’il ait le bon propriétaire et les bonnes permissions. Dans n8n, il apparaît sous le chemin /files.
Étape 6 : écrire le fichier compose.yaml
Ce fichier décrit les deux conteneurs et leurs volumes. Créez compose.yaml dans le même dossier :
services:
traefik:
image: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- N8N_PROXY_HOPS=1
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
- N8N_RESTRICT_FILE_ACCESS_TO=/files
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:
Ce fichier reprend celui du guide officiel, à deux lignes près. La page de n8n sur les proxys inverses indique que WEBHOOK_URL est dépréciée depuis n8n 2.35.0 au profit de N8N_WEBHOOK_URL, et qu’il faut régler N8N_PROXY_HOPS sur 1 derrière un proxy, ici Traefik.
Les éléments à comprendre :
- traefik écoute sur les ports 80 et 443, redirige le HTTP vers le HTTPS et obtient le certificat ;
- n8n n’est publié que sur
127.0.0.1:5678, donc joignable de l’extérieur par Traefik seulement ; - traefik_data conserve les certificats, n8n_data la base et la clé de chiffrement ;
- N8N_RESTRICT_FILE_ACCESS_TO limite l’accès de n8n aux fichiers du dossier
/files.
Étape 7 : démarrer les conteneurs
Lancez l’ensemble en arrière-plan :
sudo docker compose up -d
Docker télécharge les images, crée les volumes et démarre les deux conteneurs. sudo docker compose ps affiche ensuite leur état. Pour les arrêter :
sudo docker compose stop
Selon la documentation de Docker, cette commande arrête les conteneurs sans les supprimer ; sudo docker compose up -d les relance.
Étape 8 : créer le compte propriétaire
Ouvrez votre sous-domaine, ici https://n8n.example.com. Au premier lancement, n8n affiche un écran d’inscription pour créer le compte propriétaire.
Saisissez vos informations. Selon la documentation, le mot de passe doit compter au moins huit caractères, dont un chiffre et une majuscule. Cliquez ensuite sur « Next » : n8n vous connecte avec ce compte.
n8n propose aussi d’enregistrer gratuitement l’édition Community par e-mail, pour débloquer les dossiers, le débogage dans l’éditeur et les données d’exécution personnalisées. L’option reste dans Settings > Usage and plan, bouton « Unlock ».
Vérifier que l’installation fonctionne
Trois contrôles :
- l’adresse du sous-domaine en
https://affiche l’écran de connexion de n8n, sans alerte de certificat ; - la même adresse en
http://redirige vers le HTTPS ; sudo docker compose psmontre les conteneurstraefiketn8nen cours d’exécution.
Créez ensuite un workflow avec le nœud « Schedule Trigger » réglé sur un horaire proche, puis activez-le : s’il s’exécute à l’heure prévue, le fuseau horaire est bon.
Un nœud « Webhook » doit afficher une URL qui commence par votre sous-domaine en HTTPS, et non par localhost.
Mettre à jour et sauvegarder son instance
Selon sa documentation, n8n publie une version mineure presque chaque semaine et conseille de mettre à jour au moins une fois par mois, après lecture des notes de version. La procédure officielle, dans le dossier n8n-compose :
sudo docker compose pull # télécharger les dernières images
sudo docker compose down # arrêter et supprimer les anciens conteneurs
sudo docker compose up -d # redémarrer avec les nouvelles images
La documentation de Docker précise que down supprime les conteneurs et les réseaux, mais pas les volumes nommés, sauf avec l’option -v. Les workflows restent donc dans n8n_data.
Avant chaque mise à jour, n8n recommande une sauvegarde complète. Avec SQLite, le dossier .n8n du volume n8n_data contient tout : base, utilisateurs, réglages et clé de chiffrement. La documentation demande d’arrêter n8n avant de le copier, sous peine de copie incohérente.
L’export n8n export:workflow --backup ne la remplace pas : il omet les utilisateurs, l’historique des exécutions et la clé de chiffrement.
Les erreurs fréquentes et leurs corrections
Sous-domaine injoignable : le guide de n8n pointe le pare-feu et le DNS. Vérifiez que les ports 80 et 443 sont ouverts et que l’enregistrement A vise la bonne adresse IP.
Adresse IP et port 5678 sans réponse : c’est normal. n8n n’est publié que sur 127.0.0.1 et, selon la documentation, accessible seulement en HTTPS par le sous-domaine.
Webhooks en localhost : les URL de webhook affichées pointent vers localhost ou le port 5678. Selon n8n, l’outil les construit à partir de N8N_PROTOCOL, N8N_HOST et N8N_PORT, ce qui échoue derrière un proxy. Renseignez l’adresse publique dans N8N_WEBHOOK_URL, puis relancez sudo docker compose up -d.
Avertissement sur WEBHOOK_URL : sudo docker compose logs n8n signale une variable dépréciée. Le fichier du guide officiel utilise encore WEBHOOK_URL : remplacez-la par N8N_WEBHOOK_URL.
Workflows planifiés décalés : GENERIC_TIMEZONE manque ou est mal écrite, et n8n retombe sur le fuseau de New York. Corrigez le fichier .env, puis relancez les conteneurs.
Docker refuse les commandes sans sudo : l’ajout au groupe docker ne vaut pas pour les sessions déjà ouvertes. La documentation demande d’y lancer exec sg docker newgrp.
Identifiants illisibles après une restauration : la clé qui chiffre les identifiants est dans le fichier config du dossier .n8n. Selon la documentation, une base restaurée sans ce fichier, ou sans la même N8N_ENCRYPTION_KEY, reste indéchiffrable. Restaurez le dossier .n8n complet.
Les limites de l’auto-hébergement
La version auto-hébergée relève de la Sustainable Use License : selon la FAQ de n8n, elle est gratuite si les workflows sont créés ou modifiés par vous ou votre organisation. Héberger n8n comme un service où vos clients construisent leurs workflows, ou le proposer en marque blanche, est interdit.
L’édition Community exclut aussi des fonctions d’équipe réservées aux plans Business et Enterprise : SSO, environnements, projets, variables personnalisées, gestion de versions avec Git et partage. Sans partage, seuls le propriétaire de l’instance et l’auteur d’un workflow y ont accès.
SQLite suffit pour démarrer. En production, avec plus de quelques utilisateurs ou des workflows qui tournent jour et nuit, n8n recommande PostgreSQL ; son dépôt n8n-hosting fournit un exemple withPostgres.
Mises à jour, sauvegardes, pare-feu et surveillance reposent sur vous. Sans serveur SMTP configuré, les invitations se font par lien copié à la main et la réinitialisation des mots de passe est impossible.
Pour aller plus loin, n8n documente un serveur MCP d’instance, à faire passer par le même proxy, la rotation des clés de chiffrement et la protection contre les attaques SSRF.
Installer n8n avec Docker Compose convient donc particulièrement aux freelances, aux équipes marketing outillées et aux profils techniques qui veulent garder automatisations et données sur leur serveur. La contrepartie : le jour où personne ne surveille l’instance, n8n Cloud redevient l’option la plus raisonnable.


