Ask any computing enthusiast for some words of wisdom, and you’ll probably hear them talk about backups at some point. While it may seem like an overrated piece of advice in the tech community, frequently backing up data is one of the most essential maintenance tasks for your devices – even more so when you’ve got experimental home labs that can break with the slightest mistake.
Luckily, most virtualization platforms include some backup utility to help you recover your virtual guests from a botched experiment. Proxmox, in particular, offers a bunch of ways to back up your data, and you can’t go wrong with any of them. However, I consider Proxmox Backup Server the best utility to save LXC and VM files, even though it requires extra time and monetary investment than other methods.
I rely on Proxmox Backup Server for my snapshots
Instead of Proxmox’s built-in backup functionality
If you’ve been tinkering with Proxmox for some time, you might have already seen a dedicated backup section inside each virtual guest. And truth be told, the built-in backup utility is infinitely better than running your virtual machines and Linux containers without any form of protection from data loss.
I, too, used to rely on the backup tab during my early Proxmox days, but as my collection of VMs and containerized environments started to expand, I found my backups growing too large. That’s because the vzdump service tends to create full backups of all the virtual guests – and over time, I ended up with hundreds of gigabytes occupied by huge .tar files.
In contrast, Proxmox Backup Server uses a couple of neat tricks to cut down on storage consumption. Every time I create a snapshot, PBS saves only the changes made since the last backup operation, massively reducing the size of these files. That’s before you include the deduplication facility, which trims down the duplicate files, and compression algorithms used by PBS.
PBS’ recovery methods are just as useful
The long recovery times of Proxmox’s built-in backups can get rather annoying, especially when I end up with multiple guests that need to be restored to their safe, unblemished states. PBS, on the other hand, has a couple of neat facilities to reduce the downtime caused by recovery operations.
True to its name, PBS’ granular restore feature lets me select the exact files I wish to recover, making it extremely handy for virtual guests where I don’t want to spend hours restoring the entire VM/LXC disk. Heck, I’ve even used PBS’ live restore facility to access the virtual machines and containers even while the recovery operations work their magic.
It’s perfect for 3-2-1 backup setups
Tailscale + PBS is a killer combo
My biggest issue with most self-hosted backup solutions is that I’ve essentially got a single copy of my data. Although it can save my home lab from most experiments, there are times when even my backed-up data may not cut it. The machine holding the snapshots might kick the bucket, or I could end up with corrupted files. Then there’s the edge-case scenario of malware affecting your local network, or even natural disasters striking the location housing my home lab and its backups.
That’s why I prefer using remote storage repos to host my backups, though I’m a bit weary of syncing my projects (especially those running on my Arch and Windows dev VMs) with online cloud platforms. Fortunately for me, PBS ships with the remote sync facility, allowing me to connect two Proxmox Backup Server nodes together and schedule frequent snapshot synchronization jobs.
But since my home network is afflicted with the curse of CGNAT, I couldn’t just spin a self-hosted VPN, enable port-forwarding, and connect the two PBS instances like I wanted. Instead, I use Tailscale to pair the Proxmox Backup Server nodes, and it works surprisingly well.
First, I logged into my Tailscale management web UI and used the Connect button to generate codes for each PBS instance. Since I can’t use the enterprise repo to install the packages for this script, I used the nano /etc/apt/sources.list.d/pbs-enterprise.list command to access the config file containing the source repos. Inside the config file, I uncommented the enterprise source and added deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription to use the no-subscription repository instead.
Running the script was simple, though I had to remove sudo from the command generated by Tailscale. Once I’d finished this process on both nodes, I added my local PBS instance to the Remote Syncs tab on its remote counterpart by entering a random string as the Remote ID, the IP address I got from Tailscale as the Host, Username, Password, and Fingerprint. Finally, I used the Create a Pull task option within its Datastore to create a redundant copy – one that I can always rely on if my local PBS instance doesn’t play nice.
I didn’t even have to spend a lot of money on this setup
The best part of my 3-2-1 PBS setup is that Proxmox Backup Server nodes don’t require killer hardware. I currently use a TerraMaster F2-425 as the local PBS instance, while an old system from 2012 runs the utility on my family’s home. Besides sparing my setup from the privacy issues of relying on third-party servers, the PBS + Tailscale combo helped me save quite a bit of money that I’d otherwise have to spend on a cloud-based backup solution.
