Add Incus server

Configure Ceph

Console

Resources

Deployment templates

NameCreated byCreated

Users

Admin = full control · Lab = create/run/delete instances · View only = read-only.

UsernameGroup

Edit

New instance file

Available resources on this server

New storage pool

⚠ A source starting with /dev/ will erase and reformat that whole device. Leave source blank for a loop file, or point at an existing pool/VG/dataset/dir to reuse it.

Raw config (advanced)

New profile

Config

Advanced config

Cloud-init (optional)

Works the same for containers and VMs. A profile is the natural way to give the same cloud-init setup to every instance that uses it — it only applies on each instance's first boot.

Devices

New network

Raw config (advanced)

Resource

Restore preview

Restore recovery point

This replaces the instance's current state.

Changes made after this recovery point may be lost. Incus volumes attached separately may not be reverted.

Instance
—
Created
—
Type
—
State
—
Protected workflow

Protect before change

Recommended

Create a recovery point first, then continue automatically when it completes.

Alerts

No active alerts.

Recent

—

Alert configuration

Webhook (optional)

Fleet digest

A periodic summary of fleet-wide alerts, confidence, and updates, sent to the same webhook above.

Confirm

Confirm

Notice

Enter a value

Ports

HostContainerProtocol

Logs


    
  

Explain

Config

Resource limits

Cloud-init

⚠ Cloud-init only runs on an instance's very first boot. If this instance has already started before, changing these fields here has no effect — there's no way to re-trigger it, restart or otherwise. Set cloud-init at instance-create time (or in a profile) instead.

Advanced config keys
KeyValue

Profiles

Networks

InterfaceNetwork

Migrate instance

Enable clustering

This turns this host into a single-member cluster. Other hosts can then join it.

Add member — join instructions

Run this on the host you want to join (it must already be a registered, reachable Incus host). The app does not execute the join.

  1. On the joining host, run incus admin init
  2. Choose “yes” to join an existing cluster, use this host's address, and paste the token below.
Image launch workflow

New instance

Choose an image and configure the workload.

Cloud-init (optional)

Works the same for containers and VMs. Only applies on this instance's first boot, so this is the only place setting it actually takes effect — editing it later on the Config dialog has no effect.

Select a (cloud) image version first. These templates work for Linux containers and VMs on their first boot. They do not install cloud-init in a default image.

A password enables console login and sudo with that password. SSH password login stays disabled. Generated YAML contains the password; do not share it or save it in a reusable deployment template. Key-only accounts have password login locked and passwordless sudo.

Review

Workload
Container
Image
debian/12
Name
Not named yet

⚠ Evacuate the only available cluster member

Cluster recovery — restoring a stuck Incus host

If an environment is unreachable and the daemon logs show no available cowsql leader, the Incus API is down and the panel cannot fix it remotely. These are host-level steps to run over SSH. Back up before recovery, and confirm subcommands with incus admin cluster --help for your version.

  1. Diagnose
    sudo journalctl -u incus -n 80 --no-pager

    Look for no available cowsql leader.

  2. Force the daemon down (a stuck daemon ignores a graceful stop)
    sudo systemctl kill --signal=SIGKILL incus.service
    sudo systemctl stop incus.socket
    ps aux | grep -i incusd | grep -v grep
    sudo pkill -9 incusd   # only if the line above still shows incusd
  3. Back up the database
    sudo cp -a /var/lib/incus/database /var/lib/incus/database.bak-$(date +%s)
    # snap install: /var/snap/incus/common/incus/database
  4. Inspect, then recover (daemon stopped)
    sudo incus admin cluster list-database
    sudo incus admin cluster recover-from-quorum-loss
  5. Restart and verify
    sudo systemctl start incus.socket incus.service
    sleep 20 && incus cluster list
  6. Un-evacuate (if the member shows EVACUATED)
    incus cluster restore <member-name>
    incus start <name>