Proxmox-Backup Restore: Difference between revisions
Initial |
syntax |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= Proxmox Backup and Restore = | = Proxmox Backup and Restore = | ||
This guide | This guide provides options for consistently backing up a server, instructions for restoring from backups, and best practices for testing backups prior to needing them. | ||
Back to [[Server_Guides]] | |||
== Assumptions == | |||
This guide focuses on Proxmox servers and assumes: | |||
* A directory is established on the server for backups. Example: `/datadrive/Backups/` | |||
* Services run within containers and VMs on the Proxmox server (host). | |||
* SSH keys have been established and copied into each VM and container. Refer to the [[SSH Keys]] guide for more on SSH key generation and usage. | |||
For specific service guides, see: | |||
* [[Authentik Backup]] | |||
== Backup == | == Backup == | ||
< | <pre># /usr/local/bin/proxmox-backup.sh | ||
#/usr/local/bin/proxmox-backup.sh | |||
# Define variables | |||
BACKUP_DIR="/datadrive/Backups" | BACKUP_DIR="/datadrive/Backups" | ||
VZ_DIR="/var/lib/vz/dump" | VZ_DIR="/var/lib/vz/dump" | ||
Line 25: | Line 25: | ||
VZ_REMOTE="pcloud:Backups/Server-Backups/VZDUMPS" | VZ_REMOTE="pcloud:Backups/Server-Backups/VZDUMPS" | ||
LOCAL_BACKUP_DIR="/datadrive/Backups" | LOCAL_BACKUP_DIR="/datadrive/Backups" | ||
# Authentik variables | |||
AUTHENTIK_REMOTE_USER="root" | AUTHENTIK_REMOTE_USER="root" | ||
AUTHENTIK_REMOTE_HOST="192.168.4.134" | AUTHENTIK_REMOTE_HOST="192.168.4.134" | ||
Line 31: | Line 32: | ||
TIMESTAMP=$(date +"%Y%m%d%H%M%S") | 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" | 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" | 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" | 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" | 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" | 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" | ||
# | # 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 | |||
echo "Remote backup completed successfully." | echo "Remote backup completed successfully." | ||
</pre> | |||
== Restore == | == Restore == | ||
Instructions for restoring from backup will depend on the specific service and the type of backup used. Refer to the [[Authentik Backup]] or other service-specific guides for restoration steps. | |||
[[Category:Self-hosting]] | |||
[[Category:Guides]] | |||
[[Category:Proxmox]] | |||
[[Category:Backups]] |