Sauvegarder et versionner ses workflows n8n avec Git (sans le plan payant)
Publié le 19 juillet 2026 · 6 min de lecture
Un workflow n8n qui a mis deux jours à peaufiner peut disparaître en un clic malencontreux : un « Save » qui écrase une version fonctionnelle par une expérimentation en cours, une mise à jour d'instance qui tourne mal, un collègue qui modifie le mauvais node en pensant travailler sur une copie. Sans historique, il n'y a aucun moyen de revenir en arrière — juste le souvenir approximatif de ce qui marchait la veille. La solution existe depuis toujours en développement logiciel : Git. La bonne nouvelle, c'est qu'il n'est pas nécessaire de payer le plan Business de n8n pour en profiter.
Ce que propose n8n nativement (et pourquoi ce n'est pas toujours accessible)
n8n intègre une fonctionnalité Source Control and Environments qui connecte directement l'éditeur à un dépôt Git : un bouton « Push » envoie vos workflows, tags et variables vers GitHub, GitLab ou Bitbucket, un bouton « Pull » les rapatrie dans un autre environnement. C'est l'expérience la plus confortable — mais elle est réservée aux plans Business et Enterprise, y compris pour les instances self-hosted, où le plan Business démarre à plusieurs centaines d'euros par mois. Pour une PME ou un indépendant qui fait tourner n8n en Community Edition gratuite (le cas de la grande majorité des utilisateurs de nos packs de workflows), cette porte est fermée.
Ce n'est pas pour autant une impasse : la Community Edition embarque depuis longtemps des commandes CLI d'export et d'import qui couvrent l'essentiel du besoin — versionner, sauvegarder, migrer entre environnements — sans aucune licence payante.
La solution gratuite : export:workflow et import:workflow
Sur une instance self-hosted (Docker, npm, ou installation manuelle), la commande suivante exporte l'intégralité des workflows dans un dossier, un fichier JSON par workflow :
n8n export:workflow --all --separate --output=./workflows/
Le flag --separate est celui qui compte pour le versioning : sans lui, tous les workflows atterrissent dans un unique fichier JSON, ce qui rend les diffs Git illisibles et les conflits de fusion impossibles à résoudre proprement. Avec un fichier par workflow, chaque git diff montre exactement quel node a changé.
Pour n'exporter qu'un seul workflow (utile après une modification ponctuelle) :
n8n export:workflow --id=12 --output=./workflows/tri-emails.json
À l'import, la logique est symétrique — utile pour restaurer un backup ou déployer les mêmes workflows sur une nouvelle instance (migration self-hosted, environnement de staging) :
n8n import:workflow --separate --input=./workflows/
Les credentials suivent le même principe, mais séparément : n8n export:credentials --all --output=./credentials.json produit un export chiffré par défaut. Un flag --decrypted existe pour obtenir du texte en clair en cas de migration vers une instance avec une clé de chiffrement différente — dans ce cas précis, ne jamais committer ce fichier dans Git, même sur un dépôt privé : sortez-le du repo (.gitignore) ou chiffrez-le séparément avec un gestionnaire de secrets.
Automatiser le backup avec un script et un cron
L'export manuel ne survit jamais longtemps aux échéances du quotidien. Un script minimal, appelé par cron chaque nuit, transforme ce réflexe en filet de sécurité permanent :
#!/bin/bash
set -e
cd /opt/n8n-backup
n8n export:workflow --all --separate --output=./workflows/
git add workflows/
if ! git diff --cached --quiet; then
git commit -m "backup: workflows n8n $(date +%F)"
git push origin main
fi
Le test git diff --cached --quiet évite de créer un commit vide les jours sans changement — un détail qui garde l'historique Git lisible plutôt que noyé sous des centaines de commits identiques. Une entrée crontab classique (0 3 * * * /opt/n8n-backup/backup.sh) suffit à exécuter ce filet chaque nuit à 3h, sans intervention.
Cas Docker : exporter depuis un conteneur
La majorité des instances self-hosted qui font tourner les packs FlowKit tournent dans Docker. La commande d'export s'exécute alors via docker exec, en s'assurant que le dossier de sortie pointe vers un volume monté et partagé avec l'hôte (sinon les fichiers disparaissent avec le conteneur) :
docker exec n8n n8n export:workflow --all --separate --output=/home/node/backup/workflows/
Le reste du script de backup (commit, push) s'exécute côté hôte, sur le dossier monté — n8n dans le conteneur n'a besoin d'aucun accès réseau à Git.
Structurer le dépôt pour qu'il reste lisible
Un dépôt de backup qui grossit sans organisation devient vite aussi difficile à naviguer qu'un dossier « Téléchargements ». Quelques conventions simples évitent ce piège :
- Un dossier par projet ou par pack (
workflows/inbox/,workflows/rag/,workflows/audit/) plutôt qu'un dossier plat de dizaines de fichiers. - Des noms de fichiers stables, dérivés du nom du workflow plutôt que de son ID numérique interne, pour que les renommages dans l'éditeur n8n restent traçables dans l'historique Git.
- Un
.gitignorequi exclut les exports de credentials déchiffrés et tout fichier.envcontenant des clés API. - Une branche par environnement (
mainpour la production,stagingpour les tests) si vous faites tourner plusieurs instances n8n, avec le même script de sync adapté à chaque URL d'instance.
Cette organisation rejoint directement les principes détaillés dans notre comparatif n8n self-hosted vs Cloud : dès qu'on choisit le self-hosting pour garder la main sur l'infrastructure, la responsabilité de la sauvegarde et de la reproductibilité des workflows revient entièrement à l'opérateur — Git en est le socle le plus naturel.
Restaurer après un incident
Le vrai test d'un backup n'est pas sa création, mais sa restauration. Après un incident (mise à jour cassée, suppression accidentelle, migration vers un nouveau serveur), le retour en arrière suit le même chemin en sens inverse :
git checkout <commit-avant-incident>(ougit log workflows/pour identifier la bonne version d'un fichier précis) ;n8n import:workflow --separate --input=./workflows/sur l'instance cible ;- Reconnexion manuelle des credentials si l'import se fait sur une nouvelle instance — les workflows importés référencent des IDs de credentials qui doivent exister côté destination, un point à vérifier systématiquement lors d'une migration.
Ce dernier point mérite d'être testé à froid au moins une fois, en environnement de staging, avant d'en avoir réellement besoin en production. Une restauration qui échoue silencieusement sur des credentials manquants — plutôt qu'avec une erreur claire — est un des pièges les plus fréquents des migrations n8n mal préparées, dans le même esprit que ce que nous détaillons dans notre guide sur la gestion des erreurs et l'Error Workflow.
Où ça s'articule avec vos packs FlowKit
Les workflows livrés dans le Pack Inbox IA (79 €), le Pack Assistant RAG (119 €) et le Pack Conformité & Audit (149 €) sont eux-mêmes des exports JSON n8n — exactement le format que produit export:workflow. Dès l'installation, le réflexe naturel consiste à committer ces fichiers tels quels dans votre propre dépôt de backup avant toute personnalisation : vous obtenez un point de retour connu et fonctionnel, puis chaque ajustement de prompt ou de logique métier devient un commit distinct et traçable plutôt qu'une modification perdue dans l'historique flou de l'éditeur. Le Bundle FlowKit Complet (269 € au lieu de 347 €) couvre les trois familles de workflows avec cette même logique de fichiers versionnables dès le départ.
Pièges fréquents
- Exporter sans
--separate: un fichier JSON unique pour tous les workflows rend les diffs et les revues de changement illisibles. - Committer des credentials déchiffrés : même sur un dépôt privé, ce sont des secrets en clair — traitez-les comme un mot de passe, jamais comme du code.
- Oublier le volume Docker : exporter « dans » un conteneur sans volume monté produit des fichiers qui disparaissent au prochain redémarrage.
- Ne jamais tester la restauration : un backup qui n'a jamais été réimporté n'est qu'une hypothèse de backup, pas un backup.
- IDs de credentials désynchronisés entre environnements : un import réussi peut malgré tout laisser des nodes IA ou Supabase orphelins de leurs identifiants sur l'instance cible.
Versionner ses workflows n8n ne demande ni licence payante ni outil tiers compliqué : deux commandes CLI, un script de dix lignes et une entrée crontab suffisent à transformer un dossier de workflows fragile en historique Git fiable, restaurable et audité — la même rigueur que celle qui sous-tend nos packs prêts à importer.
FAQ
Questions fréquentes
Faut-il payer le plan Business n8n pour versionner ses workflows avec Git ?
Non. La fonctionnalité native « Source Control » intégrée à l'éditeur n8n (push/pull en un clic vers un dépôt Git) est réservée aux plans Business et Enterprise, y compris en self-hosted. Mais la Community Edition gratuite embarque les commandes CLI export:workflow et import:workflow, qui suffisent largement à construire un backup Git automatisé fiable, sans licence payante.
Les credentials (clés API) sont-elles exportées avec les workflows ?
Un export standard de workflow ne contient jamais vos identifiants en clair, seulement une référence à leur ID. Les credentials s'exportent séparément avec n8n export:credentials, chiffrées par défaut. Pour cette raison, ne committez jamais un export de credentials déchiffré (--decrypted) dans un dépôt Git, même privé : gardez ce fichier hors du repo ou chiffré côté secrets manager.
Est-ce que je peux versionner mes workflows si mon instance n8n tourne dans Docker ?
Oui, il suffit d'exécuter les commandes d'export via docker exec depuis le conteneur n8n, en montant un volume partagé avec l'hôte pour que les fichiers JSON générés soient accessibles au script de backup et à Git. C'est le cas le plus courant pour les instances self-hosted qui font tourner les packs FlowKit.
Un export CLI restaure-t-il aussi bien qu'un vrai backup de base de données ?
Il restaure fidèlement la logique des workflows (nodes, connexions, paramètres), ce qui couvre l'essentiel d'un accident de configuration ou d'une migration. Il ne remplace pas un backup complet de la base Postgres/SQLite sous-jacente, qui contient aussi l'historique des exécutions : les deux sont complémentaires, pas interchangeables.
Bundle FlowKit Complet
269 €