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

136 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
##################################################################################################