While I use docker for most of my home lab activities, I like the option of running system containers or VMs and LXC gives a good way to do that. I previously used LXD but I don’t really like Canonical pushing their Snap packages everywhere so I thought i’d try out the fork Incus.
As I was previously running LXD, I had to remove that, install Incus and then for ease of use, install the LXD Web UI (which runs fine on Incus).
Remove LXD via snap command
sudo apt remove --purge lxd
Install Incus from repositories. Ubuntu 24.04 and Debian 13 both include Incus packages in the standard repository. For instructions for other distributions, view the instructions here
Check that Incus is available via the network.
- sudo incus config edit
- Check that there is a config block similar to:
config: core.https_address: '[::]:8443'
- Save and close the file
Add repository for LXD-UI and installed. The LXD Web UI is currently not packaged in the standard interface, but one of the Incus developers Stéphane Graber has packaged them via Zabbly. As I didn’t need to install Incus this way, I downloaded the UI deb file directly from the package repository and installed it using dpkg.
- From https://pkgs.zabbly.com/incus/stable/pool/main/i/incus/ download the appropriate incus-ui-canonical package
- dpkg -i incus-ui-canonical_.deb
Update systemd unit file to add INCUS_UI variable
As the Incus package was installed from the distributions package repository it doesn’t have the environment variables set to load the User interface (the Zabbly packages do have these set). To set these the systemd unit file will need to be modified:sudo systemctl edit incus
Add a section at the top (above the comments):
[Service] Environment="INCUS_UI=/opt/incus/ui/"
Save and close the unit file
Restart Incus
sudo systemctl restart incus
You should now be able to access https://:8443 from a computer on the same network and setup the certificates to login.