I have some confusion about getting up and running on a headless Raspberry Pi 5 running Raspberry Pi OS Lite.
After setting up the Raspberry Pi, updating packages, firmware etc. I proceeded to install incus.
Install install of Incus was like so, which involves me installing from debian’s repository, trying to run incus admin init but getting an error about elevation, so doing it with sudo, then discovering later I should have added the user to the group, so then trying to re-init in case I stuffed something up, which failed as the pool etc already existed, I also couldn’t figure out how to access the web UI, so I figured I was an older version, so then I removed incus, and installed it from the lts repo then the stable repo.
10 2025-12-04 04:09:23 sudo apt install incus
11 2025-12-04 04:11:46 incus admin init
12 2025-12-04 04:11:53 sudo incus admin init
13 2025-12-04 04:13:51 incus config show
14 2025-12-04 04:13:56 sudo incus config show
15 2025-12-04 04:14:29 sudo adduser $USER incus-admin
16 2025-12-04 04:14:34 newgrp incus-admin
17 2025-12-04 04:14:42 incus admin init
18 2025-12-04 04:14:53 incus image list images:
19 2025-12-04 04:20:43 incus
20 2025-12-04 04:22:21 sudo apt install -y incus-ui-canonical
21 2025-12-04 04:24:13 incus --version
22 2025-12-04 04:24:51 incus admin
23 2025-12-04 04:25:01 incus admin shutdown
24 2025-12-04 04:25:07 sudo apt remove incus
The confusion around accessing the web UI continued, which was based around me thinking it was related to the incus webui command, which when my SSH port forwarding attempts there failed, as incus webui kept changing the port on me, I eventually figured out it that I wasn’t missing some package, and that incus wasn’t out of date, and that I didn’t stuff up the init process, and that the web UI isn’t a separate command (despite being a separate package) but that it is available via incus config set core.https_address :8443 then SSH forwarding 8443.
66 2025-12-04 04:40:42 incus admin init
67 2025-12-04 04:41:19 incus webui
68 2025-12-04 04:41:28 exit
69 2025-12-04 04:43:00 incus webui
70 2025-12-04 04:43:07 exit
71 2025-12-04 04:43:42 incus config set core.https_address :8443
72 2025-12-04 04:43:45 incus webui
73 2025-12-04 04:43:59 incus webui --help
74 2025-12-04 04:44:09 incus --help
75 2025-12-04 04:44:12 incus restart
76 2025-12-04 04:44:26 incus admin
77 2025-12-04 04:44:34 incus admin shutdown
78 2025-12-04 04:44:45 incus webui
79 2025-12-04 04:44:53 incus webui
80 2025-12-04 04:44:56 incus webui --help
81 2025-12-04 04:45:06 incus config
82 2025-12-04 04:45:08 incus config edit
83 2025-12-04 04:45:20 incus webui 8443
84 2025-12-04 04:45:23 incus webui :8443
85 2025-12-04 04:45:30 incus webui --help
86 2025-12-04 04:45:45 incus webui localhost:8443
87 2025-12-04 04:46:42 incus config set core.https_address :8443
However, I noticed that via the web UI, only the Dir storage pool was available. After some digging, I figured out how to install btrfs and zfs to get them to show up. However, I compared this to an old LXD instance I experimented with, and LXD has all the available storage pool drivers available…
I recall, but I could be incorrect as I no longer have the terminal history, that perhaps things like zfs and btrfs and qemu were installed with incus, but an uninstall removed them, and subsequent installs/reinstalls did not re-add them.
I noticed that doing sudo apt install incus would mention suggested and recommended packages:
Suggested packages:
adwaita-icon-theme-legacy incus-extra libcuda1 cups-common libfftw3-dev opus-tools xdg-utils gstreamer1.0-plugins-ugly
gvfs lego libnvcuvid1 libdv-bin libvisual-0.4-plugins pipewire lm-sensors opencl-icd
ceph-common minio-client libnvidia-encode1 oss-compat gstreamer1.0-tools pulseaudio serdi samba
lvm2 spice-client-gtk libbluray-bdj libdvdcss2 jackd2 libraw1394-doc sordi vde2
zfsutils-linux | virt-viewer colord libfftw3-bin liblcms2-utils librsvg2-bin speex nvidia-vdpau-driver
Summary:
Upgrading: 0, Installing: 263, Removing: 0, Not Upgrading: 2
Download size: 64.5 MB / 221 MB
Space needed: 1,260 MB / 50.3 GB available
So I tried sudo apt install --install-recommends –-install-suggest incus however that then wanted to install 4000 packages which would be 30GB, and still seems it was missing suggested btrfs packages:
Suggested packages:
ceph-mgr-diskprediction-local fruit gccxml libreoffice-grammarcheck-zu osspd libapache2-mod-python
cups-pdf libgsl2 libclamunrar11 libreoffice-help-zu pandoc-citeproc python3-egenix-mxtexttools
debtags heimdal-docs libcommons-net-java-doc mythes-zu wkhtmltopdf rl-accel
squid-deb-proxy-client iceweasel libgdal-doc gcj-jdk python rl-renderpm
aufs-tools | icedove libiodbc2-dev unity-common w3-dtd-mathml python-rpy-docs
cgroupfs-mount | iceape-browser libgoogle-gson-java-doc doc-html-w3 python3-breezy-dbg python3-wxgtk3.0
elpa-cider openoffice.org-hunspell libhdf4-dev mh-e bpython3 | python3-wxgtk
libtext-multimarkdown-perl | openoffice.org-core java-virtual-machine cicero geoip-database-contrib python3-mysql.connector
php-codesniffer iceape-browser libhsqldb1.8.0-java-gcj libmemcached libgdal20 python3-cx-oracle
node-babel-eslint | iceweasel ooo2dbk qct python3-flup gnome-codec-install
zoo | icedove rtf2xml openoffice.org python3-sqlite perlsgml
pulseaudio autotrace libscalar-number-perl iceweasel etcd w3-recs
hplip-cups radiance gpa icedove python-invoke-doc haskell-mode
foomatic-db-gutenprint python3-uniconvertor hunspell-dictionary-zu audiooss python3-gobject telepathy-haze
libgeotiff-epsg jack-tools | myspell-dictionary-zu iucode-tool python3-sip
bbchess libsndio6.1 | libreoffice-spellcheck-zu node-uglify-to-browserify python-oracle-doc
Recommended packages:
btrfs-tools ceph-fuse xul-ext-mozvoikko hunspell-sv-se wsdd djtools prover9 mongodb-server libodbc1
Summary:
Upgrading: 0, Installing: 4859, Removing: 0, Not Upgrading: 2
Download size: 8,176 MB / 9,234 MB
Space needed: 30.0 GB / 50.3 GB available
And turns out –-install-recommends is the default behavior.
So, I’m left wondering:
- Whether I stuffed up my distro install somehow, and somehow uninstalled things that shouldn’t have been, that for some reason are now requiring manual installation. My goal is to use Incus for instances, including that of docker containers, and including a nvme backed storage pool. Ideally to serve instances for Syncthing, Discourse, Ghost, and Fizzy.
- Whether LXD just bundles more packages than Incus
- How one actually installs suggested packages for Incus without installing the kitchen-sink.
- How to completely uninstall an incus install, so that when I reinstall incus,
incus initwill run fresh.
Alternatively, some suggestions to make things less confusing:
- For the Web UI to indicate what features are missing from missing optional packages, so that I don’t think it is due to an outdated incus version that doesn’t have those features, but instead am guided on how to get those already supported features up and running. That supported but uninstalled features should instead be visually displayed/shown but be disabled/grayed-out/unselectable, with instructions on how to enable them, or a button to automatically install whatever to enable them.
- For and one of the
incus admin,incus admin init,incus webuicommands to indicate how to setup and access the Web UI, which to me is logical next step during or after initialization, as part of the admin flow, and as part ofincus webui. Instead, again, I’m left wondering if it is due to me missing a package, or a initialization mistake, or an outdated incus version. When it was actually related toincus config set core.https_address :8443which gives no guidance about it.
I would use IncusOS but its apparent TPM 2.0 requirement makes Raspberry Pi 5 support tenuous.