One Physical Machine. Fifteen Virtual Ones. This Is Fine.
At some point in every self-hoster’s journey, running services directly on a host OS stops making sense. Maybe you want to run Windows and Linux on the same machine. Maybe you want proper resource isolation so your Plex transcoding doesn’t eat your Pi-hole’s CPU. Maybe you just want snapshots — the ability to say “I’m about to do something risky” and roll back when it inevitably goes wrong.
Bare-metal virtualization is the answer. And if you’re not paying enterprise licensing fees (you’re not), the two serious options are Proxmox VE and XCP-ng.
Both are free. Both support VMs and containers. Both will run on whatever second-hand server you found on eBay for $200. They just take very different approaches to being a hypervisor, and those differences matter depending on what you’re trying to do.
What You’re Actually Getting With a Hypervisor
Before the comparison: a quick level-set on what hypervisors actually give you.
Type 1 hypervisors (bare-metal) run directly on hardware, not on top of an operating system. Your VMs share the hardware directly. Proxmox and XCP-ng are both Type 1 — the “OS” you install is primarily just a platform for running VMs.
Key benefits over “just install everything on Ubuntu”:
- Snapshots: Pause time before breaking something
- Resource isolation: VM A can’t starve VM B of RAM
- Live migration: Move running VMs between hosts (with the right setup)
- Multiple OSes: Run Windows, various Linux distros, BSD, whatever
- Disaster recovery: VMs are files — back them up, restore them anywhere
Proxmox VE: The Homelab Standard
Proxmox VE is built on Debian Linux. It uses KVM for full virtualization and LXC for containers. The web interface is genuinely excellent — you can manage everything through a browser and rarely need to touch the CLI.
What Makes Proxmox Great
ZFS built-in: Proxmox has first-class ZFS support. Create a ZFS pool during installation and your storage suddenly has checksumming, compression, snapshots, and the ability to send incremental backups to another machine. ZFS on Proxmox is one of the better uses of ZFS outside of a NAS.
LXC containers alongside VMs: Need something lightweight? LXC containers share the host kernel, use far less RAM than full VMs, and start in seconds. The “run Docker inside an LXC container” setup is popular in the community (more on that below).
Huge community: Proxmox has been in homelab culture for years. Whatever problem you have, someone has already posted the solution on the Proxmox forums or r/homelab. The Tteck community scripts (post-install configuration, app installers) have become almost an unofficial extension of the platform.
Hardware passthrough: PCIe passthrough is well-supported. Pass a GPU to a Windows VM for gaming, or a NIC directly to your router VM. Works reliably once you get IOMMU sorted out.
The Web UI Tour
After installation, you hit https://your-proxmox-ip:8006. The interface shows you:
- Node summary (CPU, RAM, storage utilization)
- VM list with status, CPU, memory usage
- Storage pools
- Network configuration
- Backup jobs
Creating a VM: upload an ISO to local storage, click “Create VM,” walk through the wizard. Ten minutes from decision to running VM. Container creation is even faster — Proxmox downloads templates from official repositories.
Docker on Proxmox: The Right Way
Running Docker inside a full VM works but wastes RAM. The popular approach:
- Create an LXC container (Ubuntu or Debian template)
- Enable “nesting” in container options (required for Docker)
- Optionally enable “keyctl” for rootless containers
- Install Docker inside the container
You get Docker with the resource efficiency of containers, managed by Proxmox’s backup and snapshot system. The community scripts make this a five-minute job.
The Subscription Nag: An Honest Discussion
Proxmox is free, but every time you log into the web UI, you get a popup reminding you that you don’t have an enterprise subscription. It also adds the enterprise repository (which requires a subscription) by default, causing apt update errors until you switch to the no-subscription repo.
The community has a one-liner fix:
sed -i 's|^deb https://enterprise.proxmox.com|#deb https://enterprise.proxmox.com|g' \
/etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
>> /etc/apt/sources.list
And dismissing the nag permanently involves a 3-line JavaScript patch to the web UI. It works fine. It’s a minor annoyance, not a dealbreaker. The Proxmox team is a legitimate company that deserves revenue for this genuinely excellent product — the nag is their way of reminding you that support contracts exist.
XCP-ng: Enterprise DNA, Free Price Tag
XCP-ng is a fork of Citrix XenServer (now called Citrix Hypervisor). It uses the Xen hypervisor instead of KVM. If Proxmox feels like “really good homelab software,” XCP-ng feels like “enterprise datacenter software that you’re allowed to use for free.”
The Xen Difference
KVM (what Proxmox uses) is a Linux kernel module — the hypervisor is deeply integrated with the Linux kernel. Xen is a different architecture: a thin hypervisor layer runs below the OS, with a privileged management VM (dom0) handling device drivers and management tasks. Both work. They have different performance characteristics depending on workload.
In practice, for most homelab workloads, you will not notice the difference. Where it matters: Xen has a longer enterprise track record for certain workloads, and some enterprises standardize on Xen tooling, so XCP-ng VMs can integrate with that ecosystem.
Xen Orchestra: The Management Layer
XCP-ng is managed through Xen Orchestra (XO), a web application that runs separately (either on a VM or a separate machine). This is the biggest operational difference from Proxmox — management is decoupled from the hypervisor host.
XO has two options:
- XO Appliance (XOA): Pre-built VM, some features require a license
- XO from Source (XOSrc): Build from source, all features free
The community XOSrc installation is the standard homelab approach. It gets you all XO features including:
- Multi-host management (manage multiple XCP-ng hosts from one interface)
- VM live migration
- Continuous replication (replicate VMs to another host)
- Backup jobs
- Resource sets and delegation
The UI is polished. XO feels like a product designed for managing production infrastructure.
XCP-ng Installation Gotchas
Installation is more opinionated than Proxmox. XCP-ng expects to own the hardware — it doesn’t play nicely with existing data on the disk. The installer partitions the disk in a specific layout and there’s not much flexibility.
Networking is also more enterprise-oriented. VLANs, bonds, and network configuration are done through XO or the XAPI CLI rather than a familiar Linux network config file. If you’re used to just editing /etc/network/interfaces, there’s a mental model shift.
Storage is handled through Storage Repositories (SRs). EXT4 (thin provisioning), LVM (thick provisioning), NFS, SMB, iSCSI, Ceph — all supported. ZFS is not natively integrated the way it is in Proxmox.
Head-to-Head Comparison
| Feature | Proxmox VE | XCP-ng |
|---|---|---|
| Hypervisor | KVM + LXC | Xen |
| Management UI | Built-in web UI | Xen Orchestra (separate) |
| ZFS support | Built-in, excellent | Not native |
| Container support | LXC containers | No (VMs only) |
| Live migration | Yes (with shared storage) | Yes |
| Backup solution | Built-in PBS integration | XO Backup |
| GPU passthrough | Yes (PCIe) | Yes (PCIe) |
| Community size | Very large | Smaller but active |
| Learning curve | Moderate | Steeper |
| License nag | Yes (patchable) | No |
| Enterprise features free | Most | Most (XOSrc) |
| Clustering | Yes | Yes |
| API | REST API | XAPI (XMLRPC) |
| Best for | Homelabs, small teams | Homelab with enterprise needs |
VM Snapshots and Backup: A Critical Difference
Both platforms do snapshots, but the approaches differ.
Proxmox: Snapshots are built into the storage layer (ZFS or qcow2). Take a snapshot, work in the VM, revert if needed. Proxmox Backup Server (PBS) is a free companion product for deduplicated, encrypted backups to a separate machine. The integration is excellent.
XCP-ng: Snapshots at the VM level via XO. Backup jobs in XO support full backups, delta backups, and continuous replication to another XCP-ng host. If you want off-host backups (recommended), you’ll use XO Backup to NFS or SMB.
For homelab use, both work well. Proxmox + PBS gives you better storage efficiency on backups. XCP-ng’s continuous replication gives you near-zero-RPO if you’re running a second host.
Which One to Pick
Choose Proxmox if:
- You’re new to bare-metal virtualization
- You want Docker + VMs together and LXC efficiency matters
- ZFS storage is part of your plan
- You want large community resources and tutorials
- You don’t need to integrate with existing enterprise Xen infrastructure
Choose XCP-ng if:
- You’re coming from a Citrix/XenServer background
- You need multi-host management with proper role delegation
- You’re running it as a “real” infrastructure platform for multiple users
- The enterprise networking model (VLAN trunking, SR-IOV) fits your setup better
- You want continuous VM replication to a secondary host
The honest answer for 80% of homelabbers: start with Proxmox. The community, the tutorials, the LXC containers, the ZFS integration — it’s just more accessible. XCP-ng is genuinely excellent and worth knowing, but “I saw it in the homelab subreddit and it looked interesting” is a better reason to try XCP-ng on a second machine than to start with it.
Both will run 15 VMs on a $300 machine. That part they both nail.