cron + modif script + webhook

This commit is contained in:
2026-03-05 15:31:00 +01:00
parent 2465046d79
commit ec8aeb7048
5 changed files with 101 additions and 25 deletions

View File

@@ -1,25 +0,0 @@
#!/bin/bash
DATE=$(date +%F)
BACKUP_NAME="vaultwarden-backup-$DATE.tar.gz"
# dossier source à sauvegarder
DATA_DIR="/home/matt/vaultwarden/data"
# chemin pour le fichier backup local temporaire
LOCAL_BACKUP="/home/matt/vaultwarden/$BACKUP_NAME"
# serveur de backup
REMOTE_USER="malio-b"
REMOTE_HOST="chat.malio-dev.fr"
REMOTE_DIR="/home/malio-b/backups/bitwarden"
# --- Compression du dossier data ---
tar -czf "$LOCAL_BACKUP" -C "$(dirname $DATA_DIR)" "$(basename $DATA_DIR)"
# --- Envoi vers le serveur de backup ---
scp "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
# --- Nettoyage du backup local ---
rm -f "$LOCAL_BACKUP"

8
backup_vaultwarden/.env Normal file
View File

@@ -0,0 +1,8 @@
WEBHOOK_URL="https://discord.com/api/webhooks/1478503102888935506/YCtJM09QZiKNMiCe5u7vCQb52VcLjHAd9wwEsKNltlJVcy7sKvoMTOJkvEKOOrk-Wpkh"
REMOTE_USER="malio-b"
REMOTE_HOST="chat.malio-dev.fr"
REMOTE_DIR="/home/malio-b/backups/bitwarden"
SSH_KEY="/home/matt/.ssh/id_ed25519_bitwarden"
SSH_OPTS=(-i "$SSH_KEY" -o IdentitiesOnly=yes -o BatchMode=yes -o ConnectTimeout=10)
DATA_DIR="/home/matt/vaultwarden/data"
LOCAL_BACKUP="/home/matt/vaultwarden/$BACKUP_NAME"

View File

@@ -0,0 +1,6 @@
DATA_DIR=
LOCAL_BACKUP=
REMOTE_USER=
REMOTE_HOST=
REMOTE_DIR=
SSH_KEY=

View File

@@ -0,0 +1,82 @@
#!/bin/bash
#######################################
# Config Discord Webhook
#######################################
DISCORD_WEBHOOK_URL=$(grep -E '^WEBHOOK_URL=' .env | cut -d '=' -f2-)
discord_ping() {
local success="$1"
local details="$2"
[[ -z "$DISCORD_WEBHOOK_URL" ]] && return 0
local color dumps_display
dumps_display=$([[ "$success" == "true" ]] && echo "✅" || echo "❌")
color=$([[ "$success" == "true" ]] && echo "🟢" || echo "🔴")
local msg="**@here Backup Vaultwarden $color**\n"
msg+="Backup: ${BACKUP_NAME}\n"
msg+="Data transfer: $dumps_display\n"
[[ -n "$details" ]] && msg+="Details: $details"
curl -fsS -H "Content-Type: application/json" \
-d "{\"content\":\"$msg\"}" \
"$DISCORD_WEBHOOK_URL" >/dev/null || true
}
#######################################
# Variables backup
#######################################
DATE=$(date +%F)
BACKUP_NAME="vaultwarden-backup-$DATE.tar.gz"
DATA_DIR=$(grep -E '^DATA_DIR=' .env | cut -d '=' -f2-)
LOCAL_BACKUP=$(grep -E '^LOCAL_BACKUP=' .env | cut -d '=' -f2-)
REMOTE_USER=$(grep -E '^REMOTE_USER=' .env | cut -d '=' -f2-)
REMOTE_HOST=$(grep -E '^REMOTE_HOST=' .env | cut -d '=' -f2-)
REMOTE_DIR=$(grep -E '^REMOTE_DIR=' .env | cut -d '=' -f2-)
SSH_KEY=$(grep -E '^SSH_KEY=' .env | cut -d '=' -f2-)
SSH_OPTS=SSH_OPTS=(-i "$SSH_KEY" -o IdentitiesOnly=yes -o BatchMode=yes -o ConnectTimeout=10)
LOG_FILE="/var/log/vaultwarden_backup.log"
mkdir -p "$(dirname "$LOG_FILE")"
#######################################
# Fonction pour gérer les erreurs
#######################################
fail() {
local detail="$1"
echo "ERROR: $detail" >&2
discord_ping "false" "$detail"
exit 1
}
#######################################
# Création du backup
#######################################
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" || fail "Erreur lors de la compression du dossier $DATA_DIR"
#######################################
# Création dossier distant si nécessaire
#######################################
ssh "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" "mkdir -p $REMOTE_DIR" || fail "Impossible de créer le dossier distant $REMOTE_DIR"
#######################################
# Envoi du backup
#######################################
scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" || fail "Erreur lors de l'envoi du backup vers $REMOTE_HOST"
#######################################
# Nettoyage local
#######################################
rm -f "$LOCAL_BACKUP"
#######################################
# Notification Discord
#######################################
discord_ping "true" "Backup envoyé avec succès vers $REMOTE_HOST"
echo "Backup $BACKUP_NAME terminé et envoyé sur $REMOTE_HOST:$REMOTE_DIR"

View File

@@ -0,0 +1,5 @@
Permission denied, please try again.
Permission denied, please try again.
malio-b@chat.malio-dev.fr: Permission denied (publickey,password).
scp: Connection closed
Backup vaultwarden-backup-2026-03-05.tar.gz envoyé sur chat.malio-dev.fr:/home/malio-b/backups/bitwarden