Retour à l’aperçu de l’actualité

Incus 6.15 est maintenant disponible

1 août 2025

Introduction

L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.15 !

Cette nouvelle version apporte des améliorations un peu partout, que ce soit pour les conteneurs d’application, les VM, le clustering, le réseau, ou encore l’outil en ligne de commande.

image|690x336

Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/

Ajoutons que nous avons fait de gros progrès sur Incus OS, et l’utilisons à présent pour faire tourner l’environnement de démonstration. Nous avons également conçu un outil de téléchargement, avec des instructions disponibles ici.

Nouvelles fonctionnalités

Support de l’authentification pour les registres OCI

Incus supporte désormais l’utilisation de modules d’authentification pour interagir avec les registres OCI. Les modules peuvent être spécifiés par l’intermédiaire de la nouvelle option --credentials-helper dans la commande incus remote add.

stgraber@dakara:~$ incus remote add oci-demo https://northamerica-northeast1-docker.pkg.dev/stgraber-1525358518329/test-registry --protocol=oci --credentials-helper=docker-credential-gcloud·
stgraber@dakara:~$ incus image info oci-demo:alpine:latest
Fingerprint: ec1b05d1eac264d9204a57f4ad9d4dc35e9e756e9fedaea0674aefc7edb1d6a4
Size: 3.47MiB
Architecture: x86_64
Type: container
Public: yes
Timestamps:
    Created: 2025/02/13 22:28 EST
    Uploaded: 2025/02/13 22:28 EST
    Expires: never
    Last used: never
Properties:
    description: northamerica-northeast1-docker.pkg.dev/stgraber-1525358518329/test-registry/alpine (OCI)
    id: alpine:latest
    type: oci
    architecture: x86_64
Aliases:
    - alpine:latest
Cached: no
Auto update: disabled
Profiles: []

Utilisation de webhooks comme cibles de journalisation

Nous avons récemment retravaillé notre système de journalisation pour supporter l’ajout de plusieurs cibles, avec divers filtres, et avons ajouté le support de la journalisation par l’intermédiaire de syslog, en plus du support préexistant pour loki.

Dans cette version, nous ajoutons un nouveau type de cible : les webhooks.
Le système supporte les mêmes fonctionnalités que pour les deux autres types de cibles, et envoie les événements en JSON à la cible webhook. La syntaxe JSON est la même que celle utilisée dans notre API d’événements.

stgraber@dakara:~$ incus config set logging.demo.target.address=http://127.0.0.1:8080/hook
stgraber@dakara:~$ incus config set logging.demo.target.type=webhook

Suite à cela, le serveur cible reçoit les événements ainsi :

POST /hook (application/json, 231 bytes)
{"type":"lifecycle","timestamp":"2025-07-31T23:34:12.714974583-04:00","metadata":{"action":"config-updated","source":"/1.0","requestor":{"username":"stgraber","protocol":"unix","address":"@"}},"location":"none","project":"default"}

Documentation : https://linuxcontainers.org/incus/docs/main/server_config/#server-options-logging

Meilleur contrôle du hotplug mémoire

Il y a quelques versions, nous avons ajouté le support du hotplug mémoire dans les machines virtuelles.
Cette fonctionnalité entraînait une certaine difficulté à déterminer la quantité maximale de mémoire qu’une VM peut recevoir en hotplug.

Cela est assez complexe, puisque nous nous confrontons à des limites physiques (les tailles des adresses mémoire physiques et virtuelles), ainsi qu’à un certain coût difficilement prédictible. Nous avons fait quelques ajustements dans la logique de hotplug au cours des dernières versions, et sommes arrivés à quelque chose qui semble fonctionner correctement dans la grande majorité des cas.

Cela dit, ils est apparu qu’avoir plus de contrôle sur la quantité de mémoire qui peut être ajoutée à chaud, et même permettre de désactiver la fonctionnalité dans certains cas, pouvait être une bonne idée.

Nous avons donc ajouté la clef de configuration limits.memory.hotplug, correspondant à la quantité maximale de mémoire (incluant la mémoire rajoutée à chaud) qu’une VM peut avoir. La valeur 0 désactive complètement la fonctionnalité.

stgraber@dakara:~$ incus config set d13 limits.memory.hotplug=0
stgraber@dakara:~$ incus start d13
stgraber@dakara:~$ incus config set d13 limits.memory=2GiB
Error: Failed updating memory limit: Memory hotplug feature is disabled

Documentation : https://linuxcontainers.org/incus/docs/main/reference/instance_options/#instance-resource-limits:limits.memory.hotplug

Persistance de l’éjection des CD-ROM dans les VM

Nous gardons désormais en mémoire le fait qu’un CD-ROM a été éjecté par l’OS invité.
Cela se fait par l’intermédiaire de la nouvelle propriété attached pour les périphériques de type disk, qui est automatiquement définie à false à l’éjection de ceux-ci.

stgraber@dakara:~$ incus config device add d13 virtio disk pool=default source=virtio-drivers
Device virtio added to d13

stgraber@dakara:~$ incus config show d13
architecture: x86_64
config:
  image.architecture: amd64
  image.description: Debian trixie amd64 (20250731_05:24)
  image.os: Debian
  image.release: trixie
  image.serial: "20250731_05:24"
  image.type: disk-kvm.img
  image.variant: default
  volatile.base_image: 340aab0e87de46062c1363cab4beb7d30d0474adceca5bf450b5162d8c2cc2c5
  volatile.cloud-init.instance-id: 5a79a550-143d-4db0-a223-74191e968ea3
  volatile.eth0.host_name: tap8ca1eb54
  volatile.eth0.hwaddr: 10:66:6a:8e:8e:93
  volatile.last_state.power: RUNNING
  volatile.uuid: af7f680b-7824-47ca-be9a-9189881ade90
  volatile.uuid.generation: af7f680b-7824-47ca-be9a-9189881ade90
  volatile.vm.definition: pc-q35-10.0
  volatile.vm.rtc_adjustment: "0"
  volatile.vm.rtc_offset: "-1"
  volatile.vsock_id: "1524898578"
devices:
  virtio:
    pool: default
    source: virtio-drivers
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

stgraber@dakara:~$ incus exec d13 -- eject /dev/cdrom

stgraber@dakara:~$ incus config show d13
architecture: x86_64
config:
  image.architecture: amd64
  image.description: Debian trixie amd64 (20250731_05:24)
  image.os: Debian
  image.release: trixie
  image.serial: "20250731_05:24"
  image.type: disk-kvm.img
  image.variant: default
  volatile.base_image: 340aab0e87de46062c1363cab4beb7d30d0474adceca5bf450b5162d8c2cc2c5
  volatile.cloud-init.instance-id: 5a79a550-143d-4db0-a223-74191e968ea3
  volatile.eth0.host_name: tap8ca1eb54
  volatile.eth0.hwaddr: 10:66:6a:8e:8e:93
  volatile.last_state.power: RUNNING
  volatile.uuid: af7f680b-7824-47ca-be9a-9189881ade90
  volatile.uuid.generation: af7f680b-7824-47ca-be9a-9189881ade90
  volatile.vm.definition: pc-q35-10.0
  volatile.vm.rtc_adjustment: "0"
  volatile.vm.rtc_offset: "-1"
  volatile.vsock_id: "1524898578"
devices:
  virtio:
    attached: "false"
    pool: default
    source: virtio-drivers
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

Documentation : https://linuxcontainers.org/incus/docs/main/reference/devices_disk/#devices-disk:attached

Configuration du WWN pour les disques des VM

Il s’agit d’une fonctionnalité de niche : il est désormais possible de définir le World Wide Name (WWN) des périphériques disque des VM. Cela ne fonctionne que lorsque le disque est attaché au bus virtio-scsi.

Cela peut être utile à certaines applications lorsqu’un LUN ou disque physique est monté dans une VM. La fonctionnalité peut également être utilisée pour tester le multipath dans une VM, en exhibant plusieurs disques avec le même WWN.

stgraber@dakara:~$ incus launch images:debian/13 d13 --vm
Launching d13
stgraber@dakara:~$ incus storage volume create default demo --type=block
Storage volume demo created
stgraber@dakara:~$ incus config device add d13 demo disk pool=default source=demo wwn=0x50014ee20ce3848a
Device demo added to d13
stgraber@dakara:~$ incus exec d13 bash
root@d13:~# ls -lh /dev/disk/by-id/wwn-0x50014ee20ce3848a·
lrwxrwxrwx 1 root root 9 Aug  1 03:49 /dev/disk/by-id/wwn-0x50014ee20ce3848a -> ../../sdb

Documentation : https://linuxcontainers.org/incus/docs/main/reference/devices_disk/#devices-disk:wwn

Adresses IPv6 dynamiques

Il s’agit d’une autre fonctionnalité utile dans un nombre très réduit de cas.

Dans les environnements en cluster, il est commun de devoir lancer un certain nombre de services en support du cluster, comme un control plane OVN, des composants Ceph, des outils de supervision…

Pour assurer leur bon fonctionnement, ils doivent pouvoir être contactés depuis tous les serveurs du cluster, tout en étant facilement déplaçables d’un serveur à l’autre, en cas de maintenance ou d’incident. Généralement, cela est assuré par un réseau physique, avec un VLAN routé accessible à tous les serveurs, mais ça n’est pas le cas partout.

Pour les environnements qui ne suivent pas cette architecture, nous proposons un bridge au sein du cluster qui, combiné à notre support VXLAN multicast, donne lieu à un réseau virtuel léger disponible pour tous les serveurs.

Vient ensuite la question de l’adressage. Nous ne pouvons pas faire tourner un serveur DHCPv4 sur ce réseau sans coordination entre les serveurs, mais nous pouvons faire du SLAAC dérivé à partir des adresses MAC.

Pour que cela fonctionne, les serveurs doivent utiliser une adresse MAC différente pour ce bridge, et, plus important encore, utiliser une adresse IPv6 différente (dans le même sous-réseau).

Nous avons ainsi étendu la syntaxe de ipv6.address pour permettre d’y spécifier un sous-réseau seul. Quand c’est le cas, le serveur va générer une adresse MAC unique pour le bridge, puis en dériver une adresse IPv6 (avec EUI64).

Voici le résultat :

root@server01:~# incus network create meshbr0 tunnel.mesh.interface=enp5s0 --target server01
Network meshbr0 pending on member server01
root@server01:~# incus network create meshbr0 tunnel.mesh.interface=enp5s0 --target server02
Network meshbr0 pending on member server02
root@server01:~# incus network create meshbr0 tunnel.mesh.interface=enp5s0 --target server03
Network meshbr0 pending on member server03
root@server01:~# incus network create meshbr0 tunnel.mesh.interface=enp5s0 --target server04
Network meshbr0 pending on member server04
root@server01:~# incus network create meshbr0 ipv4.address=none ipv6.address=fd42:1234:1234:1234::/64 ipv6.nat=false tunnel.mesh.protocol=vxlan
Network meshbr0 created

root@server01:~# incus launch images:debian/13 c1 --network meshbr0
Launching c1
root@server01:~# incus launch images:debian/13 c2 --network meshbr0
Launching c2
root@server01:~# incus launch images:debian/13 c3 --network meshbr0
Launching c3

root@server01:~# incus list
+------+---------+------+------------------------------------------------+-----------+-----------+----------+
| NAME |  STATE  | IPV4 |                      IPV6                      |   TYPE    | SNAPSHOTS | LOCATION |
+------+---------+------+------------------------------------------------+-----------+-----------+----------+
| c1   | RUNNING |      | fd42:1234:1234:1234:1266:6aff:fe60:6aa9 (eth0) | CONTAINER | 0         | server04 |
+------+---------+------+------------------------------------------------+-----------+-----------+----------+
| c2   | RUNNING |      | fd42:1234:1234:1234:1266:6aff:fef8:b9ef (eth0) | CONTAINER | 0         | server04 |
+------+---------+------+------------------------------------------------+-----------+-----------+----------+
| c3   | RUNNING |      | fd42:1234:1234:1234:1266:6aff:fe21:1203 (eth0) | CONTAINER | 0         | server01 |
+------+---------+------+------------------------------------------------+-----------+-----------+----------+
root@server01:~# incus exec c3 bash
root@c3:~# ping6 -n fd42:1234:1234:1234:1266:6aff:fe60:6aa9
PING fd42:1234:1234:1234:1266:6aff:fe60:6aa9 (fd42:1234:1234:1234:1266:6aff:fe60:6aa9) 56 data bytes
64 bytes from fd42:1234:1234:1234:1266:6aff:fe60:6aa9: icmp_seq=1 ttl=64 time=1.38 ms
^C
--- fd42:1234:1234:1234:1266:6aff:fe60:6aa9 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.375/1.375/1.375/0.000 ms

Configuration du mode keepalive dans la CLI

L’outil en ligne de commande d’Incus a un mode keepalive depuis un certain moment.
Celui-ci permet de garder une connexion active avec un serveur Incus distant, même après l’arrêt du processus de la CLI, rendant l’exécution des commandes suivantes plus rapide.

Il est désormais possible d’activer ce mode à l’ajout d’un serveur distant en passant l’argument --keepalive, avec le délai souhaité pour le processus en arrière-plan.

stgraber@dakara:~$ incus remote add cloud https://shf.cloud.zabbly.com --keepalive=30
URL: https://sso.zabbly.com/realms/master/device?user_code=WGSI-NFRG
Code: WGSI-NFRG

stgraber@dakara:~$ incus list cloud: --project demo
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
|   NAME    |  STATE  |          IPV4           |                       IPV6                        |      TYPE       | SNAPSHOTS | LOCATION |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| haproxy01 | RUNNING | 45.45.148.243 (eth0)    | 2602:fc62:b:8006:216:3eff:fe27:a8f4 (eth0)        | CONTAINER       | 0         | delmak   |
|           |         | 10.22.45.7 (eth0)       | 2602:fc62:b:8006:1::1 (eth0)                      |                 |           |          |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| ic-test   | RUNNING | 10.47.238.2 (eth0)      | fd42:4a11:5600:6807:216:3eff:feb5:2c79 (eth0)     | CONTAINER       | 0         | chulak   |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| server01  | RUNNING | 10.46.12.1 (br-managed) | fd42:ea64:f916:62b0::1 (br-managed)               | VIRTUAL-MACHINE | 0         | chulak   |
|           |         | 10.22.45.3 (enp5s0)     | fd42:1234:1234:1234:1266:6aff:fe6b:48d2 (meshbr0) |                 |           |          |
|           |         |                         | 2602:fc62:b:8006:216:3eff:fe1a:ed0d (enp5s0)      |                 |           |          |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| server02  | RUNNING | 10.46.12.1 (br-managed) | fd42:ea64:f916:62b0::1 (br-managed)               | VIRTUAL-MACHINE | 0         | chulak   |
|           |         | 10.22.45.4 (enp5s0)     | fd42:1234:1234:1234:1266:6aff:fea1:6d39 (meshbr0) |                 |           |          |
|           |         |                         | 2602:fc62:b:8006:216:3eff:fe56:5276 (enp5s0)      |                 |           |          |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| server03  | RUNNING | 10.46.12.1 (br-managed) | fd42:ea64:f916:62b0::1 (br-managed)               | VIRTUAL-MACHINE | 0         | chulak   |
|           |         | 10.22.45.5 (enp5s0)     | fd42:1234:1234:1234:1266:6aff:fe14:8b09 (meshbr0) |                 |           |          |
|           |         |                         | 2602:fc62:b:8006:216:3eff:fec6:eaa8 (enp5s0)      |                 |           |          |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+
| server04  | RUNNING | 10.46.12.1 (br-managed) | fd42:ea64:f916:62b0::1 (br-managed)               | VIRTUAL-MACHINE | 0         | chulak   |
|           |         | 10.22.45.6 (enp5s0)     | fd42:1234:1234:1234:1266:6aff:fef0:2a72 (meshbr0) |                 |           |          |
|           |         |                         | 2602:fc62:b:8006:216:3eff:fea3:6d (enp5s0)        |                 |           |          |
+-----------+---------+-------------------------+---------------------------------------------------+-----------------+-----------+----------+

stgraber@dakara:~$ ps aux | grep remote.*proxy
stgraber 1411159  0.1  0.0 6258948 26704 ?       Ssl  00:19   0:00 incus remote proxy cloud /home/stgraber/.config/incus/keepalive/cloud.socket --timeout=30

Support de Markdown comme format de sortie de la CLI

Il est à présent possible de formatter le retour des commandes d’Incus en Markdown, simplifiant leur inclusion dans des documents ou encore sur notre forum.

stgraber@dakara:~$ incus list --format=markdown
|    NAME     |  STATE  |          IPV4          |                     IPV6                     |      TYPE       | SNAPSHOTS |
|:-----------:|:-------:|:----------------------:|:--------------------------------------------:|:---------------:|:---------:|
|     d13     | RUNNING | 172.17.250.33 (enp5s0) | 2602:fc62:c:250:1266:6aff:fe8e:8e93 (enp5s0) | VIRTUAL-MACHINE |     0     |
|  incus-os   | RUNNING | 10.87.35.1 (incusbr0)  |      fd42:6060:5090:8d31::1 (incusbr0)       | VIRTUAL-MACHINE |     0     |
|             |         |                        | 2602:fc62:c:250:1266:6aff:fe91:c98 (enp5s0)  |                 |           |
| kernel-test | STOPPED |                        |                                              | VIRTUAL-MACHINE |     0     |
|   win2025   | STOPPED |                        |                                              | VIRTUAL-MACHINE |     0     |

Le rendu est le suivant :

NAME STATE IPV4 IPV6 TYPE SNAPSHOTS
d13 RUNNING 172.17.250.33 (enp5s0) 2602:fc62:c:250:1266:6aff:fe8e:8e93 (enp5s0) VIRTUAL-MACHINE 0
incus-os RUNNING 10.87.35.1 (incusbr0) fd42:6060:5090:8d31::1 (incusbr0) VIRTUAL-MACHINE 0
2602:fc62:c:250:1266:6aff:fe91:c98 (enp5s0)
kernel-test STOPPED VIRTUAL-MACHINE 0
win2025 STOPPED VIRTUAL-MACHINE 0

Davantage de filtrage côté serveur

Dans cette version, nous achevons le support dans la CLI du filtrage côté serveur des objets de l’API.

Les deux commandes qui supportent à présent le filtrage sont :

  • incus cluster list
  • incus storage list

Il ne s’agit pas d’une nouvelle fonctionnalité en soi, mais cela représente toutefois un changement conséquent.
Avec cette nouvelle version, nous avons remplacé nos appels manuels à iproute2 (ip, tc…) par des interactions directes avec le noyau Linux au travers de son API netlink.

Cela enlève un certain nombre de surcouches, et nous permet de ne plus avoir à nous soucier des versions des outils utilisés, mais ce genre de grands changements vient avec un risque de régression.

Pour cette raison, nous avons migré immédiatement après la version 6.14, nous laissant un mois complet pour identifier et corriger ces régressions. Nous en avons identifié un certain nombre, que nous avons résolues, mais il est possible que nos tests en aient manqué.

Si vous repérez une quelconque régression ou un changement de comportement sur les interfaces réseau ou le routage, merci de nous le faire savoir pour que nous analysions le problème.

Liste complète des changements

Voici une liste complète de tous les changements apportés par cette version :

Liste complète des commits
  • api: disk_attached
  • incusd/ip/utils: Switch to netlink
  • incusd/ip/addr: Switch to netlink
  • incusd/ip/class: Switch to netlink
  • incusd/ip/filter: Switch to netlink
  • incusd/ip/link: Switch to netlink
  • incusd/ip/neigh: Switch to netlink
  • incusd/ip/neigh_proxy: Switch to netlink
  • incusd/ip/qdisc: Switch to netlink
  • incusd/ip/route: Switch to netlink
  • incusd/ip/tuntap: Switch to netlink
  • incusd/ip/vdpa: Switch to vishvananda/netlink library instead of doing netlink ourselves
  • incusd/ip: Refactor family from string to Family type
  • incusd/ip: Merge GetLinkInfoByName and LinkFromName into LinkByName
  • Use net.IP and net.IPNet instead of strings
  • incusd/instance/qemu: On standalone systems, cap hotplug memory to system
  • generate-database: Add create_timestamp and update_timestamp
  • incusd/ip: Ignore ESRCH on route deletion
  • incusd/ip: All multicast needs to be configured as a flag
  • incusd/patches: Fix empty JSON columns
  • incusd/instance/qemu: Fix memory calculation logic
  • shared/idmap: Skip ACLs that are out of range
  • incusd/device/nic_ovn: Fix bad check
  • incusd/ip: Fix TC regressions
  • incusd/device/nic_ovn: Allow specifying static IPv4/IPv6 when DHCP is disabled
  • incusd/storage/lvm: Don't rely on udev paths
  • cmd/incus_agent: Replace gorilla/mux with http.ServeMux
  • client: Fixed non-constant format string in call to fmt.Errorf
  • incusd/instance/qmp/log: Don't crash on log Write calls after Close
  • incusd: Cluster join, ensure server address
  • incusd: Cluster join, check cluster.https_address
  • incusd: Centralize check for node specific network config
  • incusd: Make network config keys node specific
  • incusd/ip: All multicast needs to be configured after link creation
  • doc: Pin a working version of the sphinx extensions
  • incusd/instance/lxc: Fix usage reporting on relative disks
  • internal/instance: Introduce SplitVolumeSource
  • incusd: Use SplitVolumeSource
  • cli/list: Add markdown format support
  • i18n: Updated format argument descriptions
  • cmd/list: Crude tablewriter error handling
  • incus/project/get-current: Rely on server reported project
  • incus/remote: Support keepalive flag
  • i18n: Update translation templates
  • i18n: Manual translation update
  • Translated using Weblate (Portuguese)
  • incusd/cluster/config: Update certificate also on change of acme.http.port
  • incusd/instance_logs: Perform stricter path validation
  • [lxd-import] lxd/daemon: Validate browser fetch metadata if supplied to reject non-same-origin requests
  • [lxd-import] test/suites/serverconfig: Check fetch metadata header is validated
  • incusd/dev_incus: Add extra validation for monitor
  • incusd/device/disk: Add attached configuration key
  • incusd/instance/qemu: Refactor qmp.Connect calls
  • incusd/instance/qemu: Handle attached state statically
  • incusd/images: Restrict public image listing to default project
  • incusd/images: Use identical errors for all not-found cases on public endpoints
  • internal/util: Add recursion limit to RenderTemplate
  • internal/util: Tweak common pongo2 parser to block dangerous functions
  • incus/list: Fix validation of 'L' shorthand column
  • tests: only run tests if ovn is available
  • incus/server: fix scan order
  • incusd/instance/qemu: Rework ejection logic and pass ejection handler
  • incusd/device/disk: Add live attach/detach logic
  • doc: Update metadata
  • incusd/instance/qemu: Add indirection level to detachDisk
  • incusd/instance/agent-loader: Use ISO label rather than disk id
  • incusd/storage: Fix ISO renaming
  • incusd/project: Skip processing 'limits.processes' for VM instance types
  • incusd/instance: Add 'limits.memory.hotplug' config
  • incusd/instance/drivers: Support for 'limits.memory.hotplug' config
  • api: limits_memory_hotplug
  • doc: Update configs
  • incusd/device/config: Fix issue with live updating of user keys
  • incusd/device/disk: Pass nil if read/write limits are not set
  • incusd/instance/drivers: Prevent calling 'deviceAttachBlockDevice' on the root disk
  • incusd/instance: Allow setting lxc.net config keys through raw.lxc
  • incusd/apparmor/qemu: Allow reading gid_map/uid_map
  • incusd/apparmor/qemuimg: Fix typo in rules
  • doc/instances_create: Extend the Incus VM agent instructions
  • client: Add GetClusterMembersWithFilter
  • incusd/cluster: Add server-side filtering
  • incus/cluster: Use server-side filtering
  • doc/rest-api: Refresh swagger YAML
  • client: Add GetStoragePoolsWithFilter
  • incus/storage: Use server-side filtering
  • i18n: Update translation templates
  • incusd/ip: Fix filtering of routes by interface
  • incusd/operations: Add IsSameRequestor
  • incusd/instance_console: Ensure requestor match
  • incusd/instance_exec: Ensure requestor match
  • incusd/auth/openfga: Restrict operations and events access
  • incusd/auth/openfga: Rebuild model
  • incusd/db/network_peers: Fix querying of integrations
  • api: disk_wwn
  • shared/validate: Add IsWWN
  • incusd/device/disk: Add wwn property
  • incusd/instance/qemu: Add support for setting WWN
  • doc: Update config
  • Translated using Weblate (German)
  • incusd/network/bridge: Allow automatic host-specific IPv6 addresses
  • incusd/auth/oidc: Expose scopes list
  • client: Use server-advertised OIDC scopes
  • incusd/instance/qmp: Properly handle lost connections
  • incusd/instance/qmp: Fix monitor failure test
  • incusd/instance/qemu: Fix lifecycle events
  • incus/remote: Add credentials helper support
  • shared/cliconfig: Add support for credentials helper
  • client/oci: Refactor skopeo logic and add credentials support
  • i18n: Update translation templates
  • incusd/device: Add IsPhysicalNICWithBridge and make hwaddr optional
  • incusd/instance/drivers: Fill the MAC address for physical NIC with bridge parent
  • api: server_logging_webhook
  • incusd/logging/loki: Set default retry
  • incusd/logging/webhook: Initial webhook logger
  • doc: Update config
  • doc/wordlist: Add webhook
  • incusd/device/disk: prevent file mounts on VMs
  • incusd/devices/disk: Improve documentation for the path key
  • doc: Update metadata
  • Translated using Weblate (Portuguese)
  • doc: Sort word list
  • tests: Bump cleanup timeouts
  • tests/clustering: Use elif in driver conditions
  • incusd/instance/qemu: Cleanup volume eject/detach logic
  • incusd/db/images: Associate image with default profile from default project
  • incusd/db/images: Set cached option for projects with 'features.images' disabled
  • incus-agent: Handle path mount removal
  • incus-agent/events: Remove fmt import
  • test: Fix mountpoint detection logic
  • incusd/instance/lxc: Only remove mountpoints in /dev
  • shared/cliconfig: Introduce GetClientCertificate
  • incus/remote: Use GetClientCertificate
  • tests: Standardize indentation
  • client: Add SkipGetEvents
  • incusd: Consistently set SkipGetEvents and SkipGetServer
  • client: Add configurable temp directory
  • incusd/daemon_images: Set temporary image path
  • gomod: Update dependencies
  • incusd/auth/oidc: Update for current zitadel

Documentation

La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/

Paquets

Incus ne fournit pas de paquet d’installation mais bien un tarball à chaque version. Vous trouverez ci-dessous différentes solutions pour mettre Incus en service.

Installation du serveur Incus sous Linux

Incus est disponible sur la plupart des distributions Linux courantes. Vous trouverez des instructions d’installation détaillées dans notre documentation.

https://linuxcontainers.org/incus/docs/main/installing/

Paquet Homebrew du client Incus

Le client Incus est disponible sur Homebrew pour Linux et macOS.

https://formulae.brew.sh/formula/incus

Paquet Chocolatey du client Incus

Le client Incus est disponible sur Chocolatey pour les utilisateurs de Windows.

https://community.chocolatey.org/packages/incus/6.15.0

Paquet Winget du client Incus

Le client Incus est aussi disponible sur Winget pour les utilisateurs de Windows.

https://winstall.app/apps/LinuxContainers.Incus

Support

Les versions de fonctionnalité d’Incus ne sont supportées que jusqu’à la sortie de la suivante. Les personnes souhaitant un support plus long et des changements moins fréquents devraient plutôt envisager d’utiliser Incus 6.0 LTS.

Le support communautaire est disponible sur : https://discuss.linuxcontainers.org
Un support commercial est disponible sur : https://zabbly.com/incus
Les bugs peuvent être signalés sur : https://github.com/lxc/incus/issues