Home / Walkthroughs / XCP-NG Cluster
 Hypervisors / Infrastructure

XCP-NG + Xen Orchestra
Enterprise Cluster for Free

Deploy a multi-host XCP-NG hypervisor cluster managed by an unlocked community Xen Orchestra VM โ€” live migration, shared storage, automated snapshots, and VMDK import with zero licensing cost.

Advanced 2โ€“4 hours 2+ physical hosts Shared storage recommended
XCP-NG Xen Orchestra Live Migration Shared Storage GPU Passthrough VMDK Import
๐Ÿ“–
Overview & Architecture

XCP-NG is a free, open-source hypervisor based on Xen Server (the enterprise product from Citrix). It's a direct competitor to VMware ESXi โ€” but completely free. Xen Orchestra (XO) is its management UI, similar to VMware vCenter.

The paid XOA (Xen Orchestra Appliance) provides all features, but the community Xen Orchestra built from GitHub source code gives you nearly identical functionality including live migration, NFS/SMB storage pools, LDAP, backups, and VM snapshots at zero cost.

The key insight: You need only one unlocked XOA VM to manage all XCP-NG hosts in your environment. Deploy it once on any host, then add all others to the pool.
๐Ÿ’ฟ
Install XCP-NG on Bare Metal
  1. 1

    Download the ISO

    Get the latest XCP-NG ISO from xcpng.org. Write to USB with Rufus (use DD mode, not ISO mode).

  2. 2

    Boot and Install

    Boot from USB, accept the license, select your installation disk, set a root password. Installation takes ~10 minutes. XCP-NG installs its own DOM0 (control domain) โ€” the host becomes a managed hypervisor.

  3. 3

    Note the Host IP

    After reboot, the XCP-NG console displays the host's IP. You'll use this to connect from XOA. SSH is enabled by default: ssh root@<xcpng-ip>

XCP-NG host with Xen Orchestra management
XCP-NG host connected to Xen Orchestra โ€” pool management with LDAP auth
โšก
Option A: Quick Deploy XOA VM

Vates (the XCP-NG company) provides a free XOA appliance that can be deployed directly from the XCP-NG console with one command. This gets you the paid XOA on a 30-day trial โ€” useful for evaluating features before building the community version.

xe-install-supplemental-pack.sh # Or from the XCP-NG host console โ†’ Resources โ†’ Install XOA
The quick-deploy XOA trial expires after 30 days and loses premium features. Once you verify it works, follow Option B to build the fully unlocked community version and then power off the trial VM.
๐Ÿ”“
Option B: Build Unlocked XOA from GitHub

This is the community approach โ€” deploy a Debian VM, run the automated installer script, and get all XOA features permanently unlocked.

  1. 1

    Create a Debian VM on XCP-NG

    Using the quick-deploy XOA or XCP-NG console: create a new VM with Debian 12, 2 vCPUs, 4GB RAM, 30GB disk. Install Debian normally.

  2. 2

    Run the XOA Installer Script

    SSH into the Debian VM and run:

    bash -c "$(curl -sL https://raw.githubusercontent.com/ronivay/XenOrchestraInstallerUpdater/master/xo-install.sh)"

    The script installs Node.js, builds Xen Orchestra from source, and starts it as a service. This takes 10โ€“20 minutes.

  3. 3

    Access Xen Orchestra

    Navigate to https://<debian-vm-ip>. Default login: admin@admin.net / admin โ€” change immediately.

  4. 4

    Power Off the Trial XOA VM

    Once the community XOA is working, power off (don't delete) the Vates quick-deploy appliance. Your community build is now the permanent management interface.

โž•
Add Hosts to the Pool
  1. 1

    Add Each XCP-NG Host

    In XOA โ†’ Settings โ†’ Servers โ†’ Add Server. Enter the host IP, root username, and password. Repeat for each physical host.

  2. 2

    Create a Pool

    In XOA โ†’ Home โ†’ Hosts, select hosts and click Join Pool. A pool allows resource sharing between hosts โ€” required for live migration.

Xen Orchestra dashboard showing multiple hosts
Xen Orchestra dashboard โ€” multiple XCP-NG hosts in a pool with storage and VMs visible
Xen Orchestra VM list
VM overview in Xen Orchestra โ€” CPU, RAM, and disk usage per VM
๐Ÿ’พ
Configure Shared Storage

Shared storage is required for live VM migration. The simplest option is an NFS share from a NAS, another VM, or a FreeBSD/bhyve host.

Shared storage can be sourced from a NAS, a dedicated file server, or even a VM re-exporting an NFS share. For example, a Debian VM can mount an NFS export from a FreeBSD/bhyve host and re-advertise it over SMB to XCP-NG โ€” a practical option when dedicated SAN hardware isn't available.
  1. 1

    Set Up an NFS Share

    On your NAS or storage VM, export an NFS share for the XCP-NG pool. Example on Debian/Ubuntu:

    # /etc/exports /mnt/storage/xcpng 10.10.50.0/24(rw,sync,no_subtree_check,no_root_squash)
  2. 2

    Add Storage Repository in XOA

    In XOA โ†’ pool โ†’ Storage โ†’ Add Storage Repository. Choose NFS SR. Enter the NFS server IP and path. XCP-NG mounts it on all hosts in the pool automatically.

XOA storage configuration
XOA storage repositories โ€” shared NFS pool visible to all hosts with total/free space
For higher performance, consider GlusterFS as a distributed storage backend for XCP-NG โ€” it creates replicated storage across multiple nodes without a dedicated NAS. See the GlusterFS reference below.
๐Ÿš€
Live VM Migration

With shared storage configured, you can migrate VMs between hosts with zero downtime.

  1. 1

    Select a Running VM

    In XOA, right-click any running VM โ†’ Migrate.

  2. 2

    Choose Destination Host

    Select the target XCP-NG host and the destination storage repository. The VM memory state is transferred across the network while it continues running.

Live migration requires: hosts in the same pool, shared storage, and roughly matching CPU families (Intelโ†’Intel or AMDโ†’AMD). Cross-vendor migration requires using vCPU masking to present a common CPU baseline.

๐Ÿ“ฆ
Import VMDK from VMware / ESXi

XCP-NG can import VMware VMDK disk images directly โ€” useful for migrating existing ESXi VMs without reinstalling guest OSes.

  1. 1

    Export VM from VMware

    In vSphere/ESXi: right-click VM โ†’ Export OVF. Or use VMware Converter to export individual .vmdk files.

  2. 2

    Create a New VM Shell in XOA

    Create a new VM with the same specs (vCPU, RAM) but delete the default virtual disk. You'll attach the imported VMDK as the boot disk instead.

  3. 3

    Import the VMDK

    In XOA โ†’ Storage Repository โ†’ Import โ†’ select your .vmdk file. It converts to VHD format automatically. Attach the resulting VDI to your VM as the boot disk.

  4. 4

    Boot and Install XenServer Tools

    Start the VM. It should boot from the imported disk. Install XenServer Guest Tools for better performance and management integration.

VMDK imported and running in XCP-NG
A Kemp LoadMaster VMDK imported from VMware running natively in XCP-NG
VM running after VMDK import
XOA VM detail โ€” imported VM running with CPU/network/disk stats
XCP-NG supports importing VMDK disk images directly, making it straightforward to migrate VMs from VMware ESXi. Create a new VM, remove the default blank disk, attach the imported VMDK, and boot โ€” no conversion step required.
๐ŸŽฎ
GPU Passthrough

Pass a physical GPU directly to a VM for hardware-accelerated tasks (Emby transcoding, AI workloads, gaming VMs).

  1. 1

    Enable GPU Passthrough on Host

    SSH to the XCP-NG host. List available GPUs:

    xe pgpu-list

    Enable passthrough for the GPU by its UUID:

    xe pgpu-enable-dom0-access uuid=<pgpu-uuid>
  2. 2

    Attach GPU to VM in XOA

    In XOA โ†’ VM โ†’ Advanced โ†’ GPU. Select the physical GPU from the dropdown. The VM must be powered off to attach.

  3. 3

    Install GPU Drivers in the VM

    Start the VM and install the appropriate drivers (NVIDIA CUDA for AI/transcoding). For Emby/Jellyfin, enable hardware transcoding in the media server settings and select the NVIDIA GPU.

๐Ÿ“ธ
Automated Snapshots & Backups

XOA provides scheduled snapshots and backups from the UI โ€” no scripts required.

  1. 1

    Create a Backup Job

    In XOA โ†’ Backup โ†’ New Backup Job. Select the VMs to back up, schedule (daily/weekly), retention count, and destination (local storage or NFS).

  2. 2

    Rolling Snapshots

    XOA can maintain N most-recent snapshots per VM automatically. Older snapshots are pruned to control storage growth.

XOA community unlocked features
Xen Orchestra community build โ€” "No support" notice at bottom confirms unlocked features with zero licensing cost
๐Ÿ“š
References