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

ripping ESXi out of the homelab for Proxmox

Why I moved the homelab from a free ESXi licence to Proxmox VE, and how containers and ZFS changed how I run it.

A small server rack

I ran free ESXi at home for years and it was fine, which is the most damning thing you can say about anything. It did the job, it never fell over, and it never let me do anything I actually wanted to do without reaching for a paid tier or a Windows box to run the management client. This month I finally wiped it and put Proxmox VE on instead, and I should have done it ages ago.

why I jumped

The free ESXi licence is a clipped-wings version of the real thing, and the clips landed exactly where a homelab feels them. No API worth the name without paying. No host-level backups. The management story routed through a thick client or, latterly, a web UI that assumed you'd bought vCenter for the good bits. None of this is VMware being malicious, it's VMware being a business and the lab not being their customer. Fair enough. But I'm not their customer, so off it goes.

Proxmox is Debian underneath with KVM and LXC bolted on and a genuinely usable web UI on top. The whole thing is open, the API is just there, and the bits that ESXi gated behind a licence are the default.

The Proxmox web interface showing the node and its guests

the bit that actually changed how I work: containers

VMs I understand. The revelation was LXC. Half the things I run at home are a single daemon and a config file. Standing up a full virtual machine with its own kernel, its own memory ballooning, its own boot, to run one Go binary or a Postgres instance is a lot of overhead for not much.

An LXC container shares the host kernel and starts in about a second. On the same hardware that comfortably ran maybe six or seven VMs, I'm now running a couple of dozen containers without the box breaking a sweat, because each one is a process tree and a filesystem rather than a whole simulated computer. The things that genuinely need a VM, the odd appliance, anything that wants its own kernel modules, still get one. Everything else is a container now and starts before I've let go of the enter key.

pct create 110 local:vztmpl/debian-8.0-standard_amd64.tar.gz \
  -hostname dns01 -memory 512 -net0 name=eth0,bridge=vmbr0,ip=dhcp
pct start 110

ZFS, which I came for the storage and stayed for the snapshots

Proxmox will happily install onto ZFS root, and that turned out to matter more than I expected. The compression is free performance on this kind of workload: less written to disk, more cache hits. But the part I use daily is snapshots. Before I touch a container's config or apt-get something risky, I snapshot it. If it goes wrong, rollback is instant and total.

zfs snapshot rpool/data/subvol-110-disk-1@before-upgrade

I'm explicitly not calling this a backup. A snapshot on the same pool dies with the pool. So zfs send ships the important ones to a second box, and that's the actual backup. But for "I'm about to do something daft and want an undo button," snapshots have already saved me more evenings than I'd like to admit.

what I'd tell past me

A few honest notes after a fortnight of running it for real:

  • The migration wasn't free. I rebuilt rather than converting, because converting VMDKs and fighting drivers is more work than reinstalling a handful of services from config I should have had in version control anyway. That's on me, and it's now in version control.
  • Containers are the headline feature even though they're not what the marketing leads with. If you're coming from ESXi expecting "the same but free," you'll get that, but the LXC density is the thing that'll change how you build the lab.
  • ZFS wants RAM and it wants to own the disks directly, not sit behind a hardware RAID card pretending. Plan for that before you buy, not after.

I'm not going to pretend ESXi is bad, because it isn't. It's a serious product aimed at people who pay for it, and at home I was using a deliberately hobbled version of it for free. Proxmox is built for exactly the person I am at home: someone who wants the API, the containers, and the snapshots, and is happy to live on Debian to get them. The box does more, starts things faster, and I can finally automate it. No notes.