Comment installer n8n ? Tutoriel complet de déploiement local et de premier lancement pour débutants
Installer n8n n'est pas difficile en soi ; ce qui est difficile, c'est la question de savoir si « les données seront perdues » après l'installation. J'ai vu trop de gens lancer une commande, l'utiliser une semaine, supprimer le container et le recréer, et perdre tous les workflows — parce que le volume de données n'était pas correctement monté.
Cet article explique clairement trois méthodes d'installation courantes, classées par ordre de « moins de pièges » : Docker, Docker Compose, npm. Après l'installation, vous aurez : un n8n accessible dans le navigateur, des données stockées localement sans perte, et un fuseau horaire correct.
À qui cela s'adresse, ce qu'il faut avant de commencer
Convient aux personnes qui n'ont jamais déployé de service, mais il faut savoir ouvrir un terminal et taper des commandes. Windows, macOS et Linux fonctionnent ; cet article se concentre sur Docker, car les mises à niveau et migrations ultérieures sont les plus simples.
Si vous voulez juste essayer sur la machine de quelqu'un d'autre sans usage à long terme, passez directement à la méthode npm de la section 3 ; deux commandes suffisent, mais ne l'utilisez pas pour des données importantes.
Décidez d'abord où installer
| Méthode | Pour qui | Avantages | Coût |
|---|---|---|---|
| Docker (container unique) | Ordinateur personnel, usage léger | Isolation propre, suppression sans trace, mise à niveau par simple changement d'image | Nécessite un peu de connaissances Docker |
| Docker Compose | Exécution longue durée, nécessite une connexion à une base de données | Configuration écrite dans un fichier, versionnable, redémarrage automatique | Un yaml de plus à maintenir |
| Installation globale via npm | Environnement Node déjà présent, volonté d'économiser les ressources | Pas de container, connexion directe à l'hôte, perte de performance minimale | Dépend de la version Node du système, les mises à jour deviennent vite chaotiques |
Mon conseil : pour un usage personnel, choisissez Docker Compose, pas une seule commande docker run. La raison est très concrète — une fois la commande lancée, deux mois plus tard vous ne vous souviendrez absolument plus des paramètres définis à l'époque. Compose écrit les paramètres dans un fichier, consultable, modifiable et sauvegardable en cas de problème.
Vérifier l'environnement
Vérifiez d'abord que Docker est présent. Exécutez dans le terminal :
docker -v
Si vous voyez le numéro de version (sous la forme Docker version 29.5.3, build d1c06ef), c'est installé. Sous Windows et macOS, Docker Desktop l'inclut ; sous Linux, utilisez Docker Engine.
Vérifiez ensuite que le port 5678 n'est pas occupé. Linux :
ss -lntp | grep 5678
macOS ou Linux peuvent aussi utiliser lsof -i :5678. Une sortie indique qu'il est occupé, changez de port, par exemple -p 5679:5678. Windows utilise netstat -ano | findstr 5678。
Méthode 1 : tout lancer avec une seule commande docker run
Créez d'abord le volume de données, puis démarrez le container. Ne fusionnez pas ces deux étapes ; créez le volume séparément, ainsi lors d'une suppression et recréation ultérieure du container, les données ne seront pas perdues :
docker volume create n8n_data
docker run -d --name n8n
-p 5678:5678
-e GENERIC_TIMEZONE="Asia/Shanghai"
-e TZ="Asia/Shanghai"
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_DEFAULT_LOCALE=zh-CN
-v n8n_data:/home/node/.n8n
--restart unless-stopped
n8nio/n8n
Expliquons un par un ce que fait chaque paramètre, car ce sont les vrais pièges à éviter :
-d: exécution en arrière-plan. La documentation officielle indique-it --rm(exécution au premier plan, suppression à la sortie), c'est pour les tests. Pour un usage à long terme, il faut absolument le remplacer par-d --restart unless-stopped, le container redémarrera automatiquement après un redémarrage du serveur.-p 5678:5678: mappe le 5678 interne du container vers l'hôte. À gauche c'est le port de l'hôte, modifiez uniquement la gauche.GENERIC_TIMEZONE和TZ: les deux doivent être définis.TZcontrôle le fuseau horaire des commandes système dans le container,GENERIC_TIMEZONEcontrôle le fuseau horaire selon lequel les nœuds de type planification (comme Schedule Trigger) sont calculés. Si vous n'en définissez qu'un seul, vous aurez le cas « j'ai réglé 9h du matin, mais ça s'est exécuté à 17h ».-v n8n_data:/home/node/.n8n:La ligne la plus critique. La base de données SQLite de n8n, les clés de chiffrement et les logs se trouvent tous dans ce répertoire. Sans mount de volume, tout disparaît à la suppression du container.N8N_DEFAULT_LOCALE=zh-CN: interface en chinois par défaut. Notez que la traduction chinoise de n8n ne couvre que l'interface, les paramètres des nœuds restent en anglais.
Après le démarrage, ouvrez dans le navigateur http://localhost:5678. La première fois, il vous sera demandé de créer un compte administrateur, avec un mot de passe d'au moins 8 caractères. Ce compte est stocké localement ; en cas d'oubli, seule une réinitialisation est possible. Retenez-le bien.
Méthode 2 : Docker Compose (recommandée)
Créez un répertoire et placez-y docker-compose.yml:
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
- N8N_DEFAULT_LOCALE=zh-CN
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_SECURE_COOKIE=false
volumes:
- ./n8n_data:/home/node/.n8n
Puis exécutez dans ce répertoire :
docker compose up -d
Quelques précisions :
N8N_SECURE_COOKIE=false Cette ligne n'est nécessaire que pour « un accès local via http ». Si vous avez déjà configuré un domaine et HTTPS, supprimez-la — avoir HTTPS activé tout en mettant false réduit au contraire la sécurité. Beaucoup de gens dont la page de connexion tourne en boucle après une installation locale sont bloqués par ce paramètre de cookie.
Le répertoire de données utilise ./n8n_data, c'est-à-dire un dossier au même niveau que le yml. L'avantage est que la sauvegarde se fait en archivant directement ce répertoire, sans avoir à deviner où se cache le volume Docker.
Consulter les logs, vérifier si c'est démarré :
docker compose logs -f --tail=50
Si vous voyez la ligne avec l'adresse de l'éditeur et le numéro de version, c'est démarré. Appuyer sur Ctrl+C ne fait que quitter les logs, le container continue de tourner.
Méthode 3 : installation globale via npm
L'instance que j'utilise personnellement fonctionne de cette manière, sans container, directement sur l'hôte. Il faut disposer d'un environnement Node.js ; n8n 2.x exige Node 20 ou supérieur (la mienne est en Node 24.21.0).
npm install -g n8n
n8n start
Mais lancer ainsi directement pose un problème : les données atterrissent par défaut dans le répertoire de l'utilisateur courant .n8n, et tout s'arrête dès que l'on ferme le terminal. En production, on spécifie généralement le répertoire de données via des variables d'environnement, puis on gère le processus avec systemd ou pm2. Les variables clés réellement utilisées par cette instance sont les suivantes (remplacez les valeurs par les vôtres) :
N8N_USER_FOLDER=/data/n8n
N8N_HOST=127.0.0.1
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=https://你的域名/
N8N_DEFAULT_LOCALE=zh-CN
N8N_HOST=127.0.0.1 Conjointement avec N8N_EDITOR_BASE_URL, c'est la pratique courante consistant à cacher n8n derrière Nginx sans exposer directement le port ; nous détaillerons cela dans le prochain article lors du déploiement sur serveur. Si vous l'utilisez uniquement en local, il suffit de définir HOST sur localhost .
À quoi cela ressemble après l'installation
Après la connexion, vous arrivez sur la page « Vue d'ensemble ». À gauche se trouve la navigation fonctionnelle, au centre les onglets workflow, exécution et identifiants, et en haut à droite le bouton « Créer un workflow ».

Cliquez sur « Créer un workflow », vous obtenez un canevas vide avec seulement une ligne « Ajouter la première étape » au centre :

Premier workflow : trois nœuds
Cliquez sur le signe plus au centre du canevas, la bibliothèque de nœuds apparaît à droite. Dans le champ de recherche, saisissez manual, sélectionnez « Manual Trigger (déclenchement manuel) », c'est le point de départ de ce flux.

Ensuite, sur le petit signe plus à droite du nœud de déclenchement manuel, ajoutez un « Edit Fields (modifier les champs) », saisissez deux champs au hasard, par exemple city remplissez « Fuzhou »,temp remplissez 27. Ajoutez encore à droite un nœud « Code (code) », collez dans la zone de code :
return items.map(item => ({
json: {
message: `${item.json.city} 现在 ${item.json.temp} 度`
}
}));
Enfin, cliquez sur le bouton « Exécuter » en bas du canevas. Les trois nœuds s'allument successivement et deviennent des coches vertes, ce qui indique que toute la chaîne est fonctionnelle. À ce moment, cliquez sur n'importe quel nœud, la zone de sortie à droite affiche les données réelles.
Le but de cette étape n'est pas d'apprendre à écrire du code, mais de vous permettre de confirmer : cette installation tient debout et fonctionne.
Comment savoir si l'installation a vraiment réussi
Pouvoir ouvrir l'interface ne signifie pas que c'est réussi. Passez les quatre points ci-dessous ; ce n'est validé que si tout passe :
- Pouvoir ouvrir l'éditeur: accès via le navigateur sans erreur, la liste des workflows s'affiche.
- Pouvoir sauvegarder: créez un workflow, ajoutez un node au hasard, attendez la sauvegarde automatique, puis rafraîchissez la page ; le contenu est toujours là.
- Ne pas perdre les données au redémarrage:
docker compose restart, puis rafraîchissez à nouveau ; le workflow précédent est toujours là. C'est le seul moyen de vérifier si le volume de données est correctement monté. - Pouvoir exécuter: lancez une exécution manuelle du workflow, le node passe au vert, cliquez dessus pour voir les données de sortie.
Le troisième point est le plus souvent sauté, et c'est aussi le plus critique. Si votre workflow a disparu après le redémarrage, ne doutez pas de n8n, allez vérifier -v si le chemin qui suit est mal écrit, ou si un volume anonyme a été utilisé.
Erreurs courantes
Port déjà utilisé.Le message d'erreur contient port is already allocated. Changez le port de l'hôte, par exemple -p 5679:5678, puis accédez via 5679.
La page s'ouvre mais la connexion tourne en boucle.En accès local via http, si N8N_SECURE_COOKIE est à true par défaut, le navigateur refuse d'écrire le cookie. Passez-le à false pour les tests locaux, puis supprimez cette ligne après avoir configuré HTTPS.
L'heure des tâches planifiées est incorrecte.Seul TZ a été défini, sans GENERIC_TIMEZONE, le nœud de planification calcule en UTC. Définissez les deux sur Asia/Shanghai。
Le container ne démarre pas après le redémarrage.Oubli d'ajouter --restart unless-stopped ou le restartdans le yml. Après le redémarrage du serveur, il faut lancer manuellement docker start n8n。
Le pull de l'image est lent ou échoue.Le pull de Docker Hub depuis le réseau national expire souvent ; configurez un accélérateur de miroir avant de pull, ou utilisez docker pull n8nio/n8n patientez le temps nécessaire, l’image fait plusieurs centaines de MB.
Le chinois n’a pas pris effet.N8N_DEFAULT_LOCALE Cela n’affecte que la langue par défaut des nouvelles sessions ; les comptes existants doivent modifier eux-mêmes le réglage. Et comme indiqué plus haut, seule l’interface externe est en chinois.
Ne vous précipitez pas pour l’exposer sur l’Internet public
Après l’installation, vous voulez y accéder depuis votre téléphone, alors vous ouvrez le port 5678 sur l’Internet public — c’est l’erreur la plus fréquente. n8n contient les API Key de vos différents systèmes ; l’exposer nu sur l’Internet public revient à accrocher vos clés à la porte.
La bonne méthode est la suivante : utilisez-le d’abord en local ou sur le réseau interne ; après avoir confirmé qu’il sera utilisé à long terme, suivez ensuite la procédure du prochain article pour lier un domaine, activer HTTPS, utiliser un reverse proxy Nginx, et ne faire écouter que 127.0.0.1.
Par ailleurs, après la première connexion, changez le mot de passe administrateur pour un mot de passe fort, n’utilisez pas admin123 ce genre de chose.
À propos de la version
n8n publie une petite version chaque semaine. Au moment de la rédaction, la version stable indiquée dans la documentation officielle est 2.44.5, la beta est 2.45.2 ; mon instance fait tourner 2.43.7, et les captures d’écran de l’interface en proviennent.
Recommandation :n’utilisez pas latest en production. Épinglez l’image à un numéro de version précis, par exemple n8nio/n8n:2.44.5, pour mettre à jour, modifiez le numéro et tirez à nouveau. La conséquence d'utiliser latest est qu'un jour au redémarrage, la version change discrètement, le comportement du workflow change aussi, et le diagnostic devient très laborieux.
Comment voir sa version : après connexion, allez dans les paramètres tout en bas à gauche, ou exécutez docker exec n8n n8n --version。
Étape suivante
Une fois installé, prenez dix minutes pour parcourir l'interface :Visite guidée de l'interface n8n : ce que disent le canvas, les nodes et l'historique d'exécution. Une fois familiarisé, reprenez l'installation d'aujourd'hui et tapez l'exemple à trois nodes ci-dessus, la main retient mieux que les yeux.
Si vous préférez d'abord comprendre « pourquoi cela vaut la peine d'apprendre », relisez l'article précédent :Qu'est-ce que n8n, introduction pour débutants et cas d'usage。
Références
- Install with Docker (officiel)
- Install with npm (officiel)
- Configuration des variables d'environnement (officiel)
- Dépôt d'exemples officiel n8n-hosting
Dernière mise à jour : 22 octobre 2026. Les commandes Docker ont été vérifiées d'après la documentation officielle (la version stable indiquée alors était 2.44.5), les captures d'écran proviennent de ma propre machine en 2.43.7.

