Code Monkey home page Code Monkey logo

incus's Introduction

Incus builds

Incus package builds provided by Zabbly.

There are three repositories available:

  • lts-6.0 (Incus 6.0.x LTS)
  • stable (latest release of Incus)
  • daily (untested daily builds)

Availability

Those packages are built for:

  • Ubuntu 20.04 LTS (focal)
  • Ubuntu 22.04 LTS (jammy)
  • Ubuntu 24.04 LTS (noble)
  • Debian 11 (bullseye) (amd64 only)
  • Debian 12 (bookworm)

Unless otherwise mentioned, packages are built for both amd64 (Intel/AMD 64bit) and arm64 (Arm 64bit).

NOTE: It is often possible to use those packages on other non-LTS Ubuntu releases by picking the closest LTS release prior to the Ubuntu version being run.

Installation

All commands should be run as root.

Repository key

Packages provided by the repository are signed. In order to verify the integrity of the packages, you need to import the public key. First, verify that the fingerprint of key.asc matches 4EFC 5906 96CB 15B8 7C73 A3AD 82CC 8797 C838 DCFD:

curl -fsSL https://pkgs.zabbly.com/key.asc | gpg --show-keys --fingerprint
pub   rsa3072 2023-08-23 [SC] [expires: 2025-08-22]
      4EFC 5906 96CB 15B8 7C73  A3AD 82CC 8797 C838 DCFD
uid                      Zabbly Kernel Builds <[email protected]>
sub   rsa3072 2023-08-23 [E] [expires: 2025-08-22]

If so, save the key locally:

mkdir -p /etc/apt/keyrings/
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc

6.0 LTS repository

On any of the distributions above, you can add the package repository at /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources.

Run the following command to add the 6.0 LTS repository:

sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/lts-6.0
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc

EOF'

Stable repository

On any of the distributions above, you can add the package repository at /etc/apt/sources.list.d/zabbly-incus-stable.sources.

Run the following command to add the stable repository:

sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc

EOF'

Daily repository

On any of the distributions above, you can add the package repository at /etc/apt/sources.list.d/zabbly-incus-daily.sources.

Run the following command to add the daily repository:

sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-daily.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/daily
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc

EOF'

Installing Incus

Update your repository list with:

apt-get update

Then to install Incus, run:

apt-get install incus

Other packages

The repository also includes the following packages:

  • incus-client, a package containing only the CLI tool, useful when only managing remote servers
  • incus-ui-canonical, a package containing a rebranded version of the LXD web interface for use with Incus

Setting up the UI

When using incus-ui-canonical, you will need to have Incus listen on the network. This is done either by enabling it during incus admin init or by setting a listener through incus config set.

For example:

incus config set core.https_address :8443

After that, you can access the UI through https://localhost:8443, accept the self-signed certificate and follow the login instructions.

As incus-ui-canonical is a re-branded version of the LXD UI, you can find useful information in their documentation.

Support

Community support for Incus is provided at https://discuss.linuxcontainers.org

Commercial support for those Incus packages is provided by Zabbly, details at https://zabbly.com/incus

You can also help support the work on Incus and on those packages through:

Repository

This repository gets actively rebased as new releases come out, DO NOT expect a linear git history.

incus's People

Contributors

f-bn avatar foxboron avatar lgrn avatar stgraber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

incus's Issues

incus copy fails inside a container

Hi,

When running incus copy inside an incus container, a segfault occurs. I don't know if it's a packaging issue or an incus issue. Feel free to redirect upstream.

Steps to reproduce

incus launch images:debian/bookworm ctn
# in container "ctn"
# ... install incus
incus launch images:debian/bookworm a
incus copy a b
Error: Create instance from copy: Failed to run: rsync -a -HA --sparse --devices --delete --checksum --numeric-ids --xattrs --filter=-x security.selinux -q /var/lib/incus/storage-pools/default/containers/a/ /var/lib/incus/storage-pools/default/containers/b: signal: segmentation fault

ctn config

$ incus config show --expanded ctn
architecture: x86_64
config:
  environment.HISTFILE: /dev/null
  image.architecture: amd64
  image.description: Debian bookworm amd64 (20231201_05:24)
  image.os: Debian
  image.release: bookworm
  image.serial: "20231201_05:24"
  image.type: squashfs
  image.variant: default
  security.guestapi: "false"
  security.idmap.isolated: "true"
  security.nesting: "true"
  security.privileged: "false"
  volatile.base_image: b283e6f3e32a1dce09d9e1a9bc40a79feeca25ba9b8c359f917b54b386eff487
  volatile.cloud-init.instance-id: 2a45ef79-8012-41a2-99ee-bfeecb26e957
  volatile.eth0.host_name: veth1af69aad
  volatile.eth0.hwaddr: 00:16:3e:3e:4e:52
  volatile.idmap.base: "1214112"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1214112,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1214112,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1214112,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1214112,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: 6f670ee7-f626-4bd7-8bcd-65a8d383aa47
  volatile.uuid.generation: 6f670ee7-f626-4bd7-8bcd-65a8d383aa47
devices:
  eth0:
    name: eth0
    network: incusbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

a config

root@ctn:~# incus config show --expanded a
architecture: x86_64
config:
  image.architecture: amd64
  image.description: Debian bullseye amd64 (20231201_05:24)
  image.os: Debian
  image.release: bullseye
  image.serial: "20231201_05:24"
  image.type: squashfs
  image.variant: default
  security.privileged: "true"
  volatile.base_image: 18451affa3476fe43dca17c016029dc6c426643e62a51d79fffe0f5cec4a5183
  volatile.cloud-init.instance-id: 76d0651f-ff9b-4c28-b58d-78249597c914
  volatile.eth0.host_name: vethcd21c6cb
  volatile.eth0.hwaddr: 00:16:3e:f3:2d:0f
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: 48b1335a-b6f9-425a-8b40-f483352527d7
  volatile.uuid.generation: 48b1335a-b6f9-425a-8b40-f483352527d7
devices:
  eth0:
    name: eth0
    network: incusbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

Thanks :)

"Incus UI" documentation

It may be obvious for ex-LXD-UI user but it took me while to figure out how to use "Incus web UI". (I now know I should have read the LXD UI documentation.)

It may be a good idea to add something like a short hint text section in
How to configure the Incus server

How to access Incus server with browser

Make sure to cofigure Incus server as above. Then, access the Incus web UI in your browser by entering the server address (for example, https://192.0.2.10:8443).

See LXD UI documentation as a reference for more detailed guide. Incus UI is re-branded LXD-UI sharing the same code.

Apparently upgrade on SID fails

Hi,
standard upgrade on fully updated Debian Sid fails:

mcon@cinderella:~/Downloads$ sudo apt update && sudo apt upgrade
Hit:1 http://download.zerotier.com/debian/bookworm bookworm InRelease
Hit:2 http://deb.anydesk.com all InRelease                                                                                                                                    
Hit:4 http://deb.debian.org/debian sid InRelease                                                                                                                              
Hit:5 https://repo.skype.com/deb stable InRelease                                                                                                                             
Hit:6 https://packages.microsoft.com/repos/ms-teams stable InRelease                                                                            
Hit:3 https://packages.microsoft.com/repos/code stable InRelease                                                          
Hit:7 https://pkgs.zabbly.com/incus/stable bookworm InRelease                                       
Hit:8 https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs vscodium InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  node-mathjax-full node-mj-context-menu node-speech-rule-engine
Use 'sudo apt autoremove' to remove them.
The following packages have been kept back:
  incus incus-client
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
mcon@cinderella:~/Downloads$ sudo apt dist-upgrade 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  node-mathjax-full node-mj-context-menu node-speech-rule-engine xdelta3
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  incus-base
The following NEW packages will be installed:
  incus-agent libcowsql0 libraft0
The following packages will be upgraded:
  incus incus-client
2 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
Need to get 0 B/25.9 MB of archives.
After this operation, 216 MB disk space will be freed.
Do you want to continue? [Y/n] 
Reading changelogs... Done
(Reading database ... 645601 files and directories currently installed.)
Preparing to unpack .../incus_6.0.0-1_amd64.deb ...
Unpacking incus (6.0.0-1) over (6.0-202404040314-debian12) ...
dpkg: error processing archive /var/cache/apt/archives/incus_6.0.0-1_amd64.deb (--unpack):
 trying to overwrite '/etc/default/incus', which is also in package incus-base 6.0-202404040314-debian12
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/incus_6.0.0-1_amd64.deb
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)

Is this some misconfig on my side?

Any interest in adding Dockerfiles?

I have been maintaining container images based on your work on this repository here:

https://github.com/cmspam/incus-docker/

I am curious if you are interested in adding a Dockerfile and automated build actions to maintain a docker image from this repository directly, obsoleting my work maintaining the docker image.

Forgive me if it's out of scope of what you want to do, but I think it may be really helpful, since there are still many distributions and setups where incus isn't (and may never be) distributed, and incus performs pretty well even when it is running from a container.

If not, no worries, I can continue working on it.

Add MinIO client (`mc`) to /opt/incus/bin/

As Incus is moving over to using the MinIO CLI to configure the daemon, we need to include its client tool in the package. We don't want the path exposed outside of /opt/incus/bin though as otherwise it may conflict with Midnight Commander that uses the same name.

Stopping a container brings down the host eth0 interface

Stopping a container brings down the host eth0 interface:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:8f:68:65 brd ff:ff:ff:ff:ff:ff
    altname enp5s0
    inet 192.168.121.125/24 brd 192.168.121.255 scope global dynamic eth0
       valid_lft 3384sec preferred_lft 3384sec
    inet6 fe80::5054:ff:fe8f:6865/64 scope link 
       valid_lft forever preferred_lft forever
3: incusbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 00:16:3e:b3:a2:02 brd ff:ff:ff:ff:ff:ff
    inet 10.2.0.1/24 scope global incusbr0
       valid_lft forever preferred_lft forever

# incus launch images:debian/12 debian-ct
Creating debian-ct
Starting debian-ct                            

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:8f:68:65 brd ff:ff:ff:ff:ff:ff
    altname enp5s0
    inet 192.168.121.125/24 brd 192.168.121.255 scope global dynamic eth0
       valid_lft 3357sec preferred_lft 3357sec
    inet6 fe80::5054:ff:fe8f:6865/64 scope link 
       valid_lft forever preferred_lft forever
3: incusbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:b3:a2:02 brd ff:ff:ff:ff:ff:ff
    inet 10.2.0.1/24 scope global incusbr0
       valid_lft forever preferred_lft forever
5: vethc085fdca@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master incusbr0 state UP group default qlen 1000
    link/ether c6:48:85:2f:67:d5 brd ff:ff:ff:ff:ff:ff link-netnsid 0

# incus stop debian-ct

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 52:54:00:8f:68:65 brd ff:ff:ff:ff:ff:ff
    altname enp5s0
3: incusbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 00:16:3e:b3:a2:02 brd ff:ff:ff:ff:ff:ff
    inet 10.2.0.1/24 scope global incusbr0
       valid_lft forever preferred_lft forever

# journalctl
...
Oct 08 09:14:05 incus kernel: incusbr0: port 1(vethc085fdca) entered disabled state
Oct 08 09:14:05 incus kernel: veth0ed2f97b: renamed from physpu5wB2
Oct 08 09:14:05 incus (udev-worker)[13609]: Network interface NamePolicy= disabled on kernel command line.
Oct 08 09:14:05 incus kernel: device vethc085fdca left promiscuous mode
Oct 08 09:14:05 incus kernel: incusbr0: port 1(vethc085fdca) entered disabled state
Oct 08 09:14:05 incus systemd[1]: Stopping [email protected] - ifup for eth0...
Oct 08 09:14:05 incus dhclient[13642]: Killed old client process
Oct 08 09:14:05 incus ifdown[13642]: Killed old client process
Oct 08 09:14:05 incus audit[13652]: AVC apparmor="STATUS" operation="profile_remove" profile="unconfined" name="incus-debian-ct_</var/lib/incus>" pid=13652 comm="apparmor_parser"
Oct 08 09:14:05 incus kernel: audit: type=1400 audit(1696752845.948:19): apparmor="STATUS" operation="profile_remove" profile="unconfined" name="incus-debian-ct_</var/lib/incus>" pid=13652 comm="apparmor_parser"
Oct 08 09:14:06 incus dhclient[13642]: Internet Systems Consortium DHCP Client 4.4.3-P1
Oct 08 09:14:06 incus ifdown[13642]: Internet Systems Consortium DHCP Client 4.4.3-P1
Oct 08 09:14:06 incus ifdown[13642]: Copyright 2004-2022 Internet Systems Consortium.
Oct 08 09:14:06 incus ifdown[13642]: All rights reserved.
Oct 08 09:14:06 incus ifdown[13642]: For info, please visit https://www.isc.org/software/dhcp/
Oct 08 09:14:06 incus dhclient[13642]: Copyright 2004-2022 Internet Systems Consortium.
Oct 08 09:14:06 incus dhclient[13642]: All rights reserved.
Oct 08 09:14:06 incus dhclient[13642]: For info, please visit https://www.isc.org/software/dhcp/
Oct 08 09:14:06 incus dhclient[13642]: 
Oct 08 09:14:06 incus dhclient[13642]: Listening on LPF/eth0/52:54:00:8f:68:65
Oct 08 09:14:06 incus ifdown[13642]: Listening on LPF/eth0/52:54:00:8f:68:65
Oct 08 09:14:06 incus ifdown[13642]: Sending on   LPF/eth0/52:54:00:8f:68:65
Oct 08 09:14:06 incus ifdown[13642]: Sending on   Socket/fallback
Oct 08 09:14:06 incus dhclient[13642]: Sending on   LPF/eth0/52:54:00:8f:68:65
Oct 08 09:14:06 incus dhclient[13642]: Sending on   Socket/fallback
Oct 08 09:14:06 incus dhclient[13642]: DHCPRELEASE of 192.168.121.125 on eth0 to 192.168.121.1 port 67
Oct 08 09:14:06 incus ifdown[13642]: DHCPRELEASE of 192.168.121.125 on eth0 to 192.168.121.1 port 67
Oct 08 09:14:06 incus systemd[1]: [email protected]: Deactivated successfully.
Oct 08 09:14:06 incus systemd[1]: Stopped [email protected] - ifup for eth0.

Incus is running in a Debian 12 (vagrant managed) virtual machine, and is configured as https://github.com/rgl/incus-playground/blob/main/provision-incus.sh#L71-L99.

provide more useful deb changelog

Thanks for the zabbly incus packages. With the recent 0.5.x updates, I found myself wanting to know what the changes were to the debs, so I looked at /usr/share/doc/incus/changelog.Debian.gz only to find the single entry:

incus (0.5.1-202401301901-ubuntu22.04) jammy; urgency=medium

  * Automated Incus stable build

 -- Zabbly ZFS builds <[email protected]>  Tue, 30 Jan 2024 19:01:41 +0000

Ideally this would have git commits and oneline summaries (or similar) going back to at least the previous minor version (but really, why not all of them).

Snapshot create --stateful failure

I attempted to snapshot a running container but that failed badly:

root@incus:~# incus snapshot create openwrt before_pbr --stateful
Error: Failed taking stateful checkpoint: snapshot dump failed
(00.076920) Warn  (criu/kerndat.c:1593): CRIU was built without libnftables support
Error (criu/util.c:627): execvp("iptables-restore", ...) failed: No such file or directory
(00.091688) Error (criu/util.c:642): exited, status=1
Error (criu/util.c:627): execvp("ip6tables-restore", ...) failed: No such file or directory
(00.092488) Error (criu/util.c:642): exited, status=1
(00.092516) Error (criu/net.c:3124): net: Locking network failed: iptables-restore returned -1. This may be connected to disabled CONFIG_NETFILTER_XT_MARK kernel build config option.
Error (criu/util.c:627): execvp("iptables-restore", ...) failed: No such file or directory
(00.093316) Error (criu/util.c:642): exited, status=1
Error (criu/util.c:627): execvp("ip6tables-restore", ...) failed: No such file or directory
(00.094033) Error (criu/util.c:642): exited, status=1
(00.094234) Error (criu/cr-dump.c:2098): Dumping FAILED.

OTOH stopping container, snapshotting and restarting worked as expected.

Messages seem to suggest criu building was missing some useful config and there may be some missing dependency in package.

Failed creating instance from image: No mountinfo entry found

I cannot create any vm instances. No matter the vm ISO picked. I always get this error. I can create containers but not vms. I am new to Incus and I am very impressed but I dont understand this error. I have restarted my Incus server.
Incus 0.6
Ubuntu 20.04 as host OS

My storage is
local | btrfs with plenty of storage available

local btrfs

Instance creation failed
Failed creating instance from image: No mountinfo entry found
name: test
type: virtual-machine
devices:
  root:
    path: /
    pool: local
    type: disk
source:
  alias: alpine/3.16/default
  mode: pull
  protocol: simplestreams
  server: https://images.linuxcontainers.org
  type: image
config: {}

Package the LXD UI as incus-ui-canonical

Add an extra build step to download the Canonical LXD UI, swap the branding and links, apply a few changes and then package it as incus-ui-canonical. Have incus Suggests incus-ui-canonical.

0.1 version missing in repo

(not an issue I think)
Hi, I just noticed that latest 0.1 version disappeared from the repository (stable).
Seems like you are keeping only the two newest versions.
Regarding to lxc/incus#218 I'm not able to install working version. I can handle it with the transfer packages from other servers or using aptly to keep the versions cached. But looks like sub-optimal solution.

permission denied

I am getting this error after the installation of incus:

running command incus list --debug

DEBUG [2023-09-15T07:21:25Z] Connecting to a local Incus over a Unix socket
DEBUG [2023-09-15T07:21:25Z] Sending request to Incus etag= method=GET url="http://unix.socket/1.0"
Error: Get "http://unix.socket/1.0": dial unix /var/lib/incus/unix.socket: connect: permission denied

incus UI

Dialog displayed by CertificateGenerate-8ae719bf.js has:

"incus config trust add-certificate Downloads/incus-ui.crt"

But what I downloaded was incus-ui-localhost.crt.

So shouldn't it more or less like:

"incus config trust add-certificate Downloads/incus-ui-localhost.crt"

As I see javascript, the downloaded file name seems to be coming from:

{onClick:()=>I(`incus-ui-${location.hostname}.crt`,t.crt)

Maybe these 2 should use the same name.

FYI: I am not javascript person.

Write script to scan for updated dependencies

Currently updating to the latest tag of our various dependencies is a very manual process that can take up to 30min.

Instead this should be scripted so it can be done far more frequently.

Management of subuid/subgid as part of package

Hello !

I was looking at the LXD Debian package sources and see that when user are created, the lxd and root users get some subuid/gid for user namespacing stuff.

Moreover in the docs, when building it from sources, it is mentioned that we need to add at least 10M range of UID/GID for the root user:
https://linuxcontainers.org/incus/docs/main/installing/#machine-setup

I don't see anything related to this in the Incus package, do we still need to handle it as part of package or there is some new kernel stuff that manage it automatically ?

Thanks !

Update UI to 0.6

This will need a bit of work to update the patch that modifies the image server list.
As part of this, that transparent/white LXD logo should also get removed from our build.

Github Sponsor Link Typo

There is a typo on the main README of the project.

When I click on the Github Sponsors link, I get redirected to a weird page.

There is a typo in the hyperlink.

[Github Sponsors](https://gituhb.com/sponsors/stgraber)

Deletion of snapshots with ':' fails

After migrating from LXD 5.0.3 to Incus 6.0, we adjusted our backup scripts for Incus, where snapshots can't deleted anymore. Apparently the colon in snapshot names is wrongly detected as a delimiter:

Command help:

Usage:
  incus snapshot delete [<remote>:]<instance> <snapshot name> [flags]

Works:

# incus snapshot create container 2024-04-16_15:52:44_hourly

Fails:

# incus snapshot delete container 2024-04-16_15:52:44_hourly
Error: The remote "2024-04-16_15" doesn't exist

I guess this is a bug. Even if : is detected as a delimiter between remote and instance, this doesn't really make sense. What would the argument container be detected as then?

What I tried:

  • Escaping the snapshot name with "
  • Escaping the snapshot name with '
  • Escaping the : with \:

Failed to update on Pop_OS 22.04 LTS

I tried apt update this morning and encounter following error:

Setting up incus-base (0.7-202403261636-ubuntu22.04) ...
Failed to restart incus.service: Unit incus.service not found.
dpkg: error processing package incus-base (--configure):
 installed incus-base package post-installation script subprocess returned error exit status 5
dpkg: dependency problems prevent configuration of incus:
 incus depends on incus-base (= 0.7-202403261636-ubuntu22.04); however:
  Package incus-base is not configured yet.

dpkg: error processing package incus (--configure):
 dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 incus-base
 incus
E: Sub-process /usr/bin/dpkg returned an error code (1)

It was solved by removing incus and incus-base then reinstall them.

I am using stable repo

/etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: jammy
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/zabbly.asc

Thank you

incus cannot be installed inside a container

incus's postinst script has the following line which blocks installation of incus inside a container:

systemctl reload incus-lxcfs.service

This is caused by the following line in incus-lxcfs.service:

ConditionVirtualization=!container

Removing the above line allows the package to be installed.

It is unclear to me why incus-lxcfs.service shouldn't be running inside a container.

Issue launching instances from incus-ui-dashboard

When I try to launch a instance using a locally crafted image it returns me an error

" Image not provided for instance creation"

Screenshot:
Screenshot 2024-04-10 at 14-43-41 incus2 netbird selfhosted Incus UI
image

This is a fresh debian12 install and a fresh (yesterday) incus install

I can launch this image using incus launch

Consider creating `incus` system user as part of package

Hello,

During some tests of these packages, I could see that there is some groups created for Incus, but there is no incus system user created for sub-processes such as dnsmasq or QEMU. Therefore, these processes uses nobody user for their exec, I was a bit surprised at first coming from LXD where there is a native lxd user. After looking in the Incus source code, nobody user is indeed used if there is no incus user present on the system. In fact, I think this doesn't change anything, I just think this is a bit cleaner from a system administration perspective.

WDYT ? I can prepare a PR if needed :)

Unable to use xtables due to hard dependency on nftables

I'm currently trying to switch from LXD to Incus. I am still depending on the xtables firewall.

Since this commit, nftables seems to be a hard dependency. And since nftables seems to get prioritized over xtables (according to this code) I don't see a way to make incus use the xtables firewall anymore:

incus info | grep firewall
- network_firewall_filtering
- firewall_driver
  firewall: nftables

Is this intentional? And if so, is there a way to still depend on xtables as firewall in Incus?

document the available architectures

Hi, I'd like to kindly suggest to document which architectures are available in the repos.
The current README.md (with an explicit exception for Debian 11) together with the setup instructions using a generic $(dpkg --print-architecture) make it sound like all or most of Ubuntu's/Debian's were supported. This doesn't seem to be the case though, but it's not obvious from the documentation.

Note that I'm not requesting the missing builds, I'm quite aware that an armhf RPi is not a priority... On x86 everything is working nicely. Thanks a lot!

Suggestion: break incus into more slim packages for deb installation

qemu makes no sense in my situation i'm already within a kvm guest and here are only a set of containers. I'd suggest to divide incus into incus-base and incus-qemu where incus-qemu would fetch incus-base, too. incus would then function in my opinon as pseudo package, fetching incus-qemu.

incus-base : Depends: sgdisk but it is not installable

I believe sgdisk is provided by gdisk package

✦ > sudo apt install incus
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 incus-base : Depends: sgdisk but it is not installable
E: Unable to correct problems, you have held broken packages

Thank you

Separate /opt partition breaks startup on boot

We have a separate /opt partition (ZFS) which seams to break the service units on boot:

$ journalctl -b | grep incus
Mar 15 16:37:09 control2c systemd[1]: incus-startup.service: Failed to open /lib/systemd/system/incus-startup.service: No such file or directory
Mar 15 16:37:09 control2c systemd[1]: incus-lxcfs.service: Failed to open /lib/systemd/system/incus-lxcfs.service: No such file or directory
Mar 15 16:37:09 control2c systemd[1]: incus.socket: Failed to open /lib/systemd/system/incus.socket: No such file or directory
Mar 15 16:37:09 control2c systemd[1]: incus-user.socket: Failed to open /lib/systemd/system/incus-user.socket: No such file or directory

Nothing is started.

Is it intended for the system service units to be symlinks to files in /opt?

$ ls -lah /lib/systemd/system/incus*
lrwxrwxrwx 1 root root 49 Feb 28 18:48 /lib/systemd/system/incus-lxcfs.service -> /opt/incus/lib/systemd/system/incus-lxcfs.service
lrwxrwxrwx 1 root root 43 Feb 28 18:48 /lib/systemd/system/incus.service -> /opt/incus/lib/systemd/system/incus.service
lrwxrwxrwx 1 root root 42 Feb 28 18:48 /lib/systemd/system/incus.socket -> /opt/incus/lib/systemd/system/incus.socket
lrwxrwxrwx 1 root root 51 Feb 28 18:48 /lib/systemd/system/incus-startup.service -> /opt/incus/lib/systemd/system/incus-startup.service
lrwxrwxrwx 1 root root 48 Feb 28 18:48 /lib/systemd/system/incus-user.service -> /opt/incus/lib/systemd/system/incus-user.service
lrwxrwxrwx 1 root root 47 Feb 28 18:48 /lib/systemd/system/incus-user.socket -> /opt/incus/lib/systemd/system/incus-user.socket

The symlinks introduce a hidden dependency to that partition, which is not mounted yet when the service units are evaluated.

lxd-to-incus: present in both incus-tools and incus-base

Hi,

I wanted to try out incus-simplestreams. To do so, I upgraded the core packages (incus-base and incus-client) to incus 0.7 and attempted to install incus-tools, but it fails due to /usr/bin/lxd-to-incus being already provided by incus-base.

# apt-get -y install incus-tools
...
Unpacking incus-tools (0.7-1) ...
dpkg: error processing archive /var/cache/apt/archives/incus-tools_0.7-1_amd64.deb (--unpack):
 trying to overwrite '/usr/bin/lxd-to-incus', which is also in package incus-base 0.7-202403261638-debian12
...
# dpkg -L incus-base | grep lxd-to-incus
/opt/incus/bin/lxd-to-incus
/usr/bin/lxd-to-incus
# apt-file show incus-tools | grep lxd-to-incus
incus-tools: /usr/bin/lxd-to-incus
incus-tools: /usr/share/man/man1/lxd-to-incus.1.gz

Upgrade from Ubuntu 20.04 to Ubuntu 22.04 breaks Incus' qemu/kvm (libnettle7 vs libnettle8).

Hi,

I had an Ubuntu 20.04 host running LXD. A few days ago, I decided to migrate everything to Incus and everything worked great!
Today, I decided to use Ubuntu's do-release-upgrade to upgrade to Ubuntu 22.04.

Containers worked fine out of the box, and I fixed some minor non-Incus-related issues. Then I noticed my Incus-managed qemu/kvm instances hadn't started. This is because the upgrade left the Incus of 20.04 installed, and with a priority of 100 instead of 500. So it took priority over other versions and a simple apt update; apt upgrade -y didn't work. Neither did an apt-get install --reinstall incus, because it said it couldnt be downloaded (as it was pointing to /var/lib and not an online repo, due to the upgrade).

I managed to fixed it by seeing what versions were available for Incus through apt-cache policy incus, and then running:

apt-get install incus=0.7-202403281728-ubuntu22.04 incus-base=0.7-202403281728-ubuntu22.04 incus-client=0.7-202403281728-ubuntu22.04

As the 22.04 version is obviously built against libnettle8 and no longer relying on the removed libnettle7.
This solution might help other people that run into issues after upgrading from Ubuntu 20.04 to Ubuntu 22.04. It won't break upgrade-paths, and apt-cache policy incus is clean now, no more upgrade-related source:

home :: ~ » apt-cache policy incus
incus:
  Installed: 0.7-202403281728-ubuntu22.04
  Candidate: 0.7-202403281728-ubuntu22.04
  Version table:
 *** 0.7-202403281728-ubuntu22.04 500
        500 https://pkgs.zabbly.com/incus/stable jammy/main amd64 Packages
        100 /var/lib/dpkg/status
     0.7-202403280454-ubuntu22.04 500
        500 https://pkgs.zabbly.com/incus/stable jammy/main amd64 Packages
home :: ~ »

Before it was showing the upgrade-related version of 20.04.

Kind regards,

Daniël Mostertman

Incus UI - Creating an instance with a manually exported image

From Incus UI, creating an instance with an image manually created from another instance fails with the error "Instance creation failed - Image not provided for instance creation" even though the image is properly selected. This problem does not occur if the image source is "Linux Containers".

incus-client and completion

Hi,

Installing incus-client doesn't install any completions file for Bash. It seems that completions are provided by incus-base but incus-client doesn't depend on incus-base. Would it be possible to include completions in incus-client?

Starting a container creates high CPU wait

Starting a container using incus 0.2 via the zabbly stable .deb packages creates high cpu wait for each container started.
Unfortunately I was unable to track down exactly which process was causing the high wait.

I'm able to reproduce this in VM and bare metal environments, with both ubuntu jammy and debian bookworm host OS, and arbitrary guests. The high cpu wait does not occur when launching a VM.

Detailed steps to reproduce

Create a fresh VM for testing and install curl dependency:

$ lxc launch --vm images:ubuntu/jammy/amd64 -c limits.cpu=2 -c limits.memory=8GB
Creating the instance
Instance name is: in-slug                     
Starting in-slug

$ lxc shell in-slug
root@in-slug:~# apt update
...
root@in-slug:~# apt install curl
...

Install incus via zabbly packages

root@in-slug:~# mkdir -p /etc/apt/keyrings/
root@in-slug:~# curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
root@in-slug:~# sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc

EOF'
root@in-slug:~# apt update
...
root@in-slug:~# apt install incus
...

root@in-slug:~# incus admin init
If this is your first time running Incus on this machine, you should also run: incus admin init

Would you like to use clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to use an existing bridge or host interface? (yes/no) [default=no]: 
Would you like the server to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: 
Would you like a YAML "init" preseed to be printed? (yes/no) [default=no]: 

Without any containers running cpu wait is 0.0

root@in-slug:~# top

top - 09:09:09 up 4 min,  0 users,  load average: 0.25, 0.15, 0.05
Tasks: 129 total,   1 running, 128 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  3.1 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7373.6 total,   6384.9 free,    193.4 used,    795.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6922.9 avail Mem 

Start a new container

root@in-slug:~# incus launch images:ubuntu/jammy/amd64
Creating the instance
Instance name is: polite-chigger              

The instance you are starting doesn't have any network attached to it.
  To create a new network, use: incus network create
  To attach a network to an instance, use: incus network attach

Starting polite-chigger

cpu wait is now 50% (= 1 core)

root@in-slug:~# top

top - 09:10:46 up 5 min,  0 users,  load average: 0.62, 0.26, 0.10
Tasks: 135 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 49.6 id, 50.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7373.6 total,   5634.3 free,    241.3 used,   1498.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6848.4 avail Mem 

Start another container, cpu wait goes to 100%

root@in-slug:~# incus launch images:debian/bookworm/amd64
Creating the instance
Instance name is: wired-gobbler               

The instance you are starting doesn't have any network attached to it.
  To create a new network, use: incus network create
  To attach a network to an instance, use: incus network attach

Starting wired-gobbler
root@in-slug:~# top

top - 09:12:34 up 7 min,  0 users,  load average: 0.88, 0.41, 0.16
Tasks: 167 total,   1 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.3 sy,  0.0 ni,  0.0 id, 99.5 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7373.6 total,   3810.1 free,    352.6 used,   3211.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6702.9 avail Mem 

Stopping the containers returns wait to 0

root@in-slug:~# incus stop --all
root@in-slug:~# top

top - 09:14:53 up 9 min,  0 users,  load average: 0.24, 0.29, 0.15
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.0 us,  3.0 sy,  0.0 ni, 93.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7373.6 total,   3934.8 free,    238.0 used,   3200.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6817.9 avail Mem 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.