mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Self-Hostedevaluationupdated 28 Aug 2026

incus review

Incus manages full Linux system containers and virtual machines through one daemon, command-line client, and REST API. It can run on one host or form a cluster, giving infrastructure teams a small private-cloud layer without adopting a public cloud control plane.

+59 / 3dstars / 7d
Verdict

Our Incus run installed 337 packages and built in 109 seconds, but 77 of 140 test packages failed in the unprivileged sandbox. Use Incus when you want one Linux control plane for system containers and VMs and have administrators who understand root-equivalent access, storage, and networking. Choose Podman for ordinary application containers, or a more packaged virtualization platform when a built-in web console is central.

We ran it

Lab card: what happened when we ran incusScreenshot of incus (linuxcontainers.org/incus)
Install✓ · 64s337 packages
Build✓ · 109s
Tests✗ · 47s63 passed · 77 failed of 140 (go test)
Repo1852 files~479,187 lines of source · 24.2 MB · 6 CI workflows · tests dir

Answers from our run

Does incus build from source?

Dependencies installed in 64 seconds (337 packages), and the build succeeded in 109 seconds. We cloned commit 0c32619 into a clean Debian container with 3 CPUs and no project-specific setup.

Do incus's tests pass?

Not all of them: 63 of 140 passed and 77 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use incus?

Anyone who wants the daemon on Windows or macOS: the official installation guide says only the client is cross-platform and the daemon runs on Linux.

What are the alternatives to incus?

LXD, Proxmox VE, Podman. Our Incus run installed 337 packages and built in 109 seconds, but 77 of 140 test packages failed in the unprivileged sandbox.

Setup3/5Packages are available, but host initialization carries real choices
Docs5/5Install, security, storage, networking, and clustering are detailed
Community4/56,038 stars, 32 issues and PRs, with same-day activity
Maturity5/5Active v7.4 release with LTS and monthly feature channels

Discussed on

  1. hnIncus v0.1 released (community fork of LXD)19 points
  2. hnIncus – Powerful system container and virtual machine manager6 points
  3. hnImmutable Linux OS to Run Incus4 points
  4. hnIncusOS – immutable OS image dedicated to running Linux containers and vms3 points
  5. hnIncus: System container and virtual machine manager3 points

Who it’s for

Linux administrators who want containers and virtual machines under one API.
Homelab and private-cloud operators who need images, networks, storage pools, snapshots, and projects.
Teams migrating from LXD that prefer the Linux Containers community fork and Apache 2.0 licensing.
Data-center operators prepared to manage cluster quorum, storage, networking, and host upgrades.

Who it’s NOT for

Anyone who wants the daemon on Windows or macOS: the official installation guide says only the client is cross-platform and the daemon runs on Linux.
Organizations that treat membership in incus-admin as ordinary developer access: the README says local socket access grants full control equivalent to trusted root access.
Teams looking only for short-lived application containers: Incus manages full systems, storage pools, virtual networks, images, and virtual machines, which is more infrastructure than a Podman workflow needs.
Operators who cannot rehearse cluster recovery: the docs recommend at least 3 members for quorum, and state-changing operations can stop when a member is offline.

Setup reality

Our sandbox installed 337 packages in 64 seconds at commit 0c32619, and the build succeeded in 109 seconds. Tests failed with exit code 1 after 47 seconds: 63 passed and 77 failed out of 140. The checkout held 1,852 files, about 479,187 source lines, and occupied 24.2 MB.

A useful host needs a Linux daemon, an initialized storage pool and network, plus access to an image server or local images. Remote use adds API authentication and trust policy. Virtual machines need QEMU and firmware support, while clusters add at least 3 recommended members, networking, and a storage design.

Local Unix-socket access is effectively root access because it can attach host paths and devices or change instance security. Package installation is the sensible trial path. Source builds and the full test suite exercise host-level behavior that an unprivileged Debian container may not provide, but our log does not identify one shared cause for the 77 failures.

Incus puts system containers and VMs behind one API

Incus is for running whole Linux environments, not just packaging one application process. Its daemon manages system containers and QEMU virtual machines through the same client and REST API. Images, profiles, projects, storage pools, networks, snapshots, backups, and remote hosts fit into that control plane. A developer can use one machine as a lab, while an infrastructure team can join servers into a cluster and operate them as a shared pool.

That breadth is useful when workloads need different isolation boundaries but similar administration. Our checkout contained 1,852 files, about 479,187 source lines, and 24.2 MB before dependencies. Incus is therefore closer to a small private-cloud layer than a replacement for docker run. If your only job is launching stateless OCI application containers, Podman is easier to explain and secure. Incus earns its place when persistent system instances, networks, storage, and virtual machines belong in the same operational model.

The Linux daemon requires root-level trust decisions

The client can run on several operating systems, but the Incus daemon runs only on Linux. Installation packages exist across major distributions, with different release policies and support sources. After installation, incus admin init guides storage and network choices. Those answers define where instance disks live, how addresses are assigned, and whether the host can later join a cluster. A casual default is fine for a disposable laptop lab, less so for a server expected to hold state.

Access is the sharp edge. The README says the local Unix socket grants full Incus control, including attaching host paths or devices and changing instance security. Membership in incus-admin should be treated like root access, not a harmless way to let developers list containers. Our source build completed in 109 seconds, but that says nothing about the safety of a remote API policy. Production setup needs named trust boundaries, restricted network exposure, backups, and a documented path for revoking clients.

What happened when we ran it

Our sandbox installed 337 Go packages in 64 seconds at commit 0c32619. The build succeeded in 109 seconds. The test command exited 1 after 47 seconds, with 63 passed and 77 failed out of 140. Unlike a timeout, this was a completed failing command, and the number of failures is too large to describe as a nearly passing run.

The log tail showed successful packages such as shared/osarch, shared/resources, shared/subprocess, and shared/tls. It also showed shared/idmap failing to build, followed by the overall FAIL. The supplied tail does not expose the compiler message or prove one cause for all 77 failures. In our fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM, we can report the split and the idmap build failure, but assigning every failure to missing privileges would be a guess.

Three members are the practical cluster starting point

Incus clustering uses a distributed Cowsql database replicated with Raft. The documentation allows a 2-member cluster but strongly recommends at least 3, which can retain quorum after losing one member. Cluster members are expected to be similar systems, and some receive voter or standby database roles. Storage and networking still need deliberate designs; joining daemons does not make local disks shared or choose how workloads move between hosts.

Cluster operations also have failure semantics worth rehearsing. When a member is considered offline, work on that member stops, and operations requiring state changes across all members can become unavailable. The default offline threshold is 20 seconds, while automatic healing requires separate configuration. Those documented values matter more than the 109-second source build when planning recovery. Test member loss, database recovery, storage availability, and instance evacuation before calling a 3-node installation highly available.

Containers and virtual machines solve different isolation needs

System containers share the host Linux kernel, which makes them efficient and lets them feel like small machines. Virtual machines bring a separate guest kernel and broader operating-system isolation at a higher resource cost. Incus lets profiles and projects organize both types, but it does not erase their differences. Kernel-dependent workloads, custom boot requirements, and stricter boundaries can point toward VMs; dense Linux environments often fit containers. Privileged containers deserve extra review because the project explicitly advises avoiding them unless required.

Our 337-package install and 24.2 MB checkout measured repository setup, not instance density, boot speed, migration interruption, or storage throughput. Those numbers must be collected on the server hardware and backend you plan to use. ZFS, LVM, Btrfs, Ceph, directory storage, and other drivers carry different behavior. Likewise, a bridge on one host is not an OVN network across a rack. Incus exposes these choices consistently, which is helpful, but an API cannot make the underlying tradeoffs interchangeable.

Version 7.4 activity supports a serious deployment trial

GitHub recorded 6,038 stars, 32 open issues and pull requests, and a push on August 28, 2026. Incus 7.4 was released one day earlier with migration, storage, networking, Secure Boot, cluster, and security changes in its notes. The small combined queue and same-day code activity indicate active maintenance; the count still includes pull requests and should not be called 32 bugs. Users can choose monthly feature releases or an LTS channel with fewer behavioral changes.

Incus is a strong choice for Linux administrators who want containers and VMs managed as infrastructure rather than scattered commands. The 109-second build was successful, while 77 of 140 test packages failed in our constrained run, so source contributors should reproduce the suite on the documented host setup. For operators, the larger risks are permission design and stateful infrastructure choices. Keep socket membership narrow, start with packages, and prove backup plus cluster recovery before placing production systems inside it.

Alternatives

ProjectWhat it isPick it when
LXDCanonical's system-container and VM manager from which Incus was forked.pick this instead when Canonical's packaging, support, and product direction fit your organization better.
Proxmox VEA server virtualization platform with a browser interface for VMs and containers.pick this instead when an integrated web administration experience matters more than Incus's API-first design.
Podman gh↗A daemonless tool for running OCI application containers and pods.pick this instead when you need application containers on one host rather than full system instances and private-cloud features.

What people are saying

  1. [github-trending] lxc/incus

Sources

  1. Incus README
  2. Incus installation guide
  3. Incus first steps
  4. Incus security documentation
  5. Incus clustering documentation
  6. Incus 7.4 release

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →