Proxmox Backup Server: Automated CT and VM Backups with Deduplication

Deploy Proxmox Backup Server (PBS) in a dedicated LXC container, configure scheduled backups for all containers and VMs, and set retention policies — with verified restore procedures.

Proxmox’s built-in backup system is capable, but it dumps uncompressed archives to local storage and has no deduplication. Proxmox Backup Server (PBS) solves both problems: it uses chunk-based deduplication so that incremental backups of similar containers take a fraction of the space, and it runs as a dedicated service with its own web UI and retention policies.

This guide deploys PBS in an LXC container on the cluster and wires up all four nodes to back up to it nightly. For real-world deduplication numbers, Edy Werder documented backing up 21 VMs into 1.77 TB with a 25× dedup factor — a good reference point for what to expect as your cluster fills up.


How PBS deduplication works

PBS splits backup data into fixed-size chunks, hashes each chunk, and stores only unique chunks. Two containers running the same Ubuntu base image share the OS chunks — you pay for the OS once, not once per container.

In practice on this cluster: 12 containers backing up nightly use ~180 GB of PBS storage instead of the ~600 GB their raw sizes would suggest — a 3.3× reduction.


Task 1: Create the PBS container

1Create CT 110 for PBS5 min

PBS needs a dedicated storage volume for the backup datastore. Create the container first, then add a second disk for backup storage.

In the Proxmox web UI: pvelab04 → Create CT.

Field Value
VMID 110
Hostname pbs
OS Debian 12 (Bookworm) LXC, unprivileged
IP 10.0.0.78 (static)
Cores 2
RAM 2048 MB
Root disk 16 GB (OS only)
Note

Use Debian 12 specifically — PBS is distributed as a Debian package and the install is significantly smoother on Debian than Ubuntu.

2Add a second disk for the backup datastore3 min

In the Proxmox web UI, select CT 110 → Resources → Add → Hard Disk.

Field Value
Storage local-lvm (or your NAS/ZFS pool)
Size 200 GB (or however much you can spare)
Device mp0
Mount point /mnt/backup

This becomes the PBS datastore. Size it based on your containers’ total disk usage × number of retention days, divided by your expected deduplication ratio (~3× is conservative).

3Allow necessary LXC features2 min

PBS needs fuse access to mount backup images for verification. SSH to the Proxmox host and edit the container config:

pvelab04 host — enable fuse in LXC config

echo "lxc.cap.drop:" >> /etc/pve/lxc/110.conf
# Set features in the UI: CT 110 → Options → Features → FUSE: Yes

Or via the UI: CT 110 → Options → Features → FUSE: Yes.


Task 2: Install Proxmox Backup Server

1Add the PBS repository3 min
Inside CT 110

apt-get update && apt-get install -y curl gnupg2
curl -fsSL https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -o /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" > /etc/apt/sources.list.d/pbs-no-subscription.list

apt-get update
Note

pbs-no-subscription is the free community repository — the same concept as Proxmox VE’s no-subscription repo. It receives updates slightly later than enterprise, but is stable for homelab use.

2Install PBS5 min
Inside CT 110 — install PBS

apt-get install -y proxmox-backup-server
systemctl enable --now proxmox-backup-proxy

The installation takes 2–3 minutes. When it completes, the PBS web UI is available at https://10.0.0.78:8007.


Task 3: Create the backup datastore

1Mount the backup disk inside the container3 min
Inside CT 110 — format and mount the backup disk

# Identify the second disk (should be /dev/sdb or similar)
lsblk

# Format it as ext4
mkfs.ext4 /dev/sdb

# Add to fstab for persistent mount
echo "/dev/sdb /mnt/backup ext4 defaults 0 2" >> /etc/fstab
mount -a
df -h /mnt/backup
2Create the PBS datastore3 min

Log into the PBS web UI at https://10.0.0.78:8007 with root credentials.

  1. Go to Datastore → Add Datastore
  2. Set Name: main
  3. Set Path: /mnt/backup
  4. Click Add

The datastore initialises immediately. You’ll see it listed under Datastore in the left sidebar with a storage usage gauge.


Task 4: Add PBS as a storage target in Proxmox VE

1Add PBS storage on each PVE node5 min

In the Proxmox VE web UI: Datacenter → Storage → Add → Proxmox Backup Server.

Field Value
ID pbs
Server 10.0.0.78
Datastore main
Username root@pam
Password (PBS root password)
Fingerprint (copy from PBS Dashboard → Fingerprint)

Click Add. The PBS storage will now appear in the storage list on all nodes.

Tip

Get the PBS fingerprint from the PBS UI: Dashboard → Server Administration → Fingerprint, or run proxmox-backup-manager cert info | grep Fingerprint inside CT 110.


Task 5: Schedule nightly backups

1Create a backup job for all containers5 min

In the Proxmox VE web UI: Datacenter → Backup → Add.

Field Value
Storage pbs
Schedule daily at 02:00
Selection All (or select specific VMIDs)
Mode Snapshot
Compression Zstandard
Notification Email (optional)

Under Retention, set:

  • Keep last: 7 (one week of daily backups)
  • Keep weekly: 4 (one month of weekly snapshots)

Click Create.

2Trigger a manual backup to verify5 min

In Datacenter → Backup, select your job and click Run now. Watch the task log — you should see each container backing up in sequence.

Once complete, check the PBS datastore: Datastore → main → Content. Each container appears as a backup group with the snapshot listed.


Task 6: Verify a restore

Backups you’ve never tested are not backups. Test a restore before you need one.

1Restore a container to a new VMID5 min

In the Proxmox VE web UI, navigate to the PBS storage: pbs → Content. Find any container backup, right-click → Restore.

Field Value
Target node any PVE node
VM ID a new unused ID (e.g. 999)
Storage local-lvm
Start after restore No

Click Restore. This does a live read from PBS — no downtime on the original container.

Start CT 999 and verify it boots cleanly. Then delete it.


Monitoring backup status

Check backup status from the PBS container

# List all backup groups and their latest snapshot
proxmox-backup-client list --repository root@pam@10.0.0.78:main

# Check datastore disk usage and deduplication ratio
proxmox-backup-manager datastore list
proxmox-backup-manager datastore show main

The deduplication ratio in the datastore view shows you how much space deduplication is saving. On a fresh cluster with similar OS images across containers, expect 2–4× savings after the first week of daily backups.


Storage sizing reference

Scenario Raw size Expected PBS size
10 Ubuntu containers, similar base 80 GB 25–35 GB
Mixed containers, 7-day retention 200 GB 60–90 GB
With weekly retention (4 weeks) 800 GB 200–300 GB

For a 4-node homelab cluster with 10–15 containers, 200–500 GB of backup storage is comfortable with 7-day daily + 4-week weekly retention.

Recommended hardware for expanded backup storage:


Related posts:

This post contains Amazon affiliate links (tag: buildahomelab-20). I earn a small commission on qualifying purchases at no extra cost to you.