Ramblings of an aging IT geek
← Ramblings of an aging IT geek
homelab

i moved the homelab off esxi and onto proxmox

Why I migrated my homelab hypervisor from free ESXi to Proxmox VE, what I gained, and the rough edges I hit along the way.

A server rack with cabling, dimly lit

I ran the free edition of ESXi in the homelab for years and it was fine. That's the most honest thing I can say about it. It was fine, it was stable, and I slowly grew to resent it. Last month I wiped the host and put Proxmox VE on it instead. This is the why and the how, including the bits that annoyed me, because every migration writeup pretends the new thing is perfect and I'd rather you went in with your eyes open.

What pushed me off ESXi

Nothing dramatic. No outage, no data loss. It was a thousand small frictions.

The free licence quietly fences off the API, so anything I wanted to automate had to go through the web client by hand, or through unofficial tooling that might break on the next patch. Backups were the same story: the good options sit behind a paid tier, and I'd cobbled together a script that snapshotted VMs and copied the files off, which worked right up until a snapshot consolidation hung and I had to nurse it back by hand at midnight.

Then there was the hardware question. ESXi is fussy about NICs and storage controllers, and every time I thought about adding a card I had to go and check the compatibility list and hope. My homelab is built from whatever was cheap and available, which is precisely the hardware ESXi is least happy with.

The final straw was wanting containers next to VMs on the same host. ESXi has no real answer for that. I was running a separate Docker box just to avoid the question, which is a daft use of a whole machine.

Why Proxmox

Proxmox is Debian underneath with KVM and LXC bolted on top and a decent web UI over the lot. That sentence alone sold me. It means when something breaks, I'm debugging a Linux box I already understand, not a sealed appliance that wants me to file a support ticket I'm not entitled to.

The container support was the big draw. LXC containers sit right alongside full KVM virtual machines in the same interface. The handful of services that don't need a whole kernel, things like a reverse proxy or a small database, now run as containers and barely touch the host's memory. The things that genuinely need their own kernel stay as VMs. I no longer have a separate Docker box, which freed up a machine.

A homelab setup with networking gear and small servers

The migration itself

I didn't do anything clever. I had backups of everything that mattered, so I treated this as a rebuild rather than an in-place conversion.

The one VM I cared about moving intact was a small Debian guest I'd been fiddling with for ages. I exported it from ESXi as OVF, which gives you a .ovf descriptor and a .vmdk disk, then converted the disk to qcow2 on the Proxmox host:

qm importovf 100 exported-vm.ovf local-lvm

That created the VM shell and pulled the disk in. The disk needed a tweak to the SCSI controller type before it would boot, and the network device came up with a fresh MAC so the guest's old eth0 was suddenly eth1 thanks to predictable interface naming clinging to the old MAC. Two minutes in /etc/network/interfaces sorted it. Everything else I rebuilt from configuration I already had in a git repo, which is the real lesson here: the migration was painless precisely because the important state didn't live in the VMs.

Storage I set up as ZFS, mostly because Proxmox makes it easy and I wanted snapshots that actually work. The pool import and the dataset layout took an evening to get right, and the ability to snapshot a VM, do something reckless, and roll back in seconds has already saved me twice.

The rough edges

It's not all roses.

The web UI throws warnings about enterprise repositories and subscriptions on every login until you point it at the no-subscription repo, which is a five-minute fix but an irritating first impression. The documentation, while extensive, assumes you're comfortable with Debian and ZFS, and is happy to leave you to it. And ZFS will eat memory for cache by default, which on a modest host means tuning the ARC size down so your VMs get a look-in:

echo "options zfs zfs_arc_max=4294967296" > /etc/modprobe.d/zfs.conf

That caps the ARC at 4GB. Without it, ZFS happily claimed half my RAM and I spent an evening confused about where my memory had gone.

Was it worth it

Yes, comfortably. The lab now does more on the same hardware, I can automate against a real API, snapshots are trustworthy, and when something misbehaves I'm in a Debian shell I know rather than poking at an appliance. ESXi wasn't bad. It just wasn't mine in the way Proxmox is, and for a homelab, where the whole point is fiddling, ownership matters more than polish. If you're running free ESXi at home and you've started resenting it the way I did, the switch is straightforward and I'd do it again.