Operation

You can access the Web UI at https://debian1:8443/ui/. Authentication is handled by client certificate and the GUI will step you through it. The main thing to know is that after creating a certificate pair, you must copy the private key from the server to your workstation and import it in your browser. You may want to generate the cert without a password to facilitate this.

Creating Containers

This is the most efficient use of resources and the OCI is built in. Simply pick one from the list. This only allows for linux as it’s a kernel-sharing technology.

Some containers may run out of file handles if they are handling lots of streams. You can increase the limit per-container with:

sudo incus config set SOMECONTAINER limits.kernel.nofile 65535

Creating VMs

Windows 11

Download the Windows installation ISO and attach it. Also, since Windows does’nt include VirtIO drivers, you’ll need that too.

# Check the on the web for the current URLs before you wget them
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
wget https://drive.massgrave.dev/en-us_windows_11_consumer_editions_version_24h2_updated_sep_2025_x64_dvd_6d1ad20d.iso -O Win11_24H2_English_x64.iso

# Create a new VM and allow access to the TPM
incus init win11vm --empty --vm
incus config device add win11vm vtpm tpm path=/dev/tpm0

# Increase the hardware over the defaults
incus config device override win11vm root size=64GiB io.bus=nvme
incus config set win11vm limits.cpu=4 limits.memory=8GiB

# Attach the install and driver ISOs
incus config device add win11vm install disk source=/home/allen/Downloads/Win11_24H2_English_x64.iso io.bus=usb boot.priority=10
incus config device add win11vm virtio disk source=/home/allen/Downloads/virtio-win.iso io.bus=usb boot.priority=5

# Start the VM and attach
incus start win11vm --console=vga

# When done, shutdown and remove the ISOs 
# (after installing the rest of the VirtIO Drivers)
incus config device remove win11vm install
incus config device remove win11vm virtio

Windows will automatically find the storage drivers, but not the network. You can manually search when prompted, or you can use the shift + F10 + OOBE\BYPASSNRO trick. This will restart the config and let you bypass that part. Then you can install the full set of drivers from the root of the driver disk, post-install.

Windows 2025

The process is similar for Server 2025, but you may need a newer version of the VirtIO drivers. The above is usually the latest, but check https://github.com/qemus/virtiso/releases if you run into problems.

incus init win25 --empty --vm
incus config device add win25 vtpm tpm path=/dev/tpm0

incus config device override win25 root size=64GiB io.bus=nvme
incus config set win25 limits.cpu=4 limits.memory=8GiB


incus config device add win25 install disk source=/home/allen/Downloads/26100.1742.240906-0331.ge_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso io.bus=usb boot.priority=10
incus config device add win25 virtio disk source=/home/allen/Downloads/virtio-win-0.1.285.iso io.bus=usb boot.priority=5

incus start win25 --console=vga

# As the system restarts, use:
incus console win25 --type=vga

incus config device remove win25 install
incus config device remove win25 virtio 

Windows Repacking

If you do a lot of Windows installs, you may want to create your own ISO that includes some installation logic as well as the VirtIO drivers.

Simos Xenitellis has some great info on that on his blog as does Scott Thompson who’s info I use a lot.

Linux Guests

You normally want just containers. But if you must run a full VM, you should install the incus agent.

sudo apt install incus-agent

You may need to manually mount an install source if the above command fails.

Backup

There’s no built-in facility for this. But it’s fairly trivial to create script like this;

#!/bin/bash

BACKUP_DIR="/mnt/gluster/media/backup"
INSTANCES=$(incus list --format csv -c n)

for instance in $INSTANCES; do
    incus export "$instance" "$BACKUP_DIR"/"$instance"_backup_$(date +%Y%m%d%H%M) --instance-only --optimized-storage
    # Optional: Add logic here to delete old backups in BACKUP_DIR
done

You may need to dedicate temp space for this. When exporting, the server first creates the backup artifact (a compressed tarball) at /var/lib/incus/backups/. If there’s not enough space there, the export will fail.

If you need a dedicated location, use these commands on all your nodes.

# Assuming you have a large pool named 'local' to create a volume in
sudo incus storage volume create local backup-tmpfiles
sudo incus config set storage.backups_volume local/backup-tmpfiles

Sources

Scott at scottibyte is the main resource for the windows install.


Last modified March 25, 2026: Restructure to shorten menu names (b00d4c5)