fix : correctifs 002 a 006 et de 008 a 019

This commit is contained in:
2026-03-18 10:12:33 +01:00
parent fb1aaac418
commit 0dddecd08f
12 changed files with 89 additions and 61 deletions

View File

@@ -2,6 +2,9 @@
# VAULTWARDEN BACKUP CONFIGURATION
#############################################
# Webhook Discord pour notifications (optionnel)
DISCORD_WEBHOOK_URL=
# Répertoire contenant les données Vaultwarden
DATA_DIR=

View File

@@ -1,4 +1,3 @@
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.
@@ -67,8 +66,8 @@ Elles doivent être placées dans un fichier `.env`.
```bash
WEBHOOK_URL=https://discord.com/api/webhooks/...
REMOTE_USER=backup
REMOTE_HOST=192.168.1.50
REMOTE_USER=<USER>
REMOTE_HOST=<IP_SERVEUR>
SSH_KEY=/home/matt/.ssh/id_ed25519_vaultwarden_backup
DATA_DIR=/opt/vaultwarden/data
REMOTE_DIR=/home/backup/backups/vaultwarden
@@ -89,24 +88,27 @@ REMOTE_DIR=/home/backup/backups/vaultwarden
# 5. Chargement des variables dans le script
Le script récupère les variables du fichier `.env`.
Le script charge directement le fichier `.env` avec `source` et exporte automatiquement les variables pendant le chargement.
Exemple :
Mécanisme utilisé :
```bash
REMOTE_USER=$(grep -E '^REMOTE_USER=' .env | cut -d '=' -f2-)
set -a
source "$ENV_FILE"
set +a
```
Explication :
* `grep` recherche la variable dans `.env`
* `cut` récupère uniquement la valeur après `=`
* la variable shell reçoit la valeur correspondante
* `set -a` exporte automatiquement les variables définies ensuite
* `source "$ENV_FILE"` lit et exécute le contenu du fichier `.env` dans le shell courant
* `set +a` désactive ensuite l'export automatique
Cela permet :
* d'améliorer la sécurité
* de modifier la configuration sans toucher au script
* de charger toutes les variables du fichier `.env` en une seule fois
* de conserver la configuration en dehors du script
* de rester aligné avec le comportement réel du script
---
@@ -125,7 +127,7 @@ ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_bitwarden
#### 2. Copie de la clé vers le serveur distant
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_bitwarden.pub backup@192.168.0.179
ssh-copy-id -i ~/.ssh/id_ed25519_bitwarden.pub <USER>@<IP_SERVEUR>
```
Cette commande ajoute la clé dans :

View File

@@ -33,7 +33,7 @@ set +a
#######################################
# Variables obligatoires
#######################################
: "${WEBHOOK_URL:=}"
: "${DISCORD_WEBHOOK_URL:=}"
: "${DATA_DIR:?Variable DATA_DIR manquante dans .env}"
: "${LOCAL_BACKUP:?Variable LOCAL_BACKUP manquante dans .env}"
: "${REMOTE_USER:?Variable REMOTE_USER manquante dans .env}"
@@ -47,13 +47,12 @@ set +a
DATE="$(date +'%Y-%m-%d_%H-%M-%S')"
BACKUP_PREFIX="vaultwarden-backup"
BACKUP_NAME="${BACKUP_PREFIX}-${DATE}.tar.gz"
LOCAL_BACKUP_DIR="$LOCAL_BACKUP"
LOCAL_BACKUP_FILE="${LOCAL_BACKUP_DIR}/${BACKUP_NAME}"
RETENTION_DAYS=10
LOCAL_BACKUP_FILE="${LOCAL_BACKUP}/${BACKUP_NAME}"
RETENTION_DAYS="${BACKUP_RETENTION_DAYS:-10}"
SSH_OPTS=(-i "$SSH_KEY" -o IdentitiesOnly=yes -o BatchMode=yes -o ConnectTimeout=10)
mkdir -p "$LOCAL_BACKUP_DIR"
mkdir -p "$LOCAL_BACKUP"
#######################################
# Notification Discord
@@ -62,7 +61,7 @@ discord_ping() {
local success="$1"
local details="${2:-}"
[[ -z "$WEBHOOK_URL" ]] && return 0
[[ -z "$DISCORD_WEBHOOK_URL" ]] && return 0
local icon status_line
if [[ "$success" == "true" ]]; then
@@ -81,10 +80,9 @@ discord_ping() {
msg+="Data transfer: ${status_line}\n"
[[ -n "$details" ]] && msg+="Détails: ${details}"
python3 - <<PY | curl -fsS -H "Content-Type: application/json" -d @- "$WEBHOOK_URL" >/dev/null || true
import json
print(json.dumps({"content": """$msg"""}))
PY
local payload
payload="$(jq -n --arg content "$msg" '{content: $content}')"
curl -fsS -H "Content-Type: application/json" -d "$payload" "$DISCORD_WEBHOOK_URL" >/dev/null || true
}
#######################################