#!/bin/bash SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")") source $SCRIPT_ABS_LOCATION/vaultwarden-backup.env source $SCRIPT_ABS_LOCATION/../logger.sh # Container Names CONTAINER="vaultwarden" BACKUP_CONTAINER="duplicati" SOURCE_DIR="/mnt/data/vaultwarden" BACKUP_DESTINATION="$BACKUP_DESTINATION" BACKUP_ENCR_PASSPHRASE="$BACKUP_ENCR_PASSPHRASE" # Cloud Storage Authentication SFTP_USERNAME="$SFTP_USERNAME" SFTP_PASSWORD="$SFTP_PASSWORD" SFTP_FINGERPRINT="$SFTP_FINGERPRINT" # Log file LOG_FILE="$SCRIPT_ABS_LOCATION/vaultwarden-backup.log" # Dump Database log "Dumping vaultwarden database..." DB_TMP_BAK_NAME=vaultwarden-db_$(date +"%Y%m%d").sqlite3 sqlite3 $SOURCE_DIR/db.sqlite3 ".backup '$SOURCE_DIR/$DB_TMP_BAK_NAME'" || { log "Error: Failed to dump the Nextcloud database."; exit 1; } # Backup all files to target destination log "Backing up vaultwarden files and database..." docker exec $BACKUP_CONTAINER duplicati-cli backup \ ssh://$BACKUP_DESTINATION \ $SOURCE_DIR \ --backup-name="vaultwarden backup" \ --keep-versions=7 \ --auth-username=$SFTP_USERNAME \ --auth-password=$SFTP_PASSWORD \ --passphrase="$BACKUP_ENCR_PASSPHRASE" \ --ssh-fingerprint="$SFTP_FINGERPRINT" \ --prefix="vaultwarden" || { log "Error: Failed to backup vaultwarden files and database."; exit 1; } # Delete temporary backup files log "Deleting temporary backup files..." rm $SOURCE_DIR/$DB_TMP_BAK_NAME || { log "Error: Failed to delete temporary backup files."; exit 1; } log "vaultwarden backup completed successfully."