Skip to main content

XCP-ng & Xen Orchestra: A complete End-to-End Setup and VM deployment

  • January 25, 2026
  • 7 comments
  • 46 views

Iams3le
Forum|alt.badge.img+11

XCP-ng stands for Xen Cloud Platform, next generation and it is an open-source virtualisation platform that allows you to manage virtual machines and networks efficiently.

XCP-ng delivers high-performance enterprise-level virtualization with a rich ecosystem. You can integrate it into your full stack for management and backups. It serves as the modern successor to XCP, which developers originally created as an open-source version of Citrix XenServer back in 2010.

 

XCP-ng Architecture

XCP-ng is a secure platform by default and enables you to run any kind of virtualisation workload . It contains multiple components, built around the Xen Hypervisor. It’s meant to run on top of bare-metal machines.

XCP-ng runs Xen hypervisor on bare metal hardware (CPU, RAM, disk, GPU) to host VMs and PVs (paravirtualized guests). Dom0 (control domain) manages everything via tools and APIs, while backend drivers handle storage/network/QEMU emulation for guest domains.

You can download the latest installer for XCP-ng 8.3 LTS from here. See the below for some other interesting articles on XCP-ng written by one of our fine Veeam Legends.

Create an Installation Disk

To do this, you can use Rufus on a Windows PC or Balena Etcher on a Mac to create a USB installation media from the ISO file. Since I am on a macOS, I will launch Balena.

Click on the “Flash from file” to select the downloaded ISO. After this step, you will have the opportunity to select a USB target.

Select the Flash disk media as shown below.

Click on on Flash

You will be required to enter your password in order to be able to flast the disk and click on OK

Flashing has begun

 

When complete successfully, the window below will be displayed.

 

XCP-ng Installation

XCP-ng is generally deployed on server-class hardware. But it also supports many workstation and laptop models as we will see very shortly. Kindly take a look at the XCP-ng Requirement and Hardware Compatibility List (HCL) for more information.

From my Workstation, I will use the F12 key to boot from the USB. As you can see below, I will use the arrow key to select and move to the USB boot device. To do this, you will have to insert the USB drive we have flashed above and repeated hit the F12 button as the system startups until the boot menu appears

Below shows the systemd service initialisation of the XCP-ng “Installer Environment (Live Environment)” where the OS is loading its management services into memory from the USB before launching an interactive setup window.

Select your keymap

On the welcome scren, select OK

Accept EUA

Click on Ok on the next screen
 

Use the Space bar on your keyboard to select the disk to store Virtual Machine

When installing XCP-ng, the choice to use thin (file based EXT) and Block-based (LVM) storage depends on your priorities for backup efficiency versus raw performance. Also, the thick-provisioned allocates the entire requested disk space upfront. Since I do not have plenty spare spare storage at this time, I will be selecting the “think provisioning” option.

XCP-ng recommends to use EXT instead of LVM in order to benefit from thin provisioning. Think provisioning only consumes physical storage as data is written to it.

Select the local media as the installation source 

I will skip verifying installation source

Specify a password for the root user and this will be used to access the web interface and the textbased interface as well.

I will be assigning an IPv4 address and will click OK

Use the space bar on your keyboard or ensure static configuration is selected. Then, enter the IP parameters as shown below and select OK.

Enter your hostname and DNS information and click on OK

Set your geographical area 

Select your city

Hit the Install XCP-ng to install as shown below.

Next steps shows the installation is completing

NEVER switch from UEFI to BIOS (or vice-versa) after you installed XCP-ng. Stick to the mode that you chose during the install.

After reboot, you are prompted with the TUI console. From the here, you can manage your XCP-ng instance.

 

Access XCP-ng Web Interface

XCP-ng serves as a fully integrated virtualisation platform that requires no deep Linux or System administration expertise. You can manage it centrally through XO Lite, or Xen Orchestra XO(A) whether you run one host or thousands.

Xen Orchestra also includes built-in backup capabilities. These are the two primary ways to access your XCP-ng web interface. Below is the connection to XO Lite connection web interface

Xen Orchestra Appliance (XOA)

Lets’s deploy the XOA. XOA is meant to be used as the easiest way to test XCP-ng, but also to use it in production. This is the version professionally supported, with an updater and a support tunnel mechanism.

To do this, click on “Deploy XOA”, click on deploy XOA as show


Populate the parameters and click on deploy.

Kindly do not refresh the page below as this can interrupt the deployment of XOA

Access XOA

To access XOA, enter the IP address or click on the Access XOA from the window above as displayed in the screenshot

Enter your email and password to access XOA

Next, click on “Add Server” to add the XCP-ng server

 

The default password here is root

Let’s take a look at the Dashboard. 

But, if you are bent on using XOA especially in production. Please, see the XOA pricing link below.

Xen Orchestra (XO)

Xen Orchestra (XO) from the sources doesn’t have QA and there’s no stable version. It’s great for a home lab or to make tests, but not for production as recommended by Vates. Here is the XO version from GitHub directly.

Storage in XCP-ng (Option 1 without XOA)

Vates encourages people to use file based SR (local ext, NFS, XOSTOR…), because it’s easier to deal with. Also, you do need at least one Storage Repository (SR) before you can create a functioning VMs in XCP‑ng. To workaround this, you can use the /media as it already exists.

Below are the storage types that are officially supported. Others are provided as-is, in the hope that they are useful to you but not maintained by XCP-ng. And they receive less testing than the officially supported ones.

Type of Storage Repository Name Thin Provisioned Shared Storage Officially Supported
file based Local EXT X   X
Software RAID X   No. Provided as-is
NFS X X X
File X   X (use with caution)
XOSTOR X X X
ZFS X   No. Provided as-is
XFS X   No. Provided as-is
GlusterFS X X No. Provided as-is
CephFS X X No. Provided as-is
MooseFS X X No. Provided as-is
block based Local LVM     X
iSCSI   X X
HBA   X X
Ceph iSCSI gateway   X No. Provided as-is
CephRBD   X

No. Provided as-is

Note: Local is not not recommended for production. A local ISO SR is a directory created directly on the dom0 host. It’s only accessible on the host where the directory was created. If you do not want to create a folder before hand, you can use the /media as the path as mentioned above and click on the Create button”. This way, the below step to make a directory can be ignored. Alternatively, you can use the a cheap USB/SSD → /dev/sda and then use for Local EXT SR.

Follow the steps to create a storage before creating a VM. To be able to attach an “OS-ISO” via the XO Lite interface. You are required to create an ISO SR (storage repository) on the XCP-NG Host itself via the XO Lite with the below. You can take a look at this link for more information if you wish to use a specific folder.

mkdir -p /var/opt/xen/iso_store

For the rest of this steps. Please, see the original blogpost “A-Z of XCP-ng and Xen Orchestra setup and VM Creation”.

Storage in XCP-ng (Option 2 with XOA)

To create a storage, please navigate to the XOA or XO as the case maybe. Click on New and then on Storage as shown below.

 

Remember to create your directory as mentioned above. Else, you will have numerous errors in this section except you you use the /media directory. Populate the fields as shown below and click create. Remember to choose the right storage type for ISOs.

Note: Local is not recommended for production. A local ISO SR is a directory created directly on the dom0 host. It’s only accessible on the host where the directory was created.

You can access also from the Home menu as shown below.

 

Import ISO to Storage Repository

Kindly proceed and download Ubuntu from this link. With this, you will always be prompted to download the most latest version.

Now you can import your favourite distro ISO via Xen Orchestra directly. in the left menu, go in “Import”, then “Disk”, select your freshly created ISOs SR and then drag & drop your ISO.

Hit the import button

 

Option 1: Create a VM via the XO Lite

To do this via the XO Lite UI, click on “New VM”. If you follow the steps discussed in in this section “Storage in XCP-ng (Option 1 without XOA)” above. You can have a working VM using the Xo Lite and Commandline.

 

Option 2: Create a VM via the XOA

To create a VM via the XOA, click on “New VM”.

Populate the “create a new VM” fields as shown below.

 

Choose the first option. This will enable you try Ubuntu before installing it

 

Now, you have booted into the Ubuntu LIVE session (not installed yet). “Try Ubuntu” lets you test before committing; installer still available on desktop. You can safely close and install or continue to test.

 

Enter your password to access your VM

 

Install Guest Tools

As you can see below in the image, the management agent not installed”. This warning is because of the missing XCP-ng guest tools. When installed, this will fix the console resolution, graceful shutdowns, and perf metrics.

 

To fix this, launch the Terminal on the XO VM as it is in my case.

Note: We will be using this VM to run the Community Xen Orchestra (XO)

 

Run the command below to downloads fresh package lists from Ubuntu mirrors (security patches, new versions), and install updates.

 

Install the guest utilities

As you can see, the managment agent has been detected.

 

XO Install

I will be using Ronivay’s script due to the below reasons. Soft life! This is because, it is automated, beginner-friendly, handles SSL/updates, pulls official sources. If you love hard life, you can use the manual GitHub steps

Aspect Ronivay Script Official Manual
Ease 1 script, about 15 mins or so Multi-step, error-prone
SSL Built-in cert gen Manual OpenSSL
Updates ./xo-install.sh  Git pull/yarn rebuild
Support Community-tested Official docs only
Ubuntu Perfect match Generic Debian

Before proceeding, I will urge you to create a snapshot should in case something goes wrong.

 

Please, run the command below to install Git

sudo apt install git curl openssl -y

ext, clone Repo with the below command

sudo git clone https://github.com/ronivay/XenOrchestraInstallerUpdater.git
cd XenOrchestraInstallerUpdater

Run the ls command to see the downloaded files.


Next, copy and edit the config. Use the below commands.

sudo cp sample.xo-install.cfg xo-install.cfg
sudo nano xo-install.cfg

Change Port

Please, change Port from 80 to 443 and uncomment the below

#PATH_TO_HTTPS_CERT=$INSTALLDIR/xo.crt
#PATH_TO_HTTPS_KEY=$INSTALLDIR/xo.key

 

Create SSL cert and directory.

sudo mkdir -p /opt/xo/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /opt/xo/ssl/xo.crt -keyout /opt/xo/ssl/xo.key

 

Next, start the installer with the command below and type “1” as shown below. You can run into this issue when installing XO “How to fix the Filesystem root is running low on Disk space”.

sudo ./xo-install.sh

 

As you can see below, the installation is in process and various services are enabled and started.

 

As you can see, the XO installation is completed successfully. Kindly note the default username and password as shown in the image below.

Login: admin@admin.net / admin

To access XO, please navigate to the IP address of the VM and enter the default username and password to login as shown below.

As you can see, we are welcomed with XO v6. Click on let’s go to proceed.

 

To connect to XCP-ng, click on “Connect Pool”.

 

Enter the IP address, usernmae and password and click “Connect”.

 

 

Option 3: Create VM via XO

To create a new VM, click on “New VM”. as shown below.

 

Remove XOA

Tired of these warning and other unsupported features,as shown below

To remove XOA, first shutdown the XOA as shown below. Else, you will not be able to delete the VM.

From the Pool, select VMs and delete the XOA

Please confirm deletion as shown below.

 

 

7 comments

coolsport00
Forum|alt.badge.img+21
  • Veeam Legend
  • January 25, 2026

Nice writeup Christian! I created a couple XCP posts during Veeam’s XCP Beta Plugin releases last yr...but I didn’t get quite as detailed as your post above. Very well done sir. 


Andanet
Forum|alt.badge.img+12
  • Veeam Legend
  • January 25, 2026

Wow Cristian I never used XCP but this step-by-step guide is pretty nice. Thanks for sharing. 


Chris.Childerhose
Forum|alt.badge.img+21

Hot damn that was a long read 😂 

Great post Christian and well detailed.


Iams3le
Forum|alt.badge.img+11
  • Author
  • Veeam Legend
  • January 25, 2026

Nice writeup Christian! I created a couple XCP posts during Veeam’s XCP Beta Plugin releases last yr...but I didn’t get quite as detailed as your post above. Very well done sir. 

Yeah, I saw those excellent guides, and I referenced them within mine as you did a thorough job. Thanks for your kind words ​@coolsport00


Iams3le
Forum|alt.badge.img+11
  • Author
  • Veeam Legend
  • January 25, 2026

Wow Cristian I never used XCP but this step-by-step guide is pretty nice. Thanks for sharing. 

You are welcome.


Iams3le
Forum|alt.badge.img+11
  • Author
  • Veeam Legend
  • January 25, 2026

Hot damn that was a long read 😂 Great post Christian and well detailed.

Ikr! Thank you, ​@Chris.Childerhose


coolsport00
Forum|alt.badge.img+21
  • Veeam Legend
  • January 25, 2026

Nice writeup Christian! I created a couple XCP posts during Veeam’s XCP Beta Plugin releases last yr...but I didn’t get quite as detailed as your post above. Very well done sir. 

Yeah, I saw those excellent guides, and I referenced them within mine as you did a thorough job. Thanks for your kind words ​@coolsport00

I skipped right over that part! 🤷🏻‍♂️😂 haha.