Proxmox Backup Server (PBS) is the native backup target for Proxmox VE — block-level deduplication, incremental backups, encrypted at rest, and a UI of its own. This guide installs it on a dedicated VM (or bare metal) and wires up nightly backups from one PVE host.
Prerequisites
- A target host with ≥ 4 GiB RAM and a dedicated backup disk (much bigger than your VMs in aggregate — dedup helps, but plan generously).
- The PBS ISO from
proxmox.com/en/downloads. - Network reachability between PVE and PBS.
Step 1: Install PBS
Boot the PBS ISO same as PVE — Debian-based installer with the same flow:
- Disk: ZFS RAID-1 if you have two disks (recommended for the backup repo itself), else ext4
- Country/timezone/admin password
- Hostname/IP
After reboot, reach https://10.0.10.10:8007/ and log in as root@pam.
Step 2: Set the no-subscription repo
ssh root@10.0.10.10
sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/pbs-enterprise.list
echo 'deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription' \
> /etc/apt/sources.list.d/pbs-no-subscription.list
apt update && apt full-upgrade -y
Step 3: Create a datastore
A datastore is where backups live. On the PBS UI:
- Datastore → Add Datastore
- Name:
vault01 - Backing path:
/mnt/datastore/vault01(the directory you want to write to)
Or via CLI:
proxmox-backup-manager datastore create vault01 /mnt/datastore/vault01
proxmox-backup-manager datastore list
For ZFS-backed datastores, create the dataset first:
zfs create -o compression=lz4 -o atime=off tank/backups
proxmox-backup-manager datastore create vault01 /tank/backups
Step 4: Create a backup user + API token
Doing backups as root@pam is a smell. Make a service user:
PBS UI → Configuration → Access Control → User Management:
- Add user
pve-backup@pbs, password - Permissions → Add → Path
/datastore/vault01, RoleDatastoreBackup
Then an API token for that user:
- Token Management → Add → User
pve-backup@pbs, Namepve01 - Copy the secret that appears once (you cannot read it again)
Step 5: Add PBS as storage on the PVE side
On the PVE host:
proxmox-backup-client benchmark --repository pve-backup@pbs!pve01:secret-here@10.0.10.10:vault01
Use the UI for the persistent config — Datacenter → Storage → Add → Proxmox Backup Server:
- ID:
pbs01 - Server:
10.0.10.10 - User:
pve-backup@pbs - Token name:
pve01 - Secret: (paste)
- Fingerprint: get it from PBS UI → Certificates → expand → SHA-256 fingerprint
- Datastore:
vault01
Test:
pvesm status # pbs01 should be active
proxmox-backup-client status
Step 6: Schedule the backups
PVE UI → Datacenter → Backup → Add:
- Storage:
pbs01 - Schedule:
02:30, Selection modeInclude selected VMs - Compression:
zstd - Mode:
snapshot - Mail to: ops@example.sa
- Retention: 7 daily, 4 weekly, 6 monthly
Or via CLI:
echo "vzdump 101 102 103 --mode snapshot --compress zstd \
--storage pbs01 --mailto ops@example.sa" > /etc/cron.d/pve-backup
Force a backup right now to confirm it works:
vzdump 101 --storage pbs01 --mode snapshot --compress zstd
Step 7: Test restore — the backup you cannot restore is not a backup
# List backups for VM 101
proxmox-backup-client snapshot list vm/101 \
--repository pve-backup@pbs!pve01:SECRET@10.0.10.10:vault01
# Restore as a new VM ID
qmrestore /mnt/pve/pbs01/dump/vzdump-qemu-101-2026_05_27-02_30_00.vma.zst 201
If qmrestore succeeds and the restored VM boots, you have a working backup chain.
Verify
proxmox-backup-manager datastore list
proxmox-backup-manager garbage-collection status vault01
pvesm status
journalctl -u vzdump.service --since '1 day ago' | tail -30
Conclusion
PBS gives PVE deduplicated, incremental, encrypted backups in one network hop. The only mandatory ongoing tasks are weekly garbage collection and monthly verify — both schedulable from the PBS UI.
Next steps
- Install PVE first if you skipped ahead — Install Proxmox VE 8.
- Tune storage for production via Configure storage on Proxmox.
- Create the VMs you are protecting with Create your first VM.
Comments
0 total · 0 threads