A year ago I wiped free ESXi off the homelab host and put Proxmox VE on instead, mostly out of irritation at the licence wall around anything resembling an API. I wrote at the time that it felt like the right move. A year of daily use is a much better test than a hopeful first weekend, so here's the honest follow-up: it was the right move, and the reasons turned out to be different from the ones I expected.
what i thought would matter, versus what did
I switched for the API and the scripting story, and those are fine, but I barely touch them. The thing I actually use every single day is the split between LXC containers and full KVM VMs, and how cheap the containers are.
Under ESXi, everything was a VM, which meant every little service dragged a whole guest kernel and a gigabyte of RAM along with it just to run a process that wanted forty megabytes. On Proxmox the lightweight stuff lives in LXC containers that share the host kernel, boot in under a second, and cost almost nothing. My rule now is simple: if it's a Linux service that doesn't need its own kernel or kernel modules, it's a container. If it needs a different OS, a specific kernel, or it's doing something fiddly with hardware passthrough, it's a VM. That single decision dropped the idle load on the box enough that I consolidated two hosts back down to one.
The web UI being honest about what it can do is the other quiet win. There's no licence tier teasing you with greyed-out menus. Migration, backups, snapshots, console access, all just there.
zfs and backups, the part that lets me sleep
The bit I undersold a year ago is ZFS, because at the time I'd only used it as "the thing snapshots come from". A year of running it properly has made it the foundation of the whole setup.
The host roots on a ZFS pool, and every guest gets snapshotted on a schedule. A snapshot is near-instant and near-free, so I take them often. The line that does the heavy lifting is unremarkable:
zfs snapshot -r rpool/data@$(date +%Y%m%d-%H%M)
and a small script that prunes anything older than a fortnight. That's the local safety net: fat-finger a config, blow away a database, no problem, roll the dataset back to before lunch.
The off-box layer is zfs send piped to a second machine. Because send only ships the blocks that changed since the last snapshot, the nightly run moves a handful of megabytes rather than re-copying terabytes, and it finishes before I've finished making coffee. Crucially I actually test the restore now and again, because a backup you've never restored from is a hypothesis, not a backup. I learned that lesson elsewhere and I'm not keen to relearn it here.
The Proxmox-native backup job sits on top of all that for the VMs, dumping consistent archives I can drop onto a fresh host and boot. Between the two I've gone from "I hope this disk holds" to genuinely not caring much if it doesn't.
what i'd warn you about
It's not all clean. ZFS will happily eat all the RAM you give it for cache, which is correct behaviour and also alarming the first time you see the box sitting at ninety-odd percent memory used. Learn what the ARC is and where to cap it before you panic. Hardware passthrough for the one VM that needed a GPU was fiddlier than the ESXi equivalent, and took an evening of IOMMU group wrangling. And the community repo nags you about a subscription on every login, which you can silence but which is a fair reminder that someone's keeping the lights on.
None of that comes close to outweighing the rest. A year in, the homelab does more, on less hardware, with backups I trust and a UI that doesn't hold features hostage. If you're still running free ESXi at home out of habit, as I was, it really is worth the Saturday to see the other side. I spent that Saturday a year ago and haven't looked back since.