FONCTIONNEMENT DU SCRIPT VAULTWARDEN
Le script de backup de vaultwarden permet une sauvegard périodique des mots de passe et utilisateurs de celui-ci.
INITIALISATION DES VARIABLES DE MANIÈRE SÉCURISÉ
- Les informations sensibles ne sont pas stockées directement dans le script. Elles sont placées dans un fichier .env
WEBHOOK_URL=...
REMOTE_USER=...
REMOTE_HOST=...
SSH_KEY=...
DATA_DIR=...
- on recupere les varibales dans le script
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
- Le dossier data de Vaultwarden est dupliqué puis compressé afin de créer une archive :
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
- Transfer vers le serveur de backup
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.
- on défini le message
local msg="**@here Backup Vaultwarden $color**\n"
msg+="Backup: ${BACKUP_NAME}\n"
msg+="Data transfer: $dumps_display\n"
[[ -n "$details" ]] && msg+="Details: $details"
- on envoie le message sur discord avec le message et le webhook
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.
- Ouvrez le crontab pour l'édition :
crontab -e - Ajoutez la ligne suivante pour exécuter le script tous les jours à 19h :
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é :
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.