# FONCTIONNEMENT DU SCRIPT VAULTWARDEN Le script de backup de vaultwarden permet une sauvegarde périodique des mots de passe et utilisateurs de celui-ci. ## INITIALISATION DES VARIABLES DE MANIÈRE SÉCURISÉ 1. Les informations sensibles ne sont pas stockées directement dans le script. Elles sont placées dans un fichier .env ```bash WEBHOOK_URL=... REMOTE_USER=... REMOTE_HOST=... SSH_KEY=... DATA_DIR=... ``` 2. on récupère les variables dans le script ```bash REMOTE_USER=$(grep -E '^REMOTE_USER=' .env | cut -d '=' -f2-) ``` Explication: - grep recherche la variable dans le fichier .env - cut récupère uniquement la valeur après = - REMOTE_USER="user" Le script récupère >> "user" Cela permet: - d’améliorer la sécurité - d’éviter de modifier le script si un paramètre change ## RÉCUPÉRATION DES DONNÉES 1. Le dossier data de Vaultwarden est dupliqué puis compressé afin de créer une archive : ```bash tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" ``` 2. Transfer vers le serveur de backup ```bash scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" ``` La sauvegarde est envoyée vers une machine dédiée grâce à SCP. Pour éviter de saisir un mot de passe à chaque fois, une clé SSH est utilisée. Cette clé SSH est générée sur la machine de backup et autorisée sur la machine Vaultwarden. ## NOTIFICATION DISCORD Le script envoie une notification sur un salon Discord pour informer de l’état de la sauvegarde. Cela se fait grâce à un webhook Discord. 1. on défini le message ```bash local msg="**@here Backup Vaultwarden $color**\n" msg+="Backup: ${BACKUP_NAME}\n" msg+="Data transfer: $dumps_display\n" [[ -n "$details" ]] && msg+="Details: $details" ``` 2. on envoie le message sur discord avec le message et le webhook ```bash curl -fsS -H "Content-Type: application/json" \ -d "{\"content\":\"$msg\"}" \ "$DISCORD_WEBHOOK_URL" ``` Le message indique: - si la sauvegarde a réussi 🟢 - si elle a échoué 🔴 - le nom du backup - les détails de l’erreur si nécessaire ## PLANIFICATION AVEC CRON Le script est exécuté automatiquement chaque jour grâce à cron. 1. Ouvrez le crontab pour l'édition : ```bash crontab -e ``` 2. Ajoutez la ligne suivante pour exécuter le script tous les jours à 19h : ```bash 0 19 * * * /chemin/vers/le/script/check_storage.sh ``` Signification: - 0 minute 0 - 19 19h - * tous les jours du mois - * tous les mois - * tous les jours de la semaine Tous les jours à 19h, le script est exécuté et les logs sont enregistrés dans backup.log ce qui permet d’analyser les erreurs si un problème survient. ## NETTOYAGE Une fois la sauvegarde envoyée sur la machine distante, le fichier temporaire est supprimé : ```bash rm -f "$LOCAL_BACKUP" ``` Cela permet de garder le serveur propre et éviter de remplir le disque. ## RÉSUMÉ Le script automatise complètement les sauvegardes Vaultwarden : - sauvegarde du dossier data - compression et datation - transfert sécurisé via SSH - notification Discord - exécution automatique avec cron - sécurisation des paramètres via .env Cela permet d’avoir une sauvegarde quotidienne fiable et surveillée.