correction du script et readme

This commit is contained in:
2026-03-06 14:16:33 +01:00
parent 24c935c280
commit 3de25dae43
4 changed files with 194 additions and 161 deletions

View File

@@ -1,135 +1,118 @@
FONCTIONNEMENT DU SCRIPT
# FONCTIONNEMENT DU SCRIPT VAULTWARDEN
Le script de backup de vaultwarden permet une sauvegard périodique des mots de passe et utilisateurs de celui-ci.
##################################################################################################
COMPRESSION DES DONNÉES
##################################################################################################
## INITIALISATION DES VARIABLES DE MANIÈRE SÉCURISÉ
Le dossier data de Vaultwarden est compressé afin de créer une archive:
1. Les informations sensibles ne sont pas stockées directement dans le script. Elles sont placées dans un fichier .env
Exemple: tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
```bash
WEBHOOK_URL=...
REMOTE_USER=...
REMOTE_HOST=...
SSH_KEY=...
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-)
2. on recupere les varibales dans le script
```bash
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"
- 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
- daméliorer la sécurité
- déviter de modifier le script si un paramètre change
## RÉCUPÉRATION DES DONNÉES
##################################################################################################
NETTOYAGE
##################################################################################################
1. Le dossier data de Vaultwarden est dupliqué puis compressé afin de créer une archive :
```bash
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
```
Une fois la sauvegarde envoyée sur la machine distante, le fichier temporaire est supprimé:
2. Transfer vers le serveur de backup
```bash
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.
[rm -f "$LOCAL_BACKUP"]
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
```bash
local msg="**@here Backup Vaultwarden $color**\n"
msg+="Backup: ${BACKUP_NAME}\n"
msg+="Data transfer: $dumps_display\n"
[[ -n "$details" ]] && msg+="Details: $details"
```
2. on envoie le message sur discord avec le message et le webhook
```bash
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 :
```bash
crontab -e
```
2. Ajoutez la ligne suivante pour exécuter le script tous les jours à 19h :
```bash
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é :
```bash
rm -f "$LOCAL_BACKUP"
```
Cela permet de garder le serveur propre et éviter de remplir le disque.
##################################################################################################
RÉSUMÉ :
##################################################################################################
## 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
- 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.
##################################################################################################