Files
Malio-ops/backup_vaultwarden/README.md
2026-03-06 08:55:48 +01:00

4.5 KiB
Raw Blame History

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 davoir 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 lerreur 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 danalyser 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:

-damé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 davoir une sauvegarde quotidienne fiable et surveillée.

##################################################################################################