Updated on: 2025-07-15
XOA if you wish (optional)
Once xcp-ng is up and running, you’ want XOA up for VM migration. Here is the fastest way.
Log into xen host,
bash -c "$(curl -s http://xoa.io/deploy)"
Answer pretty basic Q and off you go.
If you can run Docker image (Linux, WSL, MacOS (not sure for Apple silicone)), you can run XOA locally to connect to xcp-ng server. This saves the disk/memory on the server.
The default username/password is admin@admin.net / admin.
Cheat sheet
auto start
xe vm-list
xe vm-param-set uuid=$VMUUID other-config:auto_poweron=true
get IP
xe vm-param-get param-name=networks uuid=$VMUUID
PCI passthrough
source
First, make dom-0 to not use the PCI devices.
(8.3)
xe pci-list
xe pci-disable-dom0-access uuid=<pci uuid>
xe pci-enable-dom0-access uuid=<pci uuid>
This is less confusing than lspci
.
(before 8.3)
/opt/xensource/libexec/xen-cmdline --set-dom0 "xen-pciback.hide=(02:00.0)(06:00.0)(06:00.1)"
check what’s the boot command with
cat /boot/efi/EFI/xenserver/grub.cfg
(if this is EFI boot.)
Reboot.
xl pci-assignable-list
shows the devices, and use the devices for the guest.
0000:02:00.0
0000:06:00.0
0000:06:00.1
xe vm-param-set uuid=$VMUUID other-config:pci=0/0000:02:00.0,0/0000:06:00.0,0/0000:06:00.1
Reaching to client VNC console
First you need to allow sshd to port forward in /etc/ssh/sshd_config
PermitTunnel yes
systemctl restart sshd
ssh root@osiris -L 5902:localhost:5902 "socat TCP-LISTEN:5902,reuseaddr,fork UNIX-CONNECT:/var/run/xen/vnc-1"
Then, vnc clint at localhost:5902
Gotchas
When you import a VM from ESXi, the ethernet device name changes. If you are using netplan for static IP address, adjust the device name in /etc/netplan
.
Debian/Ubuntu
You may need to install xe-daemon. Without it, the VM status like network IP does not show up.
sudo apt install xe-guest-utilities
systemctl enable xe-daemon
systemctl start xe-daemon
XigmaNAS
pkg install sysutils/xe-guest-utilities xen-guest-tools
Go over to “System > Advanced > rc.conf” and add ” xenguest_enable” -> “YES”
and service xenguest start
. Once it works, you can see the IP address on XOA.
XOA in a docker
This is one of good reasons on my book to go with xcp-ng. I don’t have to run XOA on the server.
Following the instructions on https://github.com/ronivay/xen-orchestra-docker, I make a docker image and running it locally.
Create dirs for the docker:
sudo mkdir -p /var/lib/xen/xo-server /var/lib/xen/redis
then run it.
docker run -dit -p 3380:80 -v /var/lib/xen/xo-server:/var/lib/xo-server -v /var/lib/xen/redis:/var/lib/redis --name xoa --stop-timeout 30 xen-orchestra
I put this in a shell script and run it when I want to run XOA and open the console on localhost:3380.
Local ISO library
xe sr-create name-label="Local ISO Library" type=iso device-config:location=/var/lib/iso-store/ device-config:legacy_mode=true
xe sr-scan uuid=UUID
ZFS
yum install -y zfs nvme-cli
Start from scratch
# nvme list
Node SN Model Namespace Usage Format FW Rev
--------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme1n1 0000A000000 PC SN730 NVMe WDC 512GB 1 512.11 GB / 512.11 GB 512 B + 0 B 11170012
# wipefs -a /dev/nvme1n1