Savoir installer et mettre à jour n8n c’est très bien, mais pour l’utiliser en production mieux vaut savoir mettre en place des sauvegardes efficaces, au risque de perdre tous vous workflows !
Installation du script de sauvegarde
Récupération de la configuration
Nous allons récupérer quelques fichiers depuis Github pour faciliter la configuration de notre sauvegarde.
Pour cela, voici la commande permettant de cloner ce que j'ai chez moi :
git clone https://github.com/tim-tiret/n8n-backup.git
Rendons nous ensuite dans le dossier créé.
cd n8n-backup
Personnalisation du script
Nous allons modifier le script pour notre configuration, pour cela, il est nécessaire d’ouvrir le fichier.
nano backup_n8n.sh
Cela se passe dans la section configuration au début du fichier.
# Configuration
BACKUP_DIR="/root/n8n-backup/backups"
DATA_FOLDER="/root/n8n-docker-caddy" # Le même que dans votre .env
RETENTION_DAYS=30
DATE=$(date +%Y-%m-%d_%H-%M-%S)
Lancer le script
C’est parti !
./backup_n8n.sh
Bravo, vous avez fait votre première sauvegarde ! 🎉
Tenter une restauration
Les sauvegardes ne sont pas très utiles si l’on ne peut pas les restaurer, on va donc utiliser le deuxième script (restore_n8n.sh
) pour restaurer la dernière sauvegarde.
Personnalisation du script
De la même manière qu'avant, on ouvre et on configure le fichier.
nano restore_n8n.sh
Chez moi, cela donne ça :
# Configuration
BACKUP_DIR="/root/n8n-backup/backups"
DATA_FOLDER="/root/n8n-docker-caddy"
Lancement du script
Espérons que ça fonctionne...
./restore_n8n.sh
On me demande si je veux bien restaurer les dernières sauvegardes trouvées, je dis oui avec y
.
Ça fonctionne ! ✅
Sauvegarde distante via SFTP/SSH
Bien qu’une sauvegarde interne puisse être utile, le mieux est d’avoir également un serveur distant pour éviter tous risques de pertes. L’on va donc effectuer une copie de nos fichiers de sauvegarde sur un serveur distant, en l’occurence un hébergement mutualisé C-Panel.
Installation de LFTP
Nous allons utiliser LFTP, un client FTP qui permet de faire un miroir sur un dossier distant facilement.
Voici la commande d’installation :
sudo apt update
sudo apt install lftp
Pour vérifier la bonne installation, on peut exécuter cette commande :
lftp --version
Configuration de la sauvegarde distante
Pour configurer la sauvegarde distante, il faut modifier les variables au début du script pour correspondre à notre besoin, par exemple :
nano backup_n8n.sh
# Configuration SFTP
SFTP_USER="admin" # le nom d'utilisateur sftp
SFTP_HOST="93.93.93.93" # l'ip de votre serveur de sauvegarde
SFTP_PORT="22" # le port pour le sftp de votre serveur de sauvegarde
SSH_KEY="/root/n8n-backup/key" # le chemin vers votre clé ssh (on la crée juste après)
REMOTE_DIR="sauvegardes" # le dossier distant
Ensuite, on décommente les lignes concernées en enlevant le hashtag devant (vers la fin du script).
# Envoi des sauvegardes via SFTP
log_message "Envoi des sauvegardes vers le serveur distant..."
lftp <<EOF
open -u $SFTP_USER, sftp://$SFTP_HOST:$SFTP_PORT
set sftp:connect-program "ssh -o StrictHostKeyChecking=accept-new -a -x -i $SSH_KEY"
mirror -R $BACKUP_DIR/ $REMOTE_DIR/
quit
EOF
Création et enregistrement d’une clé SSH
Nous allons maintenant générer une nouvelle clé SSH dans C-Panel, il n’est pas nécessaire de définir un mot de passe.




Il faut maintenant autoriser la clé, l’afficher et la copier.




On va maintenant la créer dans notre dossier n8n-backup sur le serveur (il suffit de coller ce qu'on a copié) :
nano key
Une fois fermé et enregistré, je modifie les droits sur la clé pour les réduire au maximum.
chmod 600 key
Avant de lancer le script pour la première fois, il sera peut-être également nécessaire d'ajouter votre hébergeur à vos "known_hosts", pour ce faire, vous pouvez lancer cette commande :
ssh -o StrictHostKeyChecking=ask -i $SSH_KEY $SFTP_USER@$SFTP_HOST -p $SFTP_PORT
Peut-être qu'il sera nécessaire d'exécuter une autre commande pour valider l'ajout qui sera normalement affichée à l'écran.
Lancement du script !
Tout semble prêt, je peux à présent lancer le script :
./backup_n8n.sh
Tout est copié sur le serveur distant ! 🎉
Automatiser la sauvegarde via Crontab
Une tâche CRON est programmée à l’avance et s’exécute à interval régulier.
Pour créer une tâche CRON, on utilise la Crontab de Linux, un espace où l’on peut définir des tâches pour qu’elles s’exécutent régulièrement.
Voici la commande pour y accéder :
crontab -e
La première fois qu’on essaie d’y accéder on nous demande quel éditeur l’on souhaite choisir, le plus simple est nano :
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 1
Ensuite, on écrit une ligne où l’on définit la fréquence à laquelle l’on veut éxecuter notre script, pour moi ce sera tous les jours à 18h30.
30 18 * * * /root/n8n-backup/backup_n8n.sh >> /var/log/n8n_backup.log 2>&1
Pour vérifier je vous conseille de faire le test avec une heure proche de la votre et de changer à nouveau après, par exemple s’il est bientôt 10h32 :
32 10 * * * /root/n8n-backup/backup_n8n.sh >> /var/log/n8n_backup.log 2>&1
🎉 Félicitations, cela devrais fonctionner !
Merci pour votre lecture.