Migrer vers n8n 2.0 sans casser ses workflows : guide Docker
Plan de l'article
đĄ En rĂ©sumĂ© (TL;DR)
- n8n 2.0 renforce la sécurité et la stabilité, mais modifie certains comportements qui peuvent interrompre des workflows existants.
- Lancez le Migration Report avant la mise à jour : il détecte les workflows et paramÚtres nécessitant une intervention.
- Sauvegardez PostgreSQL ou SQLite, le volume n8n et surtout
N8N_ENCRYPTION_KEYavant toute opĂ©ration.- Les nĆuds
ExecuteCommandetLocalFileTriggersont désactivés par défaut ; l'accÚs aux variables d'environnement et aux fichiers est plus restrictif.- Ne mettez jamais une instance métier à niveau avec l'image Docker
latestsans test. Ăpinglez une version exacte et prĂ©parez le retour arriĂšre.
n8n 2.0 ne doit pas ĂȘtre traitĂ© comme une mise Ă jour mineure. Cette version consolide l'exĂ©cution du code, la gestion des fichiers, la publication des workflows et plusieurs rĂ©glages historiques. Les changements amĂ©liorent la sĂ©curitĂ©, mais peuvent casser une automatisation qui dĂ©pendait d'un ancien comportement permissif.
Ce guide propose une migration contrÎlée pour une instance n8n auto-hébergée avec Docker. Si vous débutez, commencez par notre guide complet n8n pour PME. Si vous venez de Zapier, utilisez plutÎt notre méthode pour migrer de Zapier vers n8n.
Pourquoi n8n 2.0 demande une préparation ?
n8n présente la version 2.0 comme une évolution centrée sur la sécurité, la fiabilité et les performances. Les principaux effets visibles pour une instance existante sont :
- exécution du code davantage isolée par les task runners ;
- accĂšs aux variables d'environnement bloquĂ© par dĂ©faut dans certains nĆuds ;
- restriction de l'accĂšs au systĂšme de fichiers ;
- dĂ©sactivation par dĂ©faut de nĆuds capables d'exĂ©cuter des commandes ou de surveiller des fichiers locaux ;
- suppression de fonctions et modes de stockage hérités ;
- séparation plus nette entre sauvegarder un brouillon et publier une version active ;
- corrections de comportement des sous-workflows et des exécutions longues.
Un workflow simple Gmail â Google Sheets peut continuer Ă fonctionner sans changement. Un workflow avec scripts, commandes systĂšme, fichiers montĂ©s, variables process.env ou sous-workflows doit ĂȘtre considĂ©rĂ© Ă risque jusqu'Ă validation.
Ătape 1 â Inventorier l'instance
Avant de toucher Ă Docker, documentez :
| ĂlĂ©ment | Information Ă conserver |
|---|---|
| Version n8n | Version exacte, pas seulement « 1.x » |
| Base de données | PostgreSQL ou SQLite, version et emplacement |
| Stockage binaire | Mode utilisé et volumes montés |
| Chiffrement | Présence et sauvegarde de N8N_ENCRYPTION_KEY |
| Reverse proxy | Domaine, HTTPS, en-tĂȘtes et WEBHOOK_URL |
| Code | NĆuds Code JavaScript/Python et modules externes |
| SystĂšme | Execute Command, fichiers locaux, scripts et binaires |
| Intégrations | OAuth, webhooks entrants et adresses IP autorisées |
| CriticitĂ© | FrĂ©quence, propriĂ©taire et impact d'un arrĂȘt |
Exportez aussi la liste des workflows et identifiez ceux qui facturent, suppriment des données, créent des commandes ou contactent des clients.
Ătape 2 â Utiliser le rapport de migration n8n 2.0
n8n fournit un outil de migration qui analyse l'instance et signale les problÚmes de compatibilité et de configuration. Exécutez-le depuis une version 1.x prise en charge avant la bascule.
Le rapport ne remplace pas les tests. Il permet de trouver plus vite :
- les nĆuds dĂ©sactivĂ©s en 2.0 ;
- les anciens déclencheurs ;
- les accĂšs Ă l'environnement ou au systĂšme de fichiers ;
- les configurations supprimées ou renommées ;
- les workflows qui nécessitent une publication explicite ;
- les composants communautaires à vérifier.
Traitez les alertes selon trois niveaux :
- Bloquant : corriger avant la mise Ă niveau.
- Risque métier : tester avec un jeu de données contrÎlé.
- Amélioration : planifier aprÚs stabilisation.
Conservez une copie du rapport avec la date et la version analysée.
Ătape 3 â Sauvegarder ce qui permet rĂ©ellement de restaurer
Un export JSON des workflows ne suffit pas. Il ne restaure pas nécessairement les credentials, utilisateurs, historiques et configurations.
Sauvegarde PostgreSQL
Adaptez les noms du conteneur et de la base :
docker exec n8n-postgres pg_dump -U n8n -d n8n -Fc > n8n-pre-v2.dump
Le fichier doit ĂȘtre copiĂ© hors du serveur et testĂ© par une restauration dans une base temporaire.
Sauvegarde des volumes
Sauvegardez le volume /home/node/.n8n et les répertoires métiers montés. La commande dépend de votre plateforme ; l'objectif est d'obtenir une archive lisible hors du conteneur, pas un instantané dont personne ne connaßt la procédure de restauration.
Clé de chiffrement
Sans la valeur exacte de N8N_ENCRYPTION_KEY, les credentials chiffrés peuvent devenir inutilisables aprÚs restauration. Stockez cette clé dans un gestionnaire de secrets, séparée de l'archive de la base.
Test de restauration
Une sauvegarde est validée uniquement si vous pouvez :
- lancer une instance isolée ;
- restaurer la base et les volumes ;
- ouvrir les workflows ;
- déchiffrer les credentials ;
- exécuter un workflow de test sans contacter la production.
Ătape 4 â Corriger les changements les plus cassants
ExecuteCommand et LocalFileTrigger
Ces nĆuds sont dĂ©sactivĂ©s par dĂ©faut pour rĂ©duire le risque d'exĂ©cution arbitraire et d'accĂšs au systĂšme de fichiers.
Ne les réactivez pas globalement par réflexe. Pour chaque workflow :
- remplacez une commande par une API lorsque possible ;
- placez le traitement dans un microservice isolé ;
- limitez l'utilisateur Linux et les volumes visibles ;
- journalisez la commande et ses paramĂštres ;
- réactivez uniquement ce qui est indispensable.
Variables d'environnement dans le nĆud Code
Un script utilisant process.env.MA_CLE peut ne plus fonctionner. DĂ©placez les secrets vers les credentials n8n ou une mĂ©thode explicitement prise en charge. Les donnĂ©es non sensibles peuvent ĂȘtre passĂ©es en entrĂ©e du workflow.
AccĂšs aux fichiers
Montez un rĂ©pertoire dĂ©diĂ©, par exemple /files, et configurez la restriction d'accĂšs pour empĂȘcher un workflow de parcourir l'hĂŽte. VĂ©rifiez les chemins absolus : un montage Docker diffĂ©rent entre test et production est une source classique d'Ă©chec.
Task runners
Les nĆuds Code utilisent des runners isolĂ©s. Pour un mode externe, le conteneur principal et le conteneur runner doivent partager un rĂ©seau, un jeton d'authentification et une URI de broker cohĂ©rents.
Exemple de structure Ă adapter, sans secrets en clair :
services:
n8n:
image: docker.n8n.io/n8nio/n8n:2.0.0
restart: unless-stopped
environment:
N8N_RUNNERS_ENABLED: "true"
N8N_RUNNERS_MODE: external
N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0
N8N_RUNNERS_AUTH_TOKEN: ${N8N_RUNNERS_AUTH_TOKEN}
networks: [n8n_net]
runners:
image: n8nio/runners:2.0.0
restart: unless-stopped
environment:
N8N_RUNNERS_MODE: external
N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
N8N_RUNNERS_AUTH_TOKEN: ${N8N_RUNNERS_AUTH_TOKEN}
N8N_RUNNERS_ENABLED_TASK_TYPES: javascript,python
networks: [n8n_net]
networks:
n8n_net:
Vérifiez les exemples correspondant à votre version dans la documentation n8n ; les variables peuvent évoluer.
Ătape 5 â Cloner une prĂ©production fidĂšle
La préproduction doit reproduire :
- mĂȘme moteur et version de base de donnĂ©es ;
- mĂȘmes montages, mais donnĂ©es isolĂ©es ;
- mĂȘme reverse proxy et mĂȘmes en-tĂȘtes ;
- mĂȘmes nĆuds communautaires ;
- mĂȘme mode de runners ;
- mĂȘmes limites de mĂ©moire et de CPU.
Neutralisez les actions irréversibles :
- emails vers une boĂźte de test ;
- paiements en sandbox ;
- CRM de test ;
- webhooks avec URL différente ;
- suppression remplacée par un journal.
Importez une copie récente des workflows, puis mettez la copie à niveau.
Ătape 6 â Ăpingler les images Docker
Ăvitez :
image: docker.n8n.io/n8nio/n8n:latest
Préférez une version exacte validée :
image: docker.n8n.io/n8nio/n8n:2.0.0
AprÚs validation, vous pourrez passer vers un correctif 2.0.x ou 2.x précis. L'épinglage garantit qu'un redémarrage ne télécharge pas silencieusement une version différente.
Avant la mise Ă niveau :
docker compose config
docker compose pull
docker compose up -d
docker compose logs --tail=200 n8n
Ne lancez pas ces commandes sans avoir vérifié le répertoire, le fichier Compose, les sauvegardes et la procédure de retour arriÚre.
Ătape 7 â Construire une matrice de tests
| Test | Résultat attendu |
|---|---|
| Webhook entrant | Réponse, authentification et délai identiques |
| OAuth | Connexion toujours valide ou reconnexion documentée |
| Code JS/Python | Résultat identique et absence de timeout runner |
| Fichier | Lecture/écriture limitée au volume autorisé |
| Sous-workflow | Données finales correctement renvoyées |
| Wait | Reprise aprÚs le délai ou le webhook |
| Erreur | Alerte envoyée et exécution visible |
| Doublon | Relance sans créer deux commandes ou factures |
| Charge | Temps et mémoire acceptables au volume normal |
Testez au moins une exécution réussie, une donnée vide, une erreur API, un timeout et une relance pour chaque workflow critique.
Ătape 8 â Basculer et surveiller
- Geler les modifications de workflows.
- Réaliser une sauvegarde finale.
- Mettre en pause les déclencheurs externes si nécessaire.
- Déployer la version validée.
- Vérifier santé, base, runners et files d'exécution.
- Réactiver par groupes de workflows.
- Surveiller erreurs, latence, doublons et webhooks pendant 24 Ă 72 heures.
Le retour arriÚre doit préciser la version Docker précédente, la base à restaurer, les volumes concernés et la maniÚre de rejouer les événements reçus pendant l'interruption.
FAQ migration n8n 2.0
Peut-on mettre n8n 1.x Ă niveau directement vers 2.0 ?
Oui si la version de départ et la configuration sont prises en charge, mais il faut d'abord lire les changements cassants, exécuter le rapport de migration et tester une copie.
Le rapport de migration garantit-il que tout fonctionnera ?
Non. Il dĂ©tecte de nombreux risques connus, mais ne peut pas valider la logique mĂ©tier, les API externes, les donnĂ©es rĂ©elles et les nĆuds communautaires.
Pourquoi ExecuteCommand a-t-il disparu ?
Il est dĂ©sactivĂ© par dĂ©faut en raison de son risque de sĂ©curitĂ©. Il peut ĂȘtre rĂ©activĂ© explicitement, mais un service isolĂ© ou une API est souvent prĂ©fĂ©rable.
Faut-il passer de SQLite Ă PostgreSQL ?
Pour un usage professionnel soutenu, PostgreSQL est généralement plus adapté. La décision dépend du volume et de l'architecture ; migrez la base dans une opération séparée si possible.
Peut-on revenir Ă n8n 1.x aprĂšs la migration ?
Uniquement avec un plan testé et une sauvegarde compatible de la base et des volumes. Ne supposez pas qu'il suffit de changer le tag Docker aprÚs une migration de schéma.
Sources officielles consultées
- n8n â Changements cassants de la version 2.0
- n8n â Outil de migration 2.0
- n8n â Notes de version 2.x
- n8n â Installation avec Docker
DerniÚre vérification des informations : 30 août 2026.