Documentation des Workflows N8N
Vue d'ensemble
Ce document détaille les workflows N8N créés pour automatiser la disaster recovery de Vaultwarden.
Workflows disponibles
1. Sauvegarde quotidienne (daily_backup_workflow.json)
Objectif : Effectuer une sauvegarde automatique tous les jours à 2h du matin.
Déclencheur : Cron 0 2 * * * (2h00 chaque jour)
Étapes :
- Schedule Daily Backup - Déclencheur cron quotidien
- Execute Backup Script - Exécution du script de sauvegarde
- Check Backup Success - Vérification du succès via JSON de retour
- Upload to Google Drive - Upload de la sauvegarde SQLite (si succès)
- Send Success Notification - Notification Telegram de succès
- Send Failure Notification - Notification Telegram d'échec
- Cleanup Old Backups - Suppression des sauvegardes > 30 jours
Variables d'environnement utilisées :
TELEGRAM_CHAT_IDBACKUP_RETENTION_DAYS
Outputs esperés :
- Fichier SQLite dans
/backups/vaultwarden/daily/ - Archive tar.gz complète
- Notification Telegram avec tailles des fichiers
- Upload Google Drive de la sauvegarde SQLite
2. Monitoring de santé (health_monitoring_workflow.json)
Objectif : Surveiller Vaultwarden toutes les 15 minutes et réagir aux pannes.
Déclencheur : Cron */15 * * * * (toutes les 15 minutes)
Étapes :
- Schedule Health Check - Déclencheur cron 15min
- Execute Health Check - Script de vérification santé
- Check Health Status - Test si statut = "healthy"
- Is Service Down - Test si statut = "down"
- Restart Container - Redémarrage automatique Docker
- Send Critical Alert - Alerte critique (service down)
- Send Warning Alert - Alerte warning (dégradé)
- Wait Before Recheck - Attente 30s après redémarrage
- Recheck After Restart - Nouvelle vérification santé
- Check Recovery - Test si récupération OK
- Send Recovery Notification - Notification de récupération
- Send Recovery Failure - Notification d'échec récupération
Statuts gérés :
healthy: Aucune actiondegraded: Notification warningdown: Redémarrage + alerte critiquecritical: Alerte critique
Logique de redémarrage :
- Détection service down
- Tentative redémarrage Docker
- Attente 30 secondes
- Nouvelle vérification
- Notification du résultat
3. Test de restauration mensuel (monthly_test_restore_workflow.json)
Objectif : Valider l'intégrité des sauvegardes le 1er de chaque mois.
Déclencheur : Cron 0 3 1 * * (3h00 le 1er du mois)
Étapes :
- Schedule Monthly Test - Déclencheur mensuel
- Find Latest Backup - Recherche de la dernière sauvegarde
- Check Backup Exists - Vérification existence fichier
- Create Test Container - Container temporaire Vaultwarden
- Test Backup Integrity - Test structure SQLite
- Count Users in Backup - Comptage utilisateurs
- Count Ciphers in Backup - Comptage coffres/entrées
- Validate Data Exists - Validation données > 0
- Send Success Report - Rapport de succès détaillé
- Send Failure Report - Rapport d'échec
- Send No Backup Alert - Alerte aucune sauvegarde
- Cleanup Test Container - Suppression container test
Validations effectuées :
- Existence du fichier de sauvegarde
- Intégrité de la structure SQLite
- Présence de données utilisateur
- Cohérence du nombre d'entrées
Container de test :
- Image :
vaultwarden/server:latest - Volume : Sauvegarde montée en lecture seule
- Nommage :
vaultwarden-test-YYYYMMDD - Suppression automatique après test
Configuration des credentials
Telegram Bot
Dans N8N, créez un credential "Telegram Bot" :
- Name :
Telegram Bot - Access Token : Token obtenu de @BotFather
Google Drive
Dans N8N, créez un credential "Google Drive OAuth2 API" :
- Grant Type : Authorization Code
- Client ID : Depuis Google Cloud Console
- Client Secret : Depuis Google Cloud Console
- Authorization URL :
https://accounts.google.com/o/oauth2/v2/auth - Access Token URL :
https://oauth2.googleapis.com/token - Scope :
https://www.googleapis.com/auth/drive.file
SMTP/Email (optionnel)
Pour notifications email de secours :
- Host :
smtp-relay.brevo.com - Port :
587 - Security :
STARTTLS - Username/Password : Depuis compte Brevo
Personnalisation des workflows
Modification des horaires
Éditez les expressions cron dans les nœuds "Schedule" :
- Quotidien :
0 2 * * *(2h du matin) - Monitoring :
*/15 * * * *(toutes les 15min) - Mensuel :
0 3 1 * *(1er du mois à 3h)
Ajout de stockages cloud
Pour ajouter AWS S3 ou autres :
- Ajoutez le nœud correspondant après "Check Backup Success"
- Configurez les credentials
- Adaptez les notifications pour inclure le nouveau stockage
Personnalisation des notifications
Modifiez les nœuds Telegram pour :
- Changer le format des messages
- Ajouter des emojis personnalisés
- Inclure des métriques supplémentaires
- Ajouter des liens vers monitoring
Ajout de webhooks
Pour intégrer avec Slack, Discord, etc. :
- Remplacez/complétez les nœuds Telegram
- Configurez les webhooks appropriés
- Adaptez le format des messages JSON
Monitoring et logs
Logs N8N
Les exécutions sont visibles dans l'interface N8N :
- Historique des exécutions
- Détails de chaque nœud
- Messages d'erreur détaillés
- Métriques de performance
Logs des scripts
Scripts génèrent des logs dans /backups/logs/ :
backup_YYYYMMDD_HHMMSS.log: Logs de sauvegardehealthcheck_YYYYMMDD.log: Logs de monitoring
Alertes par email
Configurez un nœud SMTP en cas d'échec critique :
{
"to": "[email protected]",
"subject": "🚨 Alerte critique Vaultwarden",
"body": "Détails de l'incident..."
}
Résolution de problèmes
Échecs de sauvegarde
Causes fréquentes :
- Permissions insuffisantes sur
/backups - Container Vaultwarden arrêté
- Espace disque insuffisant
- Problèmes réseau (upload cloud)
Actions :
- Vérifier les logs du script
- Tester manuellement :
./scripts/backup/vaultwarden_backup.sh daily - Contrôler l'espace disque :
df -h
Échecs de monitoring
Causes fréquentes :
- URL incorrecte dans les variables d'env
- Certificats SSL expirés
- Firewall bloquant les requêtes
Actions :
- Tester manuellement :
curl https://vault.yolo.yt/alive - Vérifier les certificats SSL
- Contrôler les logs Nginx Proxy Manager
Échecs de test mensuel
Causes fréquentes :
- Sauvegardes corrompues
- Container Docker non fonctionnel
- Permissions sur les volumes
Actions :
- Tester la sauvegarde manuellement avec SQLite
- Vérifier l'intégrité :
sqlite3 backup.db .schema - Contrôler les logs Docker
Évolutions suggérées
Court terme
- Ajouter monitoring espace disque
- Inclure métriques système dans rapports
- Rotation automatique des logs
Moyen terme
- Tests de charge sur les restaurations
- Sauvegarde différentielle
- Intégration monitoring existant (Grafana, Prometheus)
Long terme
- Réplication multi-sites
- Automatisation complète disaster recovery
- Tests de basculement automatiques