Proxmox Backup Server handles VM snapshots well. But your /etc/pve configs, LXC application data, and critical datasets need offsite backup too. Restic over SFTP fills that gap cleanly.
Proxmox has several categories of data worth protecting offsite:
apt update && apt install -y restic
restic version
The most important backup - run this daily. /etc/pve is small but irreplaceable.
#!/bin/bash
source /etc/restic/env
restic backup \
/etc/pve \
/etc/network \
/etc/cron.d \
/root \
--tag proxmox-configs \
--exclude="/etc/pve/priv"
restic forget --keep-daily 30 --keep-monthly 6 --tag proxmox-configs --prune
On ZFS-backed Proxmox, snapshot the LXC dataset before backup so restic gets a consistent view of the filesystem even while the container is running.
#!/bin/bash
set -euo pipefail
source /etc/restic/env
CTID=110
DATASET="rpool/data/subvol-${CTID}-disk-0"
SNAPSHOT="${DATASET}@restic-$(date +%Y%m%d)"
MOUNT="/mnt/ct${CTID}-snap"
# Snapshot and mount
zfs snapshot "$SNAPSHOT"
mkdir -p "$MOUNT"
mount -t zfs "$SNAPSHOT" "$MOUNT"
# Back up
restic backup "$MOUNT" --tag "ct${CTID}"
# Clean up
umount "$MOUNT"
rmdir "$MOUNT"
zfs destroy "$SNAPSHOT"
restic forget --keep-daily 7 --keep-weekly 4 --tag "ct${CTID}" --prune
Save your backup script and wire it up with a systemd timer to run nightly. See our systemd timer guide for the complete unit file setup.
Set RESTIC_REPOSITORY to your ServerCrate vault connection string. Private vault, ZFS-backed storage, flat monthly pricing, no egress fees when you restore during an incident.
export RESTIC_REPOSITORY="sftp:vaultuser@vault.servercrate.net:22150:/data"
export RESTIC_PASSWORD="your-repository-password"
restic init
When running restic on the Proxmox host itself, be aware that the Proxmox cluster filesystem (pmxcfs) mounts /etc/pve as a fuse filesystem. Restic backs this up correctly, but you will see it listed as a fuse mount in the backup output - this is normal. The config files inside are standard text files and restore cleanly.
For LXC containers running databases, the recommended approach is to install restic inside the container and run a pre-backup database dump. This gives you application-consistent snapshots of the database without stopping the container. Use systemd timers inside the LXC (if the container is Debian/Ubuntu-based) or cron for simpler setups. See the systemd timer guide for unit file examples.
At minimum, run restic check monthly against your ServerCrate vault to verify repository integrity. Quarterly, do a test restore of your /etc/pve directory to a temporary location and verify the files look correct. The restore guide has full commands for every restore scenario.
Private vault. ZFS-backed. No egress fees.
No egress fees, cancel anytime, 7-day money-back guarantee