Arch Linux BasedManjaro

How To Install Incus on Linux Mint 22

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 sudo access on your Linux Mint 22 system
  • Terminal access: Press Ctrl+Alt+T to 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 scope
  • incus-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:

  1. Would you like to use clustering? → Type no for a single-server setup
  2. Configure a new storage pool? → Type yes, then name it default
  3. Storage backend (dir, zfs, btrfs)? → Choose dir for simplicity; choose zfs for production-grade performance with snapshots and copy-on-write (install ZFS tools first: sudo apt install zfsutils-linux)
  4. Would you like to connect to a MAAS server? → no for most users
  5. Create a new local network bridge? → yes; this creates incusbr0, the virtual network interface that containers use to reach the internet
  6. Would you like to configure IPv6? → no is 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.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is a dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.
Back to top button