Proxmox-Backup Restore: Difference between revisions

From Irregularpedia
Jump to navigation Jump to search
Initial
 
syntax
Tag: 2017 source edit
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<span id="proxmox-backup-and-restore"></span>
= Proxmox Backup and Restore =
= 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.
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.


<span id="assumptions"></span>
Back to [[Server_Guides]]
=== Assumptions ===


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


In this case we use /datadrive/Backups/
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.


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.md|ssh-keys]] covers more on ssh key generation and usage. ## Individual Guides See individual guides here: [[Authentik-Backup.md|Authentik-Backup]]
For specific service guides, see:
* [[Authentik Backup]]


<span id="backup"></span>
== Backup ==
== Backup ==


<syntaxhighlight lang="bash">#!/bin/bash
<pre># /usr/local/bin/proxmox-backup.sh
#/usr/local/bin/proxmox-backup.sh
= Define variables =


# 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 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 =
# 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 =
# 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 =
# 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 =
# 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 =
# 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"


#create encrypted dir with all these matching that timestamp
# 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."
= sync from authentik server to proxmox backup =
</pre>
rsync -avz --progress $AUTHENTIK_REMOTE_USER@$AUTHENTIK_REMOTE_HOST:$AUTHENTIK_REMOTE_BACKUP_DIR $LOCAL_BACKUP_DIR/authentik_backups</syntaxhighlight>
 
<span id="restore"></span>
== 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]]

Latest revision as of 17:56, 3 December 2024

Proxmox Backup and Restore

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:

Backup

# /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"

# 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."

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.