Files
Malio-ops/backup_vaultwarden/README.md

3.3 KiB
Raw Blame History

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.