
Incus is the system container and virtual machine manager that came out of the LXD fork. This guide installs it in a few minutes on Debian or Ubuntu, through the signed Zabbly repository (to get the latest 7.0 LTS) or the distribution's native package. It then covers initialisation (incus admin init) and access without sudo. Everything was tested on Debian 13 (Incus 7.0.0). For administrators and homelabbers starting with Incus.
What you will learn
- Install Incus from the Zabbly repository or the native package.
- Verify the repository signing key.
- Initialise the daemon with
incus admin init. - Use Incus without sudo (the
incus-admingroup).
Prerequisites
- A Debian 12 or 13, or Ubuntu 22.04 or 24.04 machine (physical, virtual or cloud).
- A recent kernel (cgroups v2, namespaces): any current Debian or Ubuntu qualifies.
- To run Incus virtual machines as well: hardware virtualisation (VT-x or AMD-V) must be available, with nested virtualisation enabled if the machine is itself a VM.
Method 1: the Zabbly repository (recommended)
Zabbly is the company of Stéphane Graber, the creator of Incus, which packages the official releases. It is the recommended route to run the latest LTS (7.0), newer than the distribution package.
-
Add the repository signing key:
Fenêtre de terminal sudo mkdir -p /etc/apt/keyrings/sudo wget -qO /etc/apt/keyrings/zabbly.asc https://pkgs.zabbly.com/key.ascCheck the fingerprint against the one published by Zabbly:
Fenêtre de terminal gpg --show-keys --fingerprint /etc/apt/keyrings/zabbly.asc# 4EFC 5906 96CB 15B8 7C73 A3AD 82CC 8797 C838 DCFD -
Declare the repository for LTS 7.0 (DEB822 format).
Suitestakes your distribution codename:Fenêtre de terminal sudo tee /etc/apt/sources.list.d/zabbly-incus-lts-7.0.sources <<EOFEnabled: yesTypes: debURIs: https://pkgs.zabbly.com/incus/lts-7.0Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})Components: mainArchitectures: $(dpkg --print-architecture)Signed-By: /etc/apt/keyrings/zabbly.ascEOF -
Install Incus:
Fenêtre de terminal sudo apt updatesudo apt install incus
Zabbly offers three channels: stable (the latest monthly feature release), lts-7.0 (recommended in production) and lts-6.0 (the previous LTS, supported until 2029). Replace lts-7.0 in the URL and the filename to switch channel.
Method 2: the distribution's native package
Since Debian 13 and Ubuntu 24.04, Incus is packaged in the official repositories. Simpler, but the version is pinned by the distribution, often an older LTS.
sudo apt updatesudo apt install incus# incus-client for the CLI alone, incus-vm for VM supportsudo apk add incus incus-client incus-vmPick this method for a simple, pinned installation; the Zabbly repository if you want to follow the most recent LTS.
Initialising Incus
Before first use, the daemon has to be initialised: it creates a storage pool and a network. The --auto option applies sensible defaults (dir storage, incusbr0 network with NAT):
sudo incus admin init --autoFor fine control (ZFS or btrfs backend, pool size, network), run incus admin init without --auto: an interactive assistant asks each question.
Check the daemon answers and that the network and storage exist:
incus network list# | incusbr0 | bridge | YES | 10.x.x.1/24 | ... | CREATED |incus storage list# | default | dir | ... | CREATED |Using Incus without sudo
By default, only root talks to the daemon. This is trap number one after installing: without this step, every command returns permission denied. Note that the install creates two groups, incus (basic use) and incus-admin (full control). Add your user to incus-admin to drive Incus without sudo:
sudo usermod -aG incus-admin "$USER"newgrp incus-admin # or log out and back inChecking: launch a first container
The installation is good if you can launch a container. The real output from the lab:
incus version# Client version: 7.0.0# Server version: 7.0.0
incus launch images:debian/13 testincus list+------+---------+----------------------+------+-----------+-----------+| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |+------+---------+----------------------+------+-----------+-----------+| test | RUNNING | 10.173.191.x (eth0) | | CONTAINER | 0 |+------+---------+----------------------+------+-----------+-----------+The container gets an address on incusbr0 and starts in a few seconds. You are ready for the first steps.
Key points
- The Zabbly repository (
pkgs.zabbly.com) provides the latest LTS (7.0), with a signing key whose fingerprint must be checked. - The native package (Debian 13, Ubuntu 24.04) is simpler but pinned to an older version.
incus admin init --autocreates adirpool and theincusbr0network; without--auto, an assistant lets you choose ZFS or btrfs.- The
incus-admingroup grants access without sudo (equivalent to root access on the host). - Test with
incus launch images:debian/13.
FAQ: common questions about installing Incus
Zabbly repository or native package
Two methods:
- Zabbly repository (latest LTS): add the key under
/etc/apt/keyrings/, declare thelts-7.0repository, thenapt install incus; - Native package (Debian 13, Ubuntu 24.04): just
apt install incus, but the version is pinned by the distribution.
Either way, finish with incus admin init to create the storage and the network.
Compare the fingerprint before trusting the repository
sudo wget -qO /etc/apt/keyrings/zabbly.asc https://pkgs.zabbly.com/key.asc
gpg --show-keys --fingerprint /etc/apt/keyrings/zabbly.asc
The expected output names the Zabbly Kernel Builds key:
pub rsa3072 2023-08-23 [SC] [expires: 2030-08-17]
4EFC 5906 96CB 15B8 7C73 A3AD 82CC 8797 C838 DCFD
uid Zabbly Kernel Builds <info@zabbly.com>
If the fingerprint differs, do not add the repository: adding a signing key grants that key the right to install software as root on your machine.
Yes, it is mandatory
Until the daemon is initialised, Incus can launch nothing. The command creates a storage pool and a network:
sudo incus admin init --auto
--auto: sensible defaults (dirstorage,incusbr0network with NAT);- without
--auto: an interactive assistant lets you pick ZFS or btrfs, the pool size and the network.
For a first try, --auto. For production, the assistant, with ZFS.
The incus-admin group
sudo usermod -aG incus-admin "$USER"
newgrp incus-admin # or log out and back in
Your user then drives Incus without sudo.
Careful: belonging to incus-admin gives full control over Incus, and therefore indirect root access to the host (mounts, privileged devices). Reserve it for trusted users.
7.0 LTS for new installations
- Incus 7.0 LTS (May 2026): the version recommended in production for any new install;
- Incus 6.0 LTS: still supported until 2029, handy if your distribution pins it;
- Feature releases (7.1, 7.2 and so on): supported only until the next one, best avoided in production.
In short: LTS releases (the X.0 ones) in production, feature releases to try new things.
Next steps
- First steps with Incus: launch your first container and your first virtual machine.
- Incus vs Docker: place what you just installed against the container engine you already know.
- Incus storage: take back control of the pool
incus admin initcreated and pick a suitable backend.