16 - Sep - 2026

I prefer Proxmox to VMware, but this open-source hypervisor made me reconsider both

Homelabs tend to have a predictable life cycle. I love rescuing big servers, enjoying the extra cores and memory, then I remember why I downsized last time. An array of 15K RPM fans in my bedroom just means more heat, noise, and soaring energy bills.

I want to move in the opposite direction by using smaller, quieter hardware where possible. That made a Zotac ZBOX Mini PC with a Celeron N3160 and 8 GB of RAM an ideal test subject. Instead of automatically installing Proxmox yet again, I tried a little-known hypervisor called XCP-ng. It ran far better than expected, but its two management interfaces revealed exactly where this hypervisor makes sense in the homelab.

I downsized all the way to a Celeron

Let’s be honest, the Zotac ZBOX CI325 Nano looks like it should be hiding behind a TV, not hosting an enterprise hypervisor. Its specifications didn’t improve that impression:

  • Celeron N3160 with four low-power cores
  • 8GB of DDR3L memory
  • 120 GB SSD
  • Dual Gigabit Ethernet ports
  • Wi-Fi adapter and Bluetooth

XCP-ng recommends 70 GB of storage and 8 GB of RAM, so the Zotac Mini PC reached those requirements with nothing to spare.

I prepared for the installation by enabling Intel Virtualization and disabling Secure Boot. As per XCP-ng’s instructions, I left the BIOS firmware in UEFI mode. I used Rufus to create a bootable USB drive from the XCP-ng ISO, but hit a snag when the installer showed a blank screen for about five minutes. I was already preparing to retreat to legacy boot when the installer splash screen finally appeared.

The Zotac wasn’t incompatible after all, just a little out of its depth.

From there, I used local installation media, selected EXT file-based thin provisioning, and assigned the connected eth1 interface through DHCP. The installer also handled timeservers and time zones without any drama.

The first reboot after performing yum update provided the first real gotcha. XCP-ng returned without a management address, so its web interface was inaccessible. Prompting the adapter to renew the lease brought 192.168.1.191 back immediately, and this hasn’t been a problem since.

Soon afterward, the host console was reporting a healthy installation. Unlike with VMware ESXi, the tiny fanless box survived the installation with zero compatibility issues.

Zotax ZBOX Nano mini PC

Brand

Zotac

Storage

Single 2.5-inch SATA 6Gbps bay

The Zotac ZBOX CI325 nano is a compact, low-power mini PC built around Intel’s quad-core Celeron N3160. Its dual Gigabit Ethernet ports and internal SATA bay also make it suitable for lightweight server and homelab projects.


The lightweight dashboard was polished enough to not require a separate manager

XO Lite using a USB drive as an ISO installation repository

Xen Orchestra (XO) Lite loaded directly from https://192.168.1.191, using the root credentials I set up during installation. This meant that I didn’t need to build a separate management server just to confirm the hypervisor was working.

Its dashboard confirmed all four processor cores, 8 GB of RAM, and Dual Gigabit Ethernet adapters were supported and accounted for. It assigned 2 GB of RAM to XCP-ng’s control domain, and left a whopping 6 GB for guests. “Assigned” is the operative word here, because it reserved all of that for the host rather than consuming every byte.

XO Lite felt really polished with a simple browser-based hypervisor interface. Pages opened fast, the layout was clean, and even the Celeron could handle it without lagging. There were a few issues, though. The process for adding a new VM wasn’t exactly intuitive, and the console’s clipboard button simply promised, “Coming soon.”

The biggest disadvantage when compared to Proxmox and ESXi appeared when I wanted to spin up a VM from an ISO. XCP-ng treats installation images as a separate ISO storage repository rather than something I could just upload through the browser. Since the Celeron processor wasn’t handling SCP encryption well, I put the ISO on a USB stick and mounted it read-only:

mkdir -p /mnt/usb-iso
mount -o ro /dev/sdc1 /mnt/usb-iso

I then registered the mount as an ISO repository with xe:

xe sr-create name-label="USB ISO Library" type=iso content-type=iso device-config:location=/mnt/usb-iso device-config:legacy_mode=true

It worked perfectly, but it also demonstrated some of the limitations of using a lightweight interface with a hypervisor.

The virtual machine was surprisingly responsive

Two CPU cores and 2GiB of RAM were enough to turn the experiment into a usable desktop

Lubuntu desktop running responsively inside a virtual machine hosted by XCP-ng

I created a Lubuntu Linux VM from XCP-ng’s Ubuntu 64-bit template. I chose BIOS firmware, two vCPUs, 2 GB of RAM, and a 20 GB thin-provisioned disk. Lubuntu installed from the USB-backed ISO repository quickly and without issue. More importantly, its desktop remained surprisingly responsive, running on a processor that was handling it and a bare-metal hypervisor at the same time.

Inside the guest, I installed XCP-ng’s management agent and OpenSSH:

sudo apt update 
sudo apt install xe-guest-utilities openssh-server 

I confirmed the agent was running with:

systemctl status xe-daemon --no-pager 

The desktop felt noticeably quicker afterward, though I can’t be sure this was a result of the guest utilities alone. Linux also includes the core Xen network and storage drivers already, so a functioning network was already expected.

OpenSSH was a necessity, as XO’s Lite console still doesn’t support clipboard functionality. The text field and button are there, but attempting to use them results in a message stating the feature is coming soon.

The management workflow did have some rough edges, but overall, the hypervisor underneath it was efficient and stable enough to deploy a VM with 8 GB of host RAM.

Full Xen Orchestra showed me what XCP-ng is really for

It also consumed half the RAM of my entire server

xeXen Orchestra displaying centralized host monitoring and virtual machine management tools

XO Lite was enough to create and operate a single VM, but it wasn’t ever meant to represent the whole XCP-ng experience. The platform is designed to pair with Xen Orchestra for centralized host management, monitoring, and backups. Xen Orchestra could be deployed through XO Lite by just clicking a button, so I shut down the Lubuntu VM and installed it this way.

The browser warned me to not refresh or close the tab until deployment was completed. That was all well and good, but after the one-hour mark I was confident the installation had stalled. I checked the progress over SSH directly:

xe task-list params=name-label,status,progress 

It reported 86.9% progress. Again, the poor Celeron processor was clearly working quite hard.

Once XOA finally started, I had to connect back to 192.168.1.191 manually using the host’s root credentials. This interface then made XCP-ng’s potential obvious. It brought server connections, pools, monitoring, backups, task history, and infrastructure management into one place.

XCP-ng allocating all 8GiB of the Zotac mini PC’s memory across the host, Xen Orchestra, and a Lubuntu virtual machine

Unfortunately, that polish carried a painful cost on this hardware. XCP-ng reserved 2 GB, XOA reserved 4 GB, and Lubuntu retained the last 2 GB of RAM. RAM provisioning had now hit exactly 100%, but even so, the Lubuntu desktop remained responsive once I booted it up.

Fearful of the impact on the Zotan mini PC, I quickly created a VM snapshot on disk to test out the functionality. I changed Lubuntu’s desktop and added a quick marker:

Lubuntu with a changed wallpaper and test file created after an XCP-ng snapshot

echo "Created after the XOA snapshot" > ~/Desktop/AFTER-SNAPSHOT.txt 

After shutting the VM down, I reverted to the snapshot and booted it again. The old wallpaper had returned, and the marker file had disappeared. I verified this with:

test -e ~/Desktop/AFTER-SNAPSHOT.txt && echo "File survived" || echo "Rollback removed the test file" 

Which returned:

Rollback removed the test file
Lubuntu restored to its earlier desktop after Xen Orchestra reverted an XCP-ng snapshot

XOA was hilariously oversized for this mini PC, but it convincingly demonstrated why XCP-ng becomes a powerful homelab hypervisor once more compute is thrown at it.

A snapshot is only meant as a short-term rollback point, not a backup. It remains dependent on the VM’s original storage, and grows as changed blocks start to accumulate. Leaving a snapshot indefinitely will consume significant space and resources over time.

XCP-ng didn’t replace Proxmox, but it displaced VMware

The tradeoff changes once I have more than one host to manage

XO Lite showing memory becoming available after the Xen Orchestra appliance was shut down

In my opinion, XCP-ng didn’t replace Proxmox for a small homelab server. Proxmox keeps its management interface on the host. You can easily upload ISOs to it, and it gives me everything I need without having to deploy another 4 GB appliance. Its Debian foundation also supports way more legacy hardware.

XCP-ng asked me to accept a different set of compromises. XO Lite remains unfinished, and XOA takes forever to deploy and eats half of this machine’s RAM. Separating the hypervisor from its management interface just seems excessive when I’m not using served pools.

That model, to me, feels closer to VMware’s ESXi and vCenter than Proxmox’s all-in-one approach. The difference is that XCP-ng gave me that same style of architecture without making me want to go back to VMware.

I’d still be installing Proxmox on a compact standalone server. For a larger or multi-host homelab, I would seriously consider XCP-ng over ESXi/vCenter first. XCP-ng didn’t win me over by making the tiny server do more. It just showed me what I would want if I had the opportunity to build my hypervisors from scratch.

Leave a Reply

Your email address will not be published. Required fields are marked *