Skip to content
Français
Conteneurs & Orchestration medium

Installing Incus on Debian or Ubuntu (the Zabbly repository)

15 min de lecture

Read this page in French

incus logo

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-admin group).

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.

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.

  1. 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.asc

    Check 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
  2. Declare the repository for LTS 7.0 (DEB822 format). Suites takes your distribution codename:

    Fenêtre de terminal
    sudo tee /etc/apt/sources.list.d/zabbly-incus-lts-7.0.sources <<EOF
    Enabled: yes
    Types: deb
    URIs: https://pkgs.zabbly.com/incus/lts-7.0
    Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
    Components: main
    Architectures: $(dpkg --print-architecture)
    Signed-By: /etc/apt/keyrings/zabbly.asc
    EOF
  3. Install Incus:

    Fenêtre de terminal
    sudo apt update
    sudo 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.

Fenêtre de terminal
sudo apt update
sudo apt install incus

Pick 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):

Fenêtre de terminal
sudo incus admin init --auto

For 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:

Fenêtre de terminal
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:

Fenêtre de terminal
sudo usermod -aG incus-admin "$USER"
newgrp incus-admin # or log out and back in

Checking: launch a first container

The installation is good if you can launch a container. The real output from the lab:

Fenêtre de terminal
incus version
# Client version: 7.0.0
# Server version: 7.0.0
incus launch images:debian/13 test
incus 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 --auto creates a dir pool and the incusbr0 network; without --auto, an assistant lets you choose ZFS or btrfs.
  • The incus-admin group grants access without sudo (equivalent to root access on the host).
  • Test with incus launch images:debian/13.

FAQ: common questions about installing Incus

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 init created and pick a suitable backend.

Is this site useful to you?

Fewer than 1% of readers support this site.

I maintain more than 700 free guides, with no ads and no tracking. Any support, even a symbolic one, helps cover hosting and keeps these resources free. Thank you for the help.

The form does not show? Open Ko-fi in a new tab.

Subscribe and follow my DevSecOps work on LinkedIn