FONCTIONNEMENT DU SCRIPT ################################################################################################## COMPRESSION DES DONNÉES ################################################################################################## Le dossier data de Vaultwarden est compressé afin de créer une archive: Exemple: tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" Le nom du fichier contient la date du jour : DATE=$(date +%F) BACKUP_NAME="vaultwarden-backup-$DATE.tar.gz" Cela permet d’avoir des sauvegardes facilement identifiables. ################################################################################################## TRANSFERT VERS LE SERVEUR DE BACKUP ################################################################################################## 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. Exemple: scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" 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. Exemple d'envoi de message: 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. Configuration: crontab -e Puis : 0 19 * * * /home/matt/vaultwarden/scripts/backup-vaultwarden.sh >> /home/matt/ vaultwarden/scripts/backup.log 2>&1 Signification: 0 19 * * * │ │ │ │ │ │ │ │ │ └── tous les jours de la semaine │ │ │ └──── tous les mois │ │ └────── tous les jours du mois │ └──────── 19h └────────── minute 0 Tous les jours à 19h, le script est exécuté. Les logs sont enregistrés dans : backup.log Cela permet d’analyser les erreurs si un problème survient. ################################################################################################## SÉCURITÉ AVEC LE FICHIER .ENV ################################################################################################## Les informations sensibles ne sont pas stockées directement dans le script. Elles sont placées dans un fichier .env Exemple: WEBHOOK_URL=... REMOTE_USER=... REMOTE_HOST=... SSH_KEY=... DATA_DIR=... Le script les valeurs : 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 = Exemple : REMOTE_USER="user" Le script récupère uniquement : "user" Cela permet: -d’améliorer la sécurité -d’éviter de modifier le script si un paramètre change ################################################################################################## NETTOYAGE ################################################################################################## Une fois la sauvegarde envoyée sur la machine distante, le fichier temporaire est supprimé: [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. ##################################################################################################