readme
This commit is contained in:
136
backup_vaultwarden/README.md
Normal file
136
backup_vaultwarden/README.md
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
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 d’avoir 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 l’erreur 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 d’analyser 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:
|
||||||
|
|
||||||
|
-d’amé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 d’avoir une sauvegarde quotidienne fiable et surveillée.
|
||||||
|
|
||||||
|
|
||||||
|
###################################################################################################################################################################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user