Skip to content
SumGuy's Ramblings
Go back

Proxmox vs XCP-ng: Hypervisors for People Who Like Their Data Center at Home

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”:


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:

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:

  1. Create an LXC container (Ubuntu or Debian template)
  2. Enable “nesting” in container options (required for Docker)
  3. Optionally enable “keyctl” for rootless containers
  4. 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:

The community XOSrc installation is the standard homelab approach. It gets you all XO features including:

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

FeatureProxmox VEXCP-ng
HypervisorKVM + LXCXen
Management UIBuilt-in web UIXen Orchestra (separate)
ZFS supportBuilt-in, excellentNot native
Container supportLXC containersNo (VMs only)
Live migrationYes (with shared storage)Yes
Backup solutionBuilt-in PBS integrationXO Backup
GPU passthroughYes (PCIe)Yes (PCIe)
Community sizeVery largeSmaller but active
Learning curveModerateSteeper
License nagYes (patchable)No
Enterprise features freeMostMost (XOSrc)
ClusteringYesYes
APIREST APIXAPI (XMLRPC)
Best forHomelabs, small teamsHomelab 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:

Choose XCP-ng if:

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.


Share this post on:

Previous Post
Traefik vs Nginx Proxy Manager: Reverse Proxies for Humans
Next Post
Wiki.js with GitSync: Documentation That Lives in Version Control Like It Should