fix : correctifs 002 a 006 et de 008 a 019
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
# VAULTWARDEN BACKUP CONFIGURATION
|
||||
#############################################
|
||||
|
||||
# Webhook Discord pour notifications (optionnel)
|
||||
DISCORD_WEBHOOK_URL=
|
||||
|
||||
# Répertoire contenant les données Vaultwarden
|
||||
DATA_DIR=
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
markdown
|
||||
# README — Mise en place du script de sauvegarde Vaultwarden
|
||||
|
||||
Ce script permet d’automatiser la sauvegarde de Vaultwarden afin de conserver une copie du dossier `data`, de la transférer vers un serveur distant et d’envoyer 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 :
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
#######################################
|
||||
|
||||
Reference in New Issue
Block a user