cron + modif script + webhook
This commit is contained in:
@@ -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
8
backup_vaultwarden/.env
Normal 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"
|
||||
6
backup_vaultwarden/.env.exemple
Normal file
6
backup_vaultwarden/.env.exemple
Normal file
@@ -0,0 +1,6 @@
|
||||
DATA_DIR=
|
||||
LOCAL_BACKUP=
|
||||
REMOTE_USER=
|
||||
REMOTE_HOST=
|
||||
REMOTE_DIR=
|
||||
SSH_KEY=
|
||||
82
backup_vaultwarden/backup-vaultwarden.sh
Executable file
82
backup_vaultwarden/backup-vaultwarden.sh
Executable 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"
|
||||
5
backup_vaultwarden/backup.log
Normal file
5
backup_vaultwarden/backup.log
Normal 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
|
||||
Reference in New Issue
Block a user