Files
Malio-ops/backup_vaultwarden

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É

  1. 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=...
  1. 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:

  • damé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 :
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
  1. 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.

  1. 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"
  1. 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 lerreur si nécessaire

## PLANIFICATION AVEC CRON

Le script est exécuté automatiquement chaque jour grâce à cron.

  1. Ouvrez le crontab pour l'édition :
    crontab -e
    
  2. Ajoutez la ligne suivante pour exécuter le script tous les jours à 19h :
   0 19 * * * /chemin/vers/le/script/check_storage.sh

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é et les logs sont enregistrés dans backup.log ce qui permet danalyser 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 davoir une sauvegarde quotidienne fiable et surveillée.