How To Install Incus on Linux Mint 22

If you manage Linux servers or containers, you already know that picking the right container manager makes all the difference. Incus is quickly becoming the go-to choice for developers and sysadmins who want powerful, lightweight container management without the baggage of Snap or Canonical lock-in. This guide walks you through exactly how to install Incus on Linux Mint 22 “Wilma” — from adding the correct repository to launching your first container. Whether you’re building a development sandbox or exploring a full Linux server tutorial, this step-by-step walkthrough covers everything you need to configure Incus on Linux Mint 22 and get running fast.
What Is Incus and Why Should You Use It?
Incus is a free, open-source system container and virtual machine manager developed and maintained by the Linux Containers community. It was originally forked from Canonical’s LXD project after Canonical moved LXD into its commercial umbrella — and crucially, the fork was led by the same engineers who originally built LXD.
For Linux Mint 22 users, Incus offers a particularly compelling advantage: it installs as a native APT package, with no Snap required. This matters because Snap adds overhead, restricts system integration, and is widely unpopular among power users. With Incus, you get a clean, dependency-controlled install straight from the terminal.
Incus vs LXD: What Changed?
| Feature | Incus | LXD |
|---|---|---|
| Installation method | APT (Zabbly repo) | Snap |
| CLI command | incus |
lxc |
| OCI/Docker image support | ✓ Yes | ✗ No |
| Community-led | ✓ Yes | ✗ Canonical-owned |
| Snap dependency | ✗ None | ✓ Required |
Beyond the Snap issue, Incus adds native OCI image support, which means you can pull and run Docker-style images directly through Incus without a Docker installation. The CLI is also cleaner — a single incus command replaces the confusing lxc commands used by LXD.
Who Is This Guide For?
This Incus on Linux Mint 22 setup guide targets:
- Linux beginners and intermediate users who are comfortable using the terminal
- Developers who want local container environments for testing and CI pipelines
- Sysadmins evaluating Incus as a replacement for LXD or Docker on desktop Linux
You don’t need deep Linux internals knowledge. If you can open a terminal and run sudo apt update, you’re ready.
Prerequisites
Before you begin this Linux server tutorial, confirm the following:
- Operating System: Linux Mint 22 “Wilma” (64-bit) — based on Ubuntu 22.04 Jammy Jellyfish
- RAM: Minimum 2 GB; 4 GB or more is strongly recommended for container workloads
- Disk Space: At least 20 GB free; 100 GB+ if you plan to run multiple container images
- Processor: 64-bit (x86_64 or ARM64); virtualization extensions enabled in BIOS/UEFI if you need VM support
- Internet connection: Required to download the Zabbly repository and Incus packages
- User privileges: You must have
sudoaccess on your Linux Mint 22 system - Terminal access: Press
Ctrl+Alt+Tto open the terminal in Linux Mint
If all of these boxes are checked, you’re good to go.
Step 1: Update Your Linux Mint 22 System
Always start with a fresh system update. Outdated package caches can cause dependency conflicts that make the Incus installation fail silently or partially.
Run these two commands together:
sudo apt update && sudo apt upgrade -y
What this does: apt update refreshes the local package list from all configured repositories. apt upgrade -y installs all pending updates and auto-confirms the prompts.
Next, confirm that wget and curl are installed. You’ll need wget to download the Zabbly repository key in the next step:
sudo apt install wget curl -y
Expected output: You’ll see a short list of packages being installed or a message saying they’re already at the latest version. Either outcome is fine — just make sure the command completes without errors.
Step 2: Add the Zabbly Repository
This is the most critical part of the entire Incus on Linux Mint 22 setup. Incus is not available in Linux Mint’s default repositories, so you must add the Zabbly repository — the official, developer-maintained source for Incus packages.
The Zabbly repository is maintained by Stéphane Graber, the lead developer of Incus and former LXD maintainer at Canonical. It provides up-to-date packages for Ubuntu 22.04 (Jammy) — which is the exact upstream base of Linux Mint 22.
Sub-step 2a: Create the Keyrings Directory
sudo mkdir -p /etc/apt/keyrings
What this does: Creates the /etc/apt/keyrings directory if it doesn’t already exist. This is where APT stores GPG signing keys for third-party repositories.
Sub-step 2b: Download and Install the GPG Key
wget -qO - https://pkgs.zabbly.com/key.asc | sudo tee /etc/apt/keyrings/zabbly.asc
What this does: Downloads the Zabbly GPG public key and saves it to /etc/apt/keyrings/zabbly.asc. APT uses this key to verify that packages from the Zabbly repository are authentic and haven’t been tampered with.
Expected output: A block of text beginning with -----BEGIN PGP PUBLIC KEY BLOCK-----. This confirms the key was saved successfully.
Sub-step 2c: Create the Repository Source File
sudo nano /etc/apt/sources.list.d/zabbly-incus-stable.sources
This opens the nano text editor. Paste the following content exactly:
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: jammy
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/zabbly.asc
Note: If your system runs on ARM64, replace amd64 with arm64. You can check your architecture by running dpkg --print-architecture.
Save the file with Ctrl+S, then exit with Ctrl+X.
Sub-step 2d: Refresh the Package Cache
sudo apt update
What to look for: In the output, you should see a line like:
Get:X https://pkgs.zabbly.com/incus/stable jammy InRelease
If you see this, the Zabbly repository is active and ready.
Step 3: Install Incus on Linux Mint 22
With the repository added and the package cache refreshed, installing Incus is a single command:
sudo apt install incus
APT will resolve all dependencies and install the Incus daemon and CLI together.
Optional: Install the Web UI
If you prefer a graphical dashboard to manage your containers, install the optional web UI package:
sudo apt install incus-ui-canonical
This gives you a browser-based interface accessible at https://localhost:8443 after Incus is initialized.
Verify the Installation
Confirm Incus was installed correctly:
incus version
Expected output:
Client version: 6.x
Server version: 6.x
If only the client version appears (no server version), that’s normal at this stage. The daemon will fully activate after you run incus admin init in the next step.
Step 4: Configure User Permissions
By default, only root can interact with the Incus daemon. To run Incus commands as your regular user — without typing sudo every time — you need to add yourself to the correct group.
Incus uses two permission groups:
incus— basic access, limited to a per-user project scopeincus-admin— full control over all Incus daemon operations
For most developers and sysadmins, you want incus-admin:
sudo gpasswd --add $USER incus-admin
Apply the group change in the current terminal session without logging out:
newgrp incus-admin
Verify the change took effect:
groups
Expected output: Your username’s groups listed, including incus-admin.
Security note: The incus-admin group effectively grants root-level access to your system through container management. Only add users you fully trust.
Step 5: Initialize Incus (incus admin init)
Initialization configures the Incus daemon for first use — including storage backends, network bridges, and optional clustering.
Run the interactive setup wizard:
sudo incus admin init
Configuration Prompts Explained
Work through each prompt as follows:
- Would you like to use clustering? → Type
nofor a single-server setup - Configure a new storage pool? → Type
yes, then name itdefault - Storage backend (
dir,zfs,btrfs)? → Choosedirfor simplicity; choosezfsfor production-grade performance with snapshots and copy-on-write (install ZFS tools first:sudo apt install zfsutils-linux) - Would you like to connect to a MAAS server? →
nofor most users - Create a new local network bridge? →
yes; this createsincusbr0, the virtual network interface that containers use to reach the internet - Would you like to configure IPv6? →
nois fine unless you have specific IPv6 requirements
Quick Minimal Setup (Skip the Wizard)
If you just want to get running immediately without going through all the options:
incus admin init --minimal
This sets up Incus with sensible defaults using the dir storage backend. You can always reconfigure storage pools later.
Verify the Daemon Is Running
sudo systemctl status incus
Expected output: Active: active (running) displayed in green. The daemon is live and ready to manage containers.
Step 6: Launch Your First Container
You’ve installed and configured Incus on Linux Mint 22 — now let’s put it to work. This section walks through launching, accessing, and managing a live container.
Browse Available Images
incus image list images: | grep -i ubuntu
Incus pulls images from a global image server that hosts dozens of Linux distributions including Ubuntu, Debian, Alpine, Fedora, CentOS, and more.
Launch an Ubuntu 22.04 Container
incus launch images:ubuntu/22.04 my-first-container
What this does: Downloads the Ubuntu 22.04 image (first run only — subsequent launches use the cached copy) and starts a container named my-first-container.
Expected output:
Creating my-first-container
Starting my-first-container
Access the Container Shell
incus exec my-first-container -- bash
You now have an interactive root shell inside a fully isolated Ubuntu container. Run any command — install packages, test configurations, anything. Type exit to return to your Linux Mint host.
List All Running Instances
incus list
This shows your container’s name, status (RUNNING or STOPPED), IP address, and type (CONTAINER or VM).
Essential Incus Commands Reference
Keep this table bookmarked — these are the commands you’ll use daily when working with Incus on Linux Mint 22.
| Action | Command |
|---|---|
| List all instances | incus list |
| Start a container | incus start <name> |
| Stop a container | incus stop <name> |
| Delete a container | incus delete <name> |
| Force-delete running container | incus delete -f <name> |
| Open a shell | incus exec <name> -- bash |
| Copy a container | incus copy <source> <dest> |
| Take a snapshot | incus snapshot <name> |
| Show container details | incus info <name> |
| View all available images | incus image list images: |
| Check Incus logs | sudo journalctl -u incus |
These commands work for both containers and virtual machines managed by Incus.
Troubleshooting Common Issues
Even with a clean setup, things occasionally go wrong. Here are the most common problems and how to fix each one.
Error 1: incus: command not found
Cause: The Zabbly repository wasn’t added correctly, or the package cache wasn’t refreshed after adding it.
Fix:
sudo apt update
sudo apt install incus
Check that the output of apt update includes a line referencing pkgs.zabbly.com. If it doesn’t, revisit Step 2 and confirm the .sources file is formatted correctly.
Error 2: Permission Denied When Running incus Commands
Cause: Your user isn’t in the incus-admin group, or the group change hasn’t been applied to the current session.
Fix:
sudo gpasswd --add $USER incus-admin
newgrp incus-admin
Open a fresh terminal window after running these commands to ensure the session picks up the new group membership.
Error 3: incus admin init Fails on ZFS Storage Pool
Cause: The ZFS utilities aren’t installed on your system.
Fix: Install ZFS support first, then re-run initialization:
sudo apt install zfsutils-linux
sudo incus admin init
Error 4: Container Fails to Start — subuid/subgid Error
Cause: Incus requires a large range of subordinate UIDs and GIDs for unprivileged containers. If /etc/subuid and /etc/subgid aren’t configured correctly, container starts will fail.
Fix:
echo "root:1000000:1000000000" | sudo tee -a /etc/subuid /etc/subgid
sudo systemctl restart incus
Error 5: Network Bridge incusbr0 Missing or Containers Have No Internet
Cause: The network bridge wasn’t created during incus admin init, or was accidentally deleted.
Fix: Check the current network list and recreate the bridge if needed:
incus network list
incus network create incusbr0
Then relaunch your container and run incus list to confirm it received an IP address.
Congratulations! You have successfully installed Incus. Thanks for using this tutorial for installing Incus container and virtual machine manager on Linux Mint 22 system. For additional help or useful information, we recommend you check the official Incus website.