A-Z of XCP-ng and Xen Orchestra setup and VM Creation

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. This guide is designed to enhance your IT administration skills. In this article, we shall discuss the “A-Z of XCP-ng and Xen Orchestra setup and VM Creation”. Please, see , Stop Apps from running automatically on MAC, How to install Windows Server 2022 on VMware Workstation, and Deploy a function app from Visual Studio to Azure Platform.
Note: If you wish to run XCP-ng server in production. Please be aware that XCP-ng is solely dedicated to running XCP-ng and VMs hosted on it. Therefore, installing third-party software directly in the XCP-ng control domain is not supported. Except for software supplied in the official repositories.
If you wish to add extra packages to XCP-ng, please contact the XCP Support Team. Just in case you wish to setup Proxmox instead. Here is a guide for you “Create a bootable USB on Mac: Proxmox VE Setup“.
XCP-ng delivers high-performance enterprise-level virtualisation 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 created as an open-source version of Citrix XenServer back in 2010.
XCP-ng Architecture and Download Options
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 use the netinstall ISO or download the latest installer for XCP-ng 8.3 LTS from here. At the time of writing this article, the current XCP-ng version is 8.3. Take a look at their website for the most recent version in the future.

Please, see Create Multiboot OS ISO files on a single bootable USB Disk, how to Create Multiboot OS ISO files on a single bootable USB Disk. Here are the steps to create a Windows 10 or 11 bootable USB with UEFI support, and how to create a Windows 11 Bootable USB drive.
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 as we will demonstrate very shortly. Since I am on a macOS, I will launch Balena as shown below.

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.

Next, 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

The image is currently being validated

When complete successfully, the window below will be displayed.

Please, see Bypassing BitLocker Loop by Unlocking or Disabling or PC Reset, Veeam Host Components: Unable to reinstall Deploy Service SSH, and Upgrade Path and In-Place Upgrade for VBR v13 and Known Fixes.
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.
Since I am using a Fujitsu Esprimo 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.
Note: You may not have the oppotunity to screen grab the UEFI splash screen

Select your keymap you would like to use as shown below and hit the OK button

On the welcome scren, select OK

Accept the End User Agreement

I only have one disk, The disk is automatically selected and click on OK

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

Please, see how to create a dual-boot setup on Windows 11, how to , and Fix long path names to files on SQL Server installation media error, and how to install ESXi on a Beelink EQ12 Mini PC.
XCP-ng Storage Type
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.

I will select the local media as the installation source as shown below.

I will skip verifying installation source as this was already validated by Belana Etcher during flashing.

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

Also, see the step-by-step guide on how to set up the Synology DS923+ NAS, and “What are the differences between Lite-Touch and Zero-Touch installation?. Here is a guide on attack evolution “Hacker Thinking in Ransomware Attacks: Backup Is the real Target“.
Networking
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

Select your geographical area that the host is in.

Choose the city as well

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

XCP-ng is installing.

Installation is in progress

Next steps shows the installation is completing

We have successfully installed the XCP-ng unto our system.

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

You can run the local command shell here as well.

Shutdown the server, perform reboot etc as you wish.

Please, see Creating a WinPE USB Drive: Fixing System Boot Issues, how to delete a VM and Storage in Proxmox, and how to create a password reset disk: Reset Windows Password.
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 below

Populate the parameters and click on deploy.

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

We have successfully deployment XOA.

Alternative, to deploy XOA. You can run the command below from the CLI using a deploy script within the XCP-ng host.
bash -c "$(wget -qO- https://xoa.io/deploy)"
Please, see how to prevent OS Reinstallation: Change from legacy BIOS to UEFI, how to Fix the Port used for the Virtualhost is not an Apache Listen Port, and how to resolve the Update Package Database failure on Proxmox VE.
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. So, it is essential to read that looking at just images.

When the connection error is prompted as shown below. Click on the error message and click on Ok to accept the self-signed certificate.

Note: You need to register your appliance to manage your licenses. I am not interested in registering the appliance at this time.
Note: At this time, some XCP-ng hosts have been registered but are not connected. This error is because the username or password is incorrect when adding the XCP-ng server in the XOA interface.

Since I am not interested in registering this. You need to register to benefit from the added advantage of using XOA over XO. Please, see this Reddit link for more information as there are direct comments from Vates. Else, you can use it for 30 days.

To fix the authentication issue, ensure you have the account as “root”, and your password you specified when setting up the XCP-ng Server.

Let’s take a look at the Dashboard.
Note: I have already created a VM using the XO Lite to demonstrate the steps on how to create a VM below with the XOA and XO Lite option.

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

Please, see What’s New? Install Windows Server 2025 on Beelink EQ12 PC, How to Fix Black Screen Issues on Windows 11/10, and how to Fix Windows Security Blank Screen Issue.
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 “
/mediaas 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/sdaand 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

xe sr-create name-label=LocalISO type=iso device-config:location=/var/opt/xen/iso_store device-config:legacy_mode=true content-type=iso
Next, copy the ISO image you have downloaded to the Storage Repo with the below command.
scp local-path-to-ISO/file-name.iso root@<xcp-ng-host>://var/apt/xen/file-name.iso
Please, see Recover your data after system failure with Hiren’s boot, how to Disable and Enable USB Usage for Certain Users in Windows, and Windows 10 Yoga Recovery: Download the files needed to create a Lenovo USB Recovery key
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.

Cost of thick provisioning is relatively high when you do snapshots (used for backup). If you can use a thin provisioned storage instead, such as Local EXT or NFS, you’ll save a LOT of space.
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.


Note: If you do not want to create a folder before hand, you can use the “/media as the path and click on the Create button”. I am not sure XCP-ng recommends this approach.
Below are the details of our newly created SR.

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

Please, see how to create a backup job for Proxmox VMs using VBR, USB Drive: Create a Multiboot with Multiple OS ISOs, and how to Fix Trellix ePO DAT and Engine Packages missing.
Option 1: Create a VM via the XO Lite
Ideally, after this step. You should import the ISO needed for your VM creation into the Storage Repo (SR). But we will do this later since we have actually already created the VMs using XO Lite. There, I selected a placeholder for the ISO. I will now should you the steps to modify the template and create your VM.
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.

Populate the below with the right information.

Scroll down and select “Create”.

If you completed the setup of your VM via the XO Lite. You should be able to access the console as shown below.

Please, see how to Fix Windows Update Error Code 0xC1900101 – 0x30018, how to deploy and integrate VHR with VBR, and USB Drive: Create a Multiboot with Multiple OS ISOs
Import ISO to SR
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.

Click on Import

As you can see below, the import has completed successfully. Alternatively, you could use scp to copy directly to a directory on the host as mentioned previously above.

Option 1: 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.

The Ubuntu 24.04 Jammy Jellyfish VM (Ubuntu XO) is running successfully (1 vCPU (increased to 2vCPU), 2GB RAM (increased to 5GB), 10GB (increased to 15 GB) disk on root LVM SR). The idea is to show you that these parameters can be modified afterwards.

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.

I do not care about testing. I will proceed to install. Click on install RELEASE or the icon to install Ubuntu.

I will select the first option and proceed

Choose “interactive installation”

I will select the default app for the applications

I am fine with both options as I do no not intend doing any of these in the future when the need arises.

Enter your account information as shown below

Time zone is okay. Click next to proceed

Next, click on Install.

Files are being copies and installing the system


Click on Restart now as instructed.

Enter your password to access your VM.

Please, see Add Synology NFS Storage to Proxmox VE for VMs and Backups, how to Export and Convert Private Keys to .PEM Format in Windows, and Best Storage for Veeam: Comparing OOTBI by ObjectFirst to VHR.
Install Management Agent (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.

Run the command below to downloads fresh package lists from Ubuntu mirrors (security patches, new versions), and install updates.
sudo apt update && sudo apt upgrade -y

Next, install the guest utilities
sudo apt install xe-guest-utilities

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

All stats are now available

Please, see How To Fix “Startup Repair Couldn’t Repair Your PC, how to set up the OOTBI Virtual Appliance on Proxmox VE, and how to migrate Windows Servers from Hyper V to Proxmox Correctly
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

Next, clone Repo with the below command
sudo git clone https://github.com/ronivay/XenOrchestraInstallerUpdater.gitcd 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.cfgsudo 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


Commented out as shown below. Do not forget to save using Esc+Yes or Crtl+O or Crtl+X as the case maybe.

Create SSL cert and directory.
sudo mkdir -p /opt/xo/sslsudo openssl req -new -x509 -days 365 -nodes -out /opt/xo/ssl/xo.crt -keyout /opt/xo/ssl/xo.key

When prompted, fillout the inomation as shown in the image below.
Country: XXXState: xxxCity: xxxOrg: xxxCommon Name: <VM-IP> # Server name etcEmail: xx@xxx.com

Next, start the installer with the command below and type “1” as shown below
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”.

As you can see below, we are successfully connected from XO to the XCP-ng

Right here, we are placed in the dashboard.

Just for your information, below are the different Icons for the XO Lite, XOA, and XO.

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

Please, see Backup and Restore Proxmox VE virtual machines with Veeam, how to install Rust in a Linux System, and An error has occurred in the script on this page: HTA applications report a Script error after upgrading to ADK for Windows 11, version 22H2.
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.

Due to temporal storage space. We have decided to the uploaded ISO image. Next, I will create a a Shared ISO SR later using NFS or SMB Share from Synology.

I hope you found this article on the “A-Z of XCP-ng and Xen Orchestra setup and VM Creation”. Please, feel free to leave a comment below.