fix : changelog plus readme a jour

This commit is contained in:
2026-03-18 21:24:30 +01:00
parent fac2a5b47f
commit 7b91691ef8
23 changed files with 653 additions and 278 deletions

View File

@@ -28,12 +28,13 @@ Avant de mettre en place le script, vérifier que les éléments suivants sont d
- `ssh`
- `curl`
- `cron`
- `jq`
Installation sur Debian / Ubuntu :
```bash
sudo apt update
sudo apt install -y tar openssh-client curl cron
sudo apt install -y tar openssh-client curl cron jq
````
---
@@ -43,13 +44,13 @@ sudo apt install -y tar openssh-client curl cron
Le script est situé dans :
```bash
/home/matt/vaultwarden/Malio-ops/BackupVaultWarden/
/home/<USER>/Malio-ops/BackupVaultWarden/
```
Structure recommandée :
```bash
/home/matt/vaultwarden/Malio-ops/BackupVaultWarden/
/home/<USER>/Malio-ops/BackupVaultWarden/
├── backup-vaultwarden.sh
├── .env
└── README.md
@@ -65,24 +66,36 @@ Elles doivent être placées dans un fichier `.env`.
## Exemple de fichier `.env`
```bash
WEBHOOK_URL=https://discord.com/api/webhooks/...
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
REMOTE_USER=<USER>
REMOTE_HOST=<IP_SERVEUR>
SSH_KEY=/home/matt/.ssh/id_ed25519_vaultwarden_backup
SSH_KEY=/home/<USER>/.ssh/id_ed25519_backup
DATA_DIR=/opt/vaultwarden/data
LOCAL_BACKUP=/var/backups/vaultwarden
REMOTE_DIR=/home/backup/backups/vaultwarden
# BACKUP_REMOTE_SSH_PORT=22
# SSH_CONNECT_TIMEOUT=10
# BACKUP_KNOWN_HOSTS_STRICT=yes
# BACKUP_KNOWN_HOSTS_FILE=/root/.ssh/known_hosts
# BACKUP_RETENTION_DAYS=10
```
## Description des variables
| Variable | Description |
| ----------- | ------------------------------------------------------ |
| WEBHOOK_URL | Webhook Discord pour les notifications |
| REMOTE_USER | Utilisateur du serveur distant |
| REMOTE_HOST | Adresse IP ou DNS du serveur de sauvegarde |
| SSH_KEY | Chemin vers la clé SSH utilisée pour le transfert |
| DATA_DIR | Dossier `data` de Vaultwarden |
| REMOTE_DIR | Dossier de stockage des backups sur le serveur distant |
| Variable | Description |
| --------------------- | -------------------------------------------------------------------- |
| DISCORD_WEBHOOK_URL | Webhook Discord pour les notifications |
| REMOTE_USER | Utilisateur du serveur distant |
| REMOTE_HOST | Adresse IP ou DNS du serveur de sauvegarde |
| SSH_KEY | Chemin vers la clé SSH utilisée pour le transfert |
| DATA_DIR | Dossier `data` de Vaultwarden |
| LOCAL_BACKUP | Dossier local où stocker temporairement l'archive |
| REMOTE_DIR | Dossier de stockage des backups sur le serveur distant |
| BACKUP_REMOTE_SSH_PORT | Port SSH du serveur distant, optionnel, défaut `22` |
| SSH_CONNECT_TIMEOUT | Timeout SSH en secondes, optionnel, défaut `10` |
| BACKUP_KNOWN_HOSTS_STRICT | Validation stricte des hôtes SSH (`yes`/`no`) |
| BACKUP_KNOWN_HOSTS_FILE | Fichier `known_hosts` utilisé par `ssh`/`scp` |
| BACKUP_RETENTION_DAYS | Nombre de jours de conservation distante, optionnel, défaut `10` |
---
@@ -121,13 +134,13 @@ Le transfert des sauvegardes utilise une **clé SSH** afin de permettre une conn
Sur la machine exécutant les scripts :
```bash
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_bitwarden
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_backup
```
#### 2. Copie de la clé vers le serveur distant
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_bitwarden.pub <USER>@<IP_SERVEUR>
ssh-copy-id -i ~/.ssh/id_ed25519_backup.pub <USER>@<IP_SERVEUR>
```
Cette commande ajoute la clé dans :
@@ -141,20 +154,20 @@ sur la machine IA.
#### 3. Vérification de la connexion
```bash
ssh -i ~/.ssh/id_ed25519_bitwarden backup@192.168.0.179
ssh -i ~/.ssh/id_ed25519_backup -o StrictHostKeyChecking=yes <USER>@<IP_SERVEUR>
```
#### 4. Vérification des fichiers de clé
```bash
ls ~/.ssh/id_ed25519_bitwarden*
ls ~/.ssh/id_ed25519_backup*
```
Fichiers attendus :
```
~/.ssh/id_ed25519_bitwarden
~/.ssh/id_ed25519_bitwarden.pub
~/.ssh/id_ed25519_backup
~/.ssh/id_ed25519_backup.pub
```
#### 5. Permissions SSH
@@ -163,8 +176,8 @@ Machine locale :
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519_bitwarden
chmod 644 ~/.ssh/id_ed25519_bitwarden.pub
chmod 600 ~/.ssh/id_ed25519_backup
chmod 644 ~/.ssh/id_ed25519_backup.pub
```
Machine distante :
@@ -174,10 +187,19 @@ chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
#### 6. Déclaration dans `.env`
#### 6. Provisionnement de `known_hosts`
Le script est prévu pour fonctionner avec validation stricte des hôtes SSH.
```bash
SSH_KEY=/home/matt/.ssh/id_ed25519_bitwarden
ssh-keyscan -H <IP_SERVEUR> >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/known_hosts
```
#### 7. Déclaration dans `.env`
```bash
SSH_KEY=/home/<USER>/.ssh/id_ed25519_backup
```
Cette clé sera utilisée automatiquement par les scripts (`scp` / `ssh`) pour transférer les sauvegardes.
@@ -188,7 +210,7 @@ Cette clé sera utilisée automatiquement par les scripts (`scp` / `ssh`) pour t
Le script crée une archive compressée du dossier `data` :
```bash
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
tar -czf "$LOCAL_BACKUP_FILE" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
```
Cela permet dobtenir une sauvegarde portable et compressée.
@@ -200,7 +222,7 @@ Cela permet dobtenir une sauvegarde portable et compressée.
Une fois larchive créée :
```bash
scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
scp "${SCP_OPTS[@]}" "$LOCAL_BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
```
Le fichier est envoyé vers le serveur de sauvegarde via SCP.
@@ -209,23 +231,22 @@ Le fichier est envoyé vers le serveur de sauvegarde via SCP.
# 9. Notification Discord
Le script envoie une notification Discord pour informer de l’état de la sauvegarde.
Le script envoie une notification Discord pour informer de l'etat de la sauvegarde.
Construction du message :
```bash
local msg="**@here Backup Vaultwarden $color**\n"
msg="**${ping}Backup Vaultwarden ${icon}**\n"
msg+="Backup: ${BACKUP_NAME}\n"
msg+="Data transfer: $dumps_display\n"
[[ -n "$details" ]] && msg+="Details: $details"
msg+="Data transfer: ${status_line}\n"
[[ -n "$details" ]] && msg+="Détails: ${details}"
```
Envoi du message :
```bash
curl -fsS -H "Content-Type: application/json" \
-d "{\"content\":\"$msg\"}" \
"$WEBHOOK_URL"
payload="$(jq -n --arg content "$msg" '{content: $content}')"
curl -fsS -H "Content-Type: application/json" -d "$payload" "$DISCORD_WEBHOOK_URL"
```
Le message indique :
@@ -237,7 +258,27 @@ Le message indique :
---
# 10. Planification avec cron
# 10. Rotation distante des sauvegardes
Le script supprime les archives distantes plus anciennes que la durée de retention configurée.
Configuration dans `.env` :
```bash
# BACKUP_RETENTION_DAYS=10
```
Commande utilisée :
```bash
find "$REMOTE_DIR" -type f -name 'vaultwarden-backup-*.tar.gz' -mtime +$RETENTION_DAYS -delete
```
Si la variable n'est pas définie, le script utilise `10` jours par défaut.
---
# 11. Planification avec cron
Le script est exécuté automatiquement tous les jours à 19h.
@@ -250,7 +291,7 @@ crontab -e
Ajouter :
```bash
0 19 * * * /home/matt/vaultwarden/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh >> /var/log/vaultwarden_backup.log 2>&1
0 19 * * * /home/<USER>/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh >> /var/log/vaultwarden_backup.log 2>&1
```
Signification :
@@ -267,29 +308,29 @@ Le script sexécute donc **tous les jours à 19h00**.
---
# 11. Nettoyage
# 12. Nettoyage
Une fois la sauvegarde transférée :
```bash
rm -f "$LOCAL_BACKUP"
rm -f "$LOCAL_BACKUP_FILE"
```
Cela évite de remplir le disque de la machine Vaultwarden.
---
# 12. Test manuel
# 13. Test manuel
Avant de mettre le script en cron, tester :
```bash
bash /home/matt/vaultwarden/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh
bash /home/<USER>/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh
```
---
# 13. Vérification des logs
# 14. Vérification des logs
Logs :
@@ -299,7 +340,7 @@ cat /var/log/vaultwarden_backup.log
---
# 14. Résumé
# 15. Résumé
Le script automatise :