Finally just finished our migration from VMware to XCP-NG.
VMs - 34 mix windows server and ubuntu linux.
Pools - 3
Host - 6
Dell R660 - 2
Dell R640 - 4

Finally just finished our migration from VMware to XCP-NG.
VMs - 34 mix windows server and ubuntu linux.
Pools - 3
Host - 6
Dell R660 - 2
Dell R640 - 4

Updates applied...
Updated:
forkexecd.x86_64 0:26.1.11-1.2.xcpng8.3 kexec-tools.x86_64 1:2.0.15-21.1.xcpng8.3
message-switch.x86_64 0:26.1.11-1.2.xcpng8.3 qcow-stream-tool.x86_64 0:26.1.11-1.2.xcpng8.3
rrdd-plugins.x86_64 0:26.1.11-1.2.xcpng8.3 sm-cli.x86_64 0:26.1.11-1.2.xcpng8.3
squeezed.x86_64 0:26.1.11-1.2.xcpng8.3 varstored-guard.x86_64 0:26.1.11-1.2.xcpng8.3
vhd-tool.x86_64 0:26.1.11-1.2.xcpng8.3 wsproxy.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-core.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-nbd.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-rrd2csv.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-storage-script.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-tests.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-xe.x86_64 0:26.1.11-1.2.xcpng8.3
xcp-networkd.x86_64 0:26.1.11-1.2.xcpng8.3 xcp-rrdd.x86_64 0:26.1.11-1.2.xcpng8.3
xenopsd.x86_64 0:26.1.11-1.2.xcpng8.3 xenopsd-cli.x86_64 0:26.1.11-1.2.xcpng8.3
xenopsd-xc.x86_64 0:26.1.11-1.2.xcpng8.3
Complete!
Will continue to test.
@rzr Installed latest update and no issues to report. I dont hvae any 2tb+ drives in my vms. converting from vhd to qcow2 and backups all working.
installed updates will report back.
Update - I had migrated vms back over to vhd prior to update release. I have migrated 2 vms back over to qcow2 and the initial backup ran successfull. Ran a second delta backup and that as well was successful with out issues. Backups happen very quickly now. But it appears the % and progress bar are working.
When CBT is enabled on the vm vdi. They show up as needing to be coalesced. VMs without CBT enabled the vdis are coalesced.

Will continue to monitor.
Once the coalesence hits 2 for the vm. The vm is skipped form future backups until cleared. (shutting down the vm will allow the coalescence to happen.
2026-04-23T19_52_34.694Z - backup NG.txt


@olivierlambert Created new topic.
Updated my to AMD Ryzen host in my home lab. No issues with update will monitor and report back any issues.
Ok that was in xo from sources and yes issue is fixed...
Confirmed is working in XOA in 6.4.1

While this project is more for myself it is open to others to use. Please use at your own risk. As always review the script before using in a production environment. Please leave any feedback or suggestions. https://github.com/acebmxer/install_xen_orchestra/
https://forums.pozzatech.com - You can read more about this project and other things over in my personal forums.
Automated installation and management of Xen Orchestra from source.
Update 5/15/26 - This update only applies to anyone using older version of script. See note. Also added option to Adjust Xen Orchestra Memory Allocation. It will look at the system memory and suggest setting for XO based off the official documentation.
⚠️ Upgrading from an earlier version of this script? Read this first.
This version bumps the config schema to v2 (adds PUBLIC_URL and ENCRYPT_REDIS_CREDENTIALS) and corrects two config.toml generation bugs. Your xo-config.cfg is migrated automatically and non-destructively, but the corrected /etc/xo-server/config.toml is only written by --reconfigure.
Run --reconfigure once before resuming normal updates:
./install-xen-orchestra.sh --reconfigure
This regenerates config.toml with the fixes (your old file is backed up first; data in /var/lib/xo-server is untouched). It is strongly recommended if you set both REDIRECT_TO_HTTPS=true and REVERSE_PROXY_TRUST — that combination previously produced a duplicate [http] section and silently dropped one of the settings.
Afterwards, run --update as normal for routine XO updates — --update does not need to be preceded by --reconfigure again.
| Function | CLI Flag | Description |
|---|---|---|
| Install | --install |
Fresh install of Xen Orchestra |
| Update | --update |
Update existing installation (with backup) |
| Restore | --restore |
Restore from a previous backup |
| Rebuild | --rebuild |
Fresh clone + clean build, preserves settings |
| Reconfigure | --reconfigure |
Apply config changes without rebuilding |
| XO Proxy | --proxy |
Deploy XO Proxy to a Xen pool master |
| Edit Config | (menu only) | Open xo-config.cfg in your preferred editor |
| Rename Config | (menu only) | Rename sample-xo-config.cfg to xo-config.cfg |
Running without flags launches an interactive menu. All flags also work directly:
./install-xen-orchestra.sh # interactive menu
./install-xen-orchestra.sh --update # run update directly
./install-xen-orchestra.sh --help # show all options
Running the script with no arguments opens a two-column menu with keyboard navigation:
╔══════════════════════════════════════════════════════════════════════════════════╗
║ Install Xen Orchestra from Sources Setup and Update ║
╚══════════════════════════════════════════════════════════════════════════════════╝
Current Script Commit : 693f4 (Branch: main)
Master Script Commit : 693f4 (Branch: main)
Current XO Commit : a1b2c (Branch: master)
Master XO Commit : d4e5f (Branch: master)
Current Node : v24.15.0
──────────────────────────────────────────────────────────────────────────────────
▸ [✓] Install Xen Orchestra [ ] Reconfigure Xen Orchestra
[ ] Update Xen Orchestra [ ] Rebuild Xen Orchestra
[ ] Rename Sample-xo-config.cfg [ ] Edit xo-config.cfg
[ ] Install XO Proxy [ ] Restore Backup
[ ] Adjust Xen Orchestra Memory Allocation
──────────────────────────────────────────────────────────────────────────────────
Selected: 1
↑↓←→ Navigate SPACE Select/Deselect ENTER Confirm Q Quit
Select one or more items with SPACE, then press ENTER to run them.
git clone https://github.com/acebmxer/install_xen_orchestra.git
cd install_xen_orchestra
cp sample-xo-config.cfg xo-config.cfg
nano xo-config.cfg # edit to your liking
./install-xen-orchestra.sh
Do NOT run with
sudo. Run as a normal user with sudo privileges — the script handlessudointernally.
If xo-config.cfg doesn't exist, it will be created automatically from the sample.
All settings live in xo-config.cfg. See sample-xo-config.cfg for full documentation of every option.
Key settings:
| Option | Default | Description |
|---|---|---|
HTTP_PORT |
80 | HTTP port |
HTTPS_PORT |
443 | HTTPS port |
INSTALL_DIR |
/opt/xen-orchestra | Installation directory |
GIT_BRANCH |
master | Git branch or tag |
NODE_VERSION |
24.15.0 | Node.js version |
SERVICE_USER |
xo-service | Service user (set to root for VMware V2V import) |
BACKUP_KEEP |
5 | Number of backups to retain |
BIND_ADDRESS |
0.0.0.0 | Bind address |
REVERSE_PROXY_TRUST |
false | Trust X-Forwarded headers from proxy IP |
Note on
BACKUP_KEEProtation: The retention policy only applies to backups created by the current version of the script. Backups made by older script versions may use a different naming convention and will not be counted or pruned by the rotation logic. If you are upgrading from an older version, manually review your backup directory (BACKUP_DIRin config, default/var/lib/xo-backups) and remove any legacy-named archives you no longer need.
After installation, access the web interface at https://your-server-ip.
admin@admin.netadminChange the default password immediately after first login.
Before applying an update, the script queries the Xen Orchestra REST API for active tasks (e.g. running backups, VM exports). If any are found, the update is aborted to prevent data loss or corruption.
Only admin-level XO accounts can access the REST API. Authentication is resolved in priority order:
| Priority | Method | Source |
|---|---|---|
| 1 | Auth token | XO_TASK_CHECK_TOKEN in xo-config.cfg |
| 2 | Credentials | XO_TASK_CHECK_USER / XO_TASK_CHECK_PASS in xo-config.cfg |
| 3 | Interactive | Prompted at runtime (press Enter to skip) |
It is recommended to create a dedicated XO web UI account solely for the task check (e.g. task-checker@local.net). This account:
You are free to use any admin account you choose, but a dedicated account is the safest approach.
Tokens are more secure than storing a password — they can be revoked independently and expire after 30 days by default.
curl -X POST -u 'task-checker@local.net:yourpassword' \
https://localhost/rest/v0/users/me/authentication_tokens -k
id field from the responsexo-config.cfg:XO_TASK_CHECK_TOKEN=UlTBEnFeL12XocK-7Qx-DKvOYbPn0eG7Z2oMvOniNjg
Alternatively, store the account credentials directly:
XO_TASK_CHECK_USER=task-checker@local.net
XO_TASK_CHECK_PASS=changeme
If neither token nor credentials are configured, the script will prompt interactively during each update.
| Variable | Description |
|---|---|
XO_DEBUG=1 |
Enable debug mode (set -x) |
XO_NO_SELF_UPDATE=1 |
Skip automatic script self-update |
Check service logs:
sudo journalctl -u xo-server -n 50
If the build is broken, rebuild (takes a backup first):
./install-xen-orchestra.sh --rebuild
The Yarn build is memory-intensive. On hosts with less than 2 GB RAM the Node.js process can be killed by the kernel OOM killer mid-build, leaving an incomplete install.
Add or increase swap to give the build room:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Re-run the install or --rebuild after the swap is active. To make it permanent across reboots, add /swapfile none swap sw 0 0 to /etc/fstab.
On hosts without internet access (or with strict egress firewall rules) the NodeSource repository setup script fails because it cannot reach keyserver.ubuntu.com or deb.nodesource.com.
Option A — pre-download and import the key manually, then copy the .deb/.rpm packages to the host.
Option B — set NODE_VERSION to a specific patch version (e.g. 24.15.0) in xo-config.cfg. The script will then download a pre-built binary directly from nodejs.org instead of using the NodeSource package repository.
git reports "dubious ownership" and exitsRecent versions of Git refuse to operate on a repository owned by a different user than the one running the command. This can happen when sudo is used inconsistently or when the install directory was created by root but the script is run as a normal user.
Fix it by resetting ownership to match your SERVICE_USER:
sudo chown -R xo-service:xo-service /opt/xen-orchestra
Replace xo-service with the value of SERVICE_USER in xo-config.cfg. Re-running the script afterwards will resolve the rest.
On SELinux-enforcing systems the xo-server service may fail to bind ports or access network resources. Check for AVC denials:
sudo ausearch -m avc -ts recent | grep xo-server
If denials are present, generate and apply a local policy module:
sudo ausearch -m avc -ts recent | audit2allow -M xo-server-local
sudo semodule -i xo-server-local.pp
Alternatively, set the service to permissive mode while investigating:
sudo semanage permissive -a xo_server_t
audit2allow and semanage are provided by the policycoreutils-python-utils package on RHEL/Rocky/Alma.
This project is licensed under the MIT License. Xen Orchestra itself is licensed under AGPL-3.0.
[info] Updating Xen Orchestra from 'cb85e44ae' to 'eed3d72f7'
First log is from automatic schedule before latest update.
2026-02-17T18_00_00.012Z - backup NG.txt
latest log after update. Backup completed successfully.
2026-02-17T18_22_52.199Z - backup NG.txt
Maybe I am a little confused on what you are trying to archive.
The GT730 - https://www.techpowerup.com/gpu-specs/geforce-gt-730.c1988 This is the card correct?
Reguardless of video card passing though. It should behaive simiar to native compuer with gpu and multiple moniors connected. As long as there are monitors connected to the outputs. If passed my gpu just for LLM's not for actuall work. I believe the xcp-ng web console and the first monior connected to video card would mirror themselves.
Did you enable PCI-Pass through for the nvida card? If so did you then add the pci card to the vm? the gpu can only be utilized by 1 vm at a time fyi.
Are these GPUs installed in actual servers or consumer motherboards? If the later is the intel gpu in the top most pcie slot?
I overlooked the Master tag on both host.
There is this option under pool - patches for rolling pool update. This will migrate all vms off first host apply patches reboot host and migrate all vms to host 1 and apply patches to host 2 and reboot.

Since you have too host put host 1 into maintenance mode to put all vms on host 2 and reboot host 1 and then repeat.
Just updated to latest commit - 93909
Glade to see more progress on v6.

Updates applied...
Updated:
forkexecd.x86_64 0:26.1.11-1.2.xcpng8.3 kexec-tools.x86_64 1:2.0.15-21.1.xcpng8.3
message-switch.x86_64 0:26.1.11-1.2.xcpng8.3 qcow-stream-tool.x86_64 0:26.1.11-1.2.xcpng8.3
rrdd-plugins.x86_64 0:26.1.11-1.2.xcpng8.3 sm-cli.x86_64 0:26.1.11-1.2.xcpng8.3
squeezed.x86_64 0:26.1.11-1.2.xcpng8.3 varstored-guard.x86_64 0:26.1.11-1.2.xcpng8.3
vhd-tool.x86_64 0:26.1.11-1.2.xcpng8.3 wsproxy.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-core.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-nbd.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-rrd2csv.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-storage-script.x86_64 0:26.1.11-1.2.xcpng8.3
xapi-tests.x86_64 0:26.1.11-1.2.xcpng8.3 xapi-xe.x86_64 0:26.1.11-1.2.xcpng8.3
xcp-networkd.x86_64 0:26.1.11-1.2.xcpng8.3 xcp-rrdd.x86_64 0:26.1.11-1.2.xcpng8.3
xenopsd.x86_64 0:26.1.11-1.2.xcpng8.3 xenopsd-cli.x86_64 0:26.1.11-1.2.xcpng8.3
xenopsd-xc.x86_64 0:26.1.11-1.2.xcpng8.3
Complete!
Will continue to test.
Just installed updates on host 1. Once host rebooted it took an extra min or two to reconnect to xo, but did finally connect. Applying updates on host 2 now.
Update - host2 no issues. Once reboot complete it connected to xo as expected without delay.
I see these updates include -
xen: Add support for xenpm get-core-temp to query CPU temperature on Intel platforms.
Use xenpm get-core-temp to get the temperature on Intel's CPU, to fallback unsupported coretemp. Doc update being reviewed .
My host are AMD so can verify these. I might be able to deploy a Intel host later tonight. Will this come to AMD later?
AMD rely on a different method to expose the temperature, that don't require this xenpm-based approach. In principle, it should already work with plain
sensors(through k10temp), but our driver may not be up to date for recent AMD CPUs.
From AMD 7950x
[17:51 xcp-ng-haznrrtw ~]# xenpm get-core-temp
[Package0] Unable to fetch temperature (61 - No data available)
[CPU0] Unable to fetch temperature (61 - No data available)
[CPU2] Unable to fetch temperature (61 - No data available)
[CPU4] Unable to fetch temperature (61 - No data available)
[CPU6] Unable to fetch temperature (61 - No data available)
[CPU8] Unable to fetch temperature (61 - No data available)
[CPU10] Unable to fetch temperature (61 - No data available)
[CPU12] Unable to fetch temperature (61 - No data available)
[CPU14] Unable to fetch temperature (61 - No data available)
[CPU16] Unable to fetch temperature (61 - No data available)
[CPU18] Unable to fetch temperature (61 - No data available)
[CPU20] Unable to fetch temperature (61 - No data available)
[CPU22] Unable to fetch temperature (61 - No data available)
[CPU24] Unable to fetch temperature (61 - No data available)
[CPU26] Unable to fetch temperature (61 - No data available)
[CPU28] Unable to fetch temperature (61 - No data available)
[CPU30] Unable to fetch temperature (61 - No data available)
Intel 13700k
[17:50 xcp-ng-kulwlwbp ~]# xenpm get-core-temp
Package0: 28°C
CPU0: 26°C
CPU2: 23°C
CPU4: 23°C
CPU6: 25°C
CPU8: 25°C
CPU10: 24°C
CPU12: 23°C
CPU14: 25°C
CPU16: 24°C
CPU18: 24°C
CPU20: 28°C
CPU22: 28°C
Just installed updates on host 1. Once host rebooted it took an extra min or two to reconnect to xo, but did finally connect. Applying updates on host 2 now.
Update - host2 no issues. Once reboot complete it connected to xo as expected without delay.
I see these updates include -
xen: Add support for xenpm get-core-temp to query CPU temperature on Intel platforms.
Use xenpm get-core-temp to get the temperature on Intel's CPU, to fallback unsupported coretemp. Doc update being reviewed .
My host are AMD so can verify these. I might be able to deploy a Intel host later tonight. Will this come to AMD later?
I also installed updates this morning no new issues to report.