Files
Malio-ops/BackupVaultWarden
2026-03-13 08:55:11 +01:00
..
2026-03-09 13:19:32 +01:00
2026-03-11 17:11:30 +01:00
2026-03-13 08:55:11 +01:00

markdown

README — Mise en place du script de sauvegarde Vaultwarden

Ce script permet dautomatiser la sauvegarde de Vaultwarden afin de conserver une copie du dossier data, de la transférer vers un serveur distant et denvoyer une notification Discord en cas de succès ou déchec.


1. Objectif du script

Le script de sauvegarde Vaultwarden permet de :

  • sauvegarder les données de Vaultwarden ;
  • compresser larchive avec un nom daté ;
  • transférer la sauvegarde vers un serveur distant ;
  • envoyer une notification Discord ;
  • automatiser lexécution via cron.

Ce mécanisme permet de sécuriser les mots de passe, les utilisateurs et la configuration stockés dans le dossier data de Vaultwarden.


2. Pré-requis

Avant de mettre en place le script, vérifier que les éléments suivants sont disponibles sur la machine Vaultwarden :

  • bash
  • tar
  • scp
  • ssh
  • curl
  • cron

Installation sur Debian / Ubuntu :

sudo apt update
sudo apt install -y tar openssh-client curl cron

3. Emplacement du script

Le script est situé dans :

/home/matt/vaultwarden/Malio-ops/BackupVaultWarden/

Structure recommandée :

/home/matt/vaultwarden/Malio-ops/BackupVaultWarden/
├── backup-vaultwarden.sh
├── .env
└── README.md

4. Configuration sécurisée avec le fichier .env

Les informations sensibles ne doivent pas être stockées directement dans le script. Elles doivent être placées dans un fichier .env.

Exemple de fichier .env

WEBHOOK_URL=https://discord.com/api/webhooks/...
REMOTE_USER=backup
REMOTE_HOST=192.168.1.50
SSH_KEY=/home/matt/.ssh/id_ed25519_vaultwarden_backup
DATA_DIR=/opt/vaultwarden/data
REMOTE_DIR=/home/backup/backups/vaultwarden

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

5. Chargement des variables dans le script

Le script récupère les variables du fichier .env.

Exemple :

REMOTE_USER=$(grep -E '^REMOTE_USER=' .env | cut -d '=' -f2-)

Explication :

  • grep recherche la variable dans .env
  • cut récupère uniquement la valeur après =
  • la variable shell reçoit la valeur correspondante

Cela permet :

  • d'améliorer la sécurité
  • de modifier la configuration sans toucher au script

6. Connexion au serveur de sauvegarde (Machine IA)

Le transfert des sauvegardes vers la machine IA repose sur une authentification par clé SSH.
Cette méthode permet au script de se connecter automatiquement au serveur distant sans mot de passe.

Génération de la clé SSH

Sur la machine exécutant les scripts :

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_bitwarden

Copier la clé sur le serveur distant :

ssh-copy-id -i ~/.ssh/id_ed25519_bitwarden.pub user@serveur

Tester la connexion sans mot de passe :

ssh -i ~/.ssh/id_ed25519_bitwarden backup@192.168.1.50

6.1 Vérifier la présence de la clé SSH

Sur la machine exécutant le script, vérifier que la clé existe :

ls ~/.ssh/id_ed25519_bitwarden*

Les fichiers attendus sont :

~/.ssh/id_ed25519_bitwarden
~/.ssh/id_ed25519_bitwarden.pub
  • id_ed25519_bitwarden → clé privée utilisée par le script
  • id_ed25519_bitwarden.pub → clé publique autorisée sur la machine IA

6.2 Copier la clé publique sur la machine IA

Envoyer la clé publique vers la machine IA :

ssh-copy-id -i ~/.ssh/id_ed25519_bitwarden.pub backup@192.168.0.179

Cette commande ajoute automatiquement la clé dans :

~/.ssh/authorized_keys

sur la machine IA.


6.3 Ajout manuel de la clé (si ssh-copy-id n'est pas disponible)

Afficher la clé publique :

cat ~/.ssh/id_ed25519_bitwarden.pub

Copier son contenu puis lajouter sur la machine IA dans :

~/.ssh/authorized_keys

6.4 Vérifier les permissions SSH

Sur la machine locale :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519_bitwarden
chmod 644 ~/.ssh/id_ed25519_bitwarden.pub

Sur la machine IA :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

6.5 Déclaration dans le fichier .env

La clé utilisée par le script doit être déclarée dans .env :

SSH_KEY=/home/matt/.ssh/id_ed25519_bitwarden

Cette clé sera utilisée automatiquement par scp lors du transfert des sauvegardes.

7. Sauvegarde des données Vaultwarden

Le script crée une archive compressée du dossier data :

tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"

Cela permet dobtenir une sauvegarde portable et compressée.


8. Transfert vers le serveur distant

Une fois larchive créée :

scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"

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.

Construction du message :

local msg="**@here Backup Vaultwarden $color**\n"
msg+="Backup: ${BACKUP_NAME}\n"
msg+="Data transfer: $dumps_display\n"
[[ -n "$details" ]] && msg+="Details: $details"

Envoi du message :

curl -fsS -H "Content-Type: application/json" \
-d "{\"content\":\"$msg\"}" \
"$WEBHOOK_URL"

Le message indique :

  • si la sauvegarde a réussi
  • si elle a échoué
  • le nom du backup
  • les détails de lerreur

10. Planification avec cron

Le script est exécuté automatiquement tous les jours à 19h.

Ouvrir le crontab :

crontab -e

Ajouter :

0 19 * * * /home/matt/vaultwarden/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh >> /var/log/vaultwarden_backup.log 2>&1

Signification :

Champ Valeur
minute 0
heure 19
jour du mois *
mois *
jour semaine *

Le script sexécute donc tous les jours à 19h00.


11. Nettoyage

Une fois la sauvegarde transférée :

rm -f "$LOCAL_BACKUP"

Cela évite de remplir le disque de la machine Vaultwarden.


12. Test manuel

Avant de mettre le script en cron, tester :

bash /home/matt/vaultwarden/Malio-ops/BackupVaultWarden/backup-vaultwarden.sh

13. Vérification des logs

Logs :

cat /var/log/vaultwarden_backup.log

14. Résumé

Le script automatise :

  • la sauvegarde du dossier data
  • la compression et la datation du backup
  • le transfert sécurisé via SSH
  • la notification Discord
  • lexécution automatique via cron
  • la configuration sécurisée via .env

Ce système permet dobtenir une sauvegarde fiable, centralisée et surveillée de Vaultwarden.