Configuration et Backup de votre conteneur n8n.io

Introduction
Section intitulée « Introduction »Dans ce court billet de blog, je souhaiterais revenir sur l’installation de n8n.io que j’ai déjà mentionné ici. L’idée est ce monter une instance d’n8n.io et de la backup en local.
Installation
Section intitulée « Installation »Création des conteneurs
Section intitulée « Création des conteneurs »Je vais installer mon instance n8n.io sur sur mon serveur Portainer pour mes tests :
Ici, je vais créer une stack simple n8n-postgres
avec docker-compose :
- Un conteneur n8n
- Un conteneur Postgres 12
Voici ma configuration :
version: '3.8'
services: n8n: image: n8nio/n8n volumes: - backup-n8n:/backup ports: - "5678:5678" environment: - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_SECURE_COOKIE=false - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=db - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=MonSuperMotPasse depends_on: - db restart: unless-stopped
db: image: postgres:12 volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_USER=n8n - POSTGRES_PASSWORD=MonSuperMotPasse - POSTGRES_DB=n8n restart: unless-stopped
volumes: db-data: backup-n8n:
Par rapport à une configuration classique, j’ai ajouté cette ligne :
- N8N_SECURE_COOKIE=false
Ceci permet de pouvoir configurer n8n en local sans https pour le moment. Nous reviendrons sur cette plus tard quand nous aurons terminé la configuration de notre serveur (dans cet exemple avec Nginx).
Créations du compte
Section intitulée « Créations du compte »Une fois la stack lancé rendez-vous sur l’url de votre instance Portainer puis http://monip:5678/setup
puis créer votre compte.
Sur la version actuelle de mon instance d’n8n il est proposé d’obtenir gratuitement une clé de licence qui donne accès à des fonctionnalités payantes :
Vous pouvez en effet le faire, cela sera utile.
Import & export des Workflow/credentials depuis un container docker
Section intitulée « Import & export des Workflow/credentials depuis un container docker »Création d’un volume de backup
Section intitulée « Création d’un volume de backup »Si vous avez utilisé le docker-compose de cet article vous voyez que l’on a créé un volume pour les backups :
volumes: - backup-n8n:/backup
Pour éviter les erreurs liées a des permissions sur le fichier de configuration, comme celle ci-dessous, j’ai rajouté une ligne dans le docker-compose que l’on retira par la suite
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
Export des credentials
Section intitulée « Export des credentials »Vous pouvez exporter vos credentials avec cette commande.
docker exec n8n-postgres-n8n-1 n8n export:credentials --backup --output=/home/node/backups/latest/
ou de façon décrypté avec cette commande :
docker exec n8n-postgres-n8n-1 n8n export:credentials --all --decrypted --output=/home/node/backup/decrypt.json
Import des credentials
Section intitulée « Import des credentials »Vous pouvez importer vos credentials avec cette commande :
docker exec n8n-postgres-n8n-1 n8n import:workflow --input=/home/node/backup/decrypt.json
Export des Workflow
Section intitulée « Export des Workflow »Vous pouvez exporter vos Worflow comme ceci :
docker exec n8n-postgres-n8n-1 n8n export:workflow --backup --output=/home/node/backup/$now/workflows/
Import des Workflow
Section intitulée « Import des Workflow »Dans ce volumes, vous pouvez placer votre dossier contenant les Workflow à importer si vous en avez, utiliser ensuite la commande suivante :
docker exec -it -u node n8n-postgres-n8n-1 n8n import:workflow --separate --input /backup/votre_dossier_backup
Le script de backup
Section intitulée « Le script de backup »Du coup voici mon script de backup :
#!/bin/bashnow=$(date +'%Y-%m-%d_%H-%M')echo "Making backup folder for $now in n8n"mkdir "/mnt/user/DATA/Backup/n8n/$now/"mkdir "/mnt/user/DATA/Backup/n8n/$now/workflows"mkdir "/mnt/user/DATA/Backup/n8n/$now/credentials"
echo "Exporting Workflow in folder"docker exec n8n-postgres-n8n-1 n8n export:workflow --backup --output=/home/node/backup/$now/workflows/
echo "Exporting Credentials in folder"docker exec n8n-postgres-n8n-1 n8n export:credentials --all --decrypted --output=/home/node/backup/$now/credentials/decrypt.json
Conclusion
Section intitulée « Conclusion »Nous avons vu ici comment gérer les backup d’une instance local de n8n, mais également comment importer des workflows et des credentials dans une autre instance.