Aller au contenu principal
Accueil AngleFormation - Experts IA et Automatisation
Automatiser Votre Croissance
Automatisation PME

Migrer vers n8n 2.0 sans casser ses workflows : guide Docker

2026-08-30 Par Jallal Tahiri

💡 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_KEY avant toute opĂ©ration.
  • Les nƓuds ExecuteCommand et LocalFileTrigger sont 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 latest sans 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 :

  1. Bloquant : corriger avant la mise Ă  niveau.
  2. Risque métier : tester avec un jeu de données contrÎlé.
  3. 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 :

  1. lancer une instance isolée ;
  2. restaurer la base et les volumes ;
  3. ouvrir les workflows ;
  4. déchiffrer les credentials ;
  5. 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

  1. Geler les modifications de workflows.
  2. Réaliser une sauvegarde finale.
  3. Mettre en pause les déclencheurs externes si nécessaire.
  4. Déployer la version validée.
  5. Vérifier santé, base, runners et files d'exécution.
  6. Réactiver par groupes de workflows.
  7. 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

DerniÚre vérification des informations : 30 août 2026.

JT
Cet article d'ingénierie a été rédigé par Jallal TAHIRI, consultant expert en architectures cloud, IA agentique et automatisation des processus B2B pour PME.