Proxmox-Backup Restore

From Irregularpedia
Revision as of 05:34, 7 September 2024 by Maintenance script (talk | contribs) (Initial)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Proxmox Backup and Restore

This guide aims to provide options for consistently Backup a server and to provide some instructions and best practices for restoring from backup and for testing backups prior to needing them.

Assumptions

This guide focuses on proxmox servers and assumes a directory is established on that server for backups.

In this case we use /datadrive/Backups/

This guide also assumes that services are running within containers and vms on the proxmox server (host) and that ssh keys have been established and copied into each vm and container. ssh-keys covers more on ssh key generation and usage. ## Individual Guides See individual guides here: Authentik-Backup

Backup

<syntaxhighlight lang="bash">#!/bin/bash

  1. /usr/local/bin/proxmox-backup.sh

Define variables

BACKUP_DIR="/datadrive/Backups" VZ_DIR="/var/lib/vz/dump" BACKUP_REMOTE="pcloud:Backups/Server-Backups" VZ_REMOTE="pcloud:Backups/Server-Backups/VZDUMPS" LOCAL_BACKUP_DIR="/datadrive/Backups"

Authentik variables

AUTHENTIK_REMOTE_USER="root" AUTHENTIK_REMOTE_HOST="192.168.4.134" AUTHENTIK_REMOTE_BACKUP_DIR="/home/authentik/authentik/authentik_backups" TIMESTAMP=$(date +"%Y%m%d%H%M%S")

Ensure remote backup directory exists

ssh $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST "mkdir -p $AUTHENTIK_REMOTE_BACKUP_DIR"

Backup PostgreSQL Database

ssh $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST "docker exec -i authentik-postgresql-1 /usr/local/bin/pg_dump --username authentik authentik > $AUTHENTIK_REMOTE_BACKUP_DIR/postgres-back"

Save Redis Database

ssh $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST "docker exec -i authentik-redis-1 redis-cli save"

Copy Redis Dump

ssh $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST "docker cp authentik-redis-1:/data/dump.rdb $AUTHENTIK_REMOTE_BACKUP_DIR/redis-backup-$TIMESTAMP.rdb"

Create Tarball of Necessary Files

ssh $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST "tar czvf $AUTHENTIK_REMOTE_BACKUP_DIR/authentik-backup-$TIMESTAMP.tar.gz -C /home/authentik/authentik authentik docker-compose.yml certs"

  1. create encrypted dir with all these matching that timestamp

echo "Remote backup completed successfully."

sync from authentik server to proxmox backup

rsync -avz --progress $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST:$AUTHENTIK_REMOTE_BACKUP_DIR $LOCAL_BACKUP_DIR/authentik_backups</syntaxhighlight>

Restore