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

Incus 6.22 est maintenant disponible

27 févr. 2026

Introduction

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

Cette nouvelle version est assez dense, avec de nombreux changements aux quatre coins du projet, ainsi qu’un grand nombre de corrections de bugs. Tout le monde devrait y trouver son compte !

image|690x245

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

Nouvelles fonctionnalités

Support de VSOCK dans l’agent Windows

Lorsque nous avons ajouté le support de l’agent Incus pour les VM Windows, le driver Windows pour VirtIO VSOCK n’était toujours pas signé par Microsoft et le support dans Go pour VSOCK sur les systèmes Windows était absent.

Ces deux limitations étant à présent levées, nous utilisons désormais VSOCK au lieu de TCP pour le transport des données de l’agent Windows. Le comportement est ainsi similaire à celui des systèmes Linux, permettant d’interagir avec l’agent même lorsqu’Incus ne connaît pas l’adresse IP de la VM ou n’a pas la permission de s’y connecter.

stgraber@castiana:~ (incus:dev-cluster01/default)$ incus list Windows
+-------------+---------+---------------------------+-------------------------------------------------------------------------+-----------------+-----------+----------+
|    NAME     |  STATE  |           IPV4            |                                  IPV6                                   |      TYPE       | SNAPSHOTS | LOCATION |
+-------------+---------+---------------------------+-------------------------------------------------------------------------+-----------------+-----------+----------+
| Windows2016 | RUNNING | 172.17.45.252 (Ethernet0) | 2602:fc62:c:1045:992a:86ac:bed4:7643 (Ethernet0)                        | VIRTUAL-MACHINE | 0         | incus03  |
|             |         |                           | 2001:0:14c9:dc0e:c7f:1835:53ee:d203 (Teredo Tunneling Pseudo-Interface) |                 |           |          |
+-------------+---------+---------------------------+-------------------------------------------------------------------------+-----------------+-----------+----------+
| Windows2025 | RUNNING | 172.17.45.215 (Ethernet0) | 2602:fc62:c:1045:db35:1adc:89f5:5e9e (Ethernet0)                        | VIRTUAL-MACHINE | 0         | incus03  |
+-------------+---------+---------------------------+-------------------------------------------------------------------------+-----------------+-----------+----------+

stgraber@castiana:~ (incus:dev-cluster01/default)$ incus info Windows2025
Name: Windows2025
Description: Auto-imported from VMware
Status: RUNNING
Type: virtual-machine
Architecture: x86_64
Location: incus03
PID: 2658
Created: 2026/02/25 01:36 EST
Last Used: 2026/02/26 16:36 EST
Started: 2026/02/26 16:36 EST

Operating System:
  OS: Windows Server 2025 Datacenter Evaluation
  OS Version: 26100
  Kernel Version: 6.3
  Hostname: WIN-QVHTSU4SGJK
  FQDN: WIN-QVHTSU4SGJK

Resources:
  Processes: 87
  CPU usage:
    CPU usage (in seconds): 57366
  Memory usage:
    Memory (current): 1.58GiB
  Network usage:
    Ethernet0:
      Type: broadcast
      State: UP
      Host interface: Ethernet0
      MAC address: 00:50:56:a9:12:b0
      MTU: 1500
      Bytes received: 14.34MB
      Bytes sent: 3.48MB
      Packets received: 13036
      Packets sent: 8992
      IP addresses:
        inet6: 2602:fc62:c:1045:db35:1adc:89f5:5e9e/64 (global)
        inet6: fe80::78a1:5e60:236:58a2/64 (link)
        inet:  172.17.45.215/24 (global)
    Loopback Pseudo-Interface 1:
      Type: loopback
      State: UP
      Host interface: Loopback Pseudo-Interface 1
      MTU: -1
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0
      IP addresses:
        inet6: ::1/128 (local)
        inet:  127.0.0.1/8 (local)

NOTE : Pour que le nouvel agent fonctionne correctement, vous devez vous assurer que les drivers VirtIO VSOCK sont installés sur l’instance Windows, de même que le service correspondant. Dans la plupart des cas, cela demande de trouver le bon driver VSOCK dans l’ISO contenant les drivers VirtIO, faire un clic droit sur le fichier .inf, et l’installer (pour le moment, l’installateur VirtIO ne semble pas le faire).

Récupération directe de sauvegardes

Incus embarque une API de sauvegarde, permettant la création de sauvegardes d’instances et de volumes de stockage personnalisés. Cette API a pour but d’être intégrée dans des systèmes automatisés de sauvegarde.

Côté utilisateur, ce mécanisme est utilisé dans incus export et incus storage volume export. Dans les deux cas, ces commandes créaient une sauvegarde côté serveur, la téléchargeaient, et la supprimaient ensuite.

La situation n’était pas idéale, dans la mesure où les données étaient stockées sur disque dans le seul but d’être téléchargées et supprimées tout de suite après. Incus 6.22 permet désormais de streamer de bout en bout les sauvegardes du client au serveur.

stgraber@dakara:~$ incus launch images:alpine/edge a1
Launching a1
stgraber@dakara:~$ incus export a1
Backup exported successfully!
stgraber@dakara:~$ ls -lh a1.tar.gz 
-rw-rw-r-- 1 stgraber stgraber 4.0M Feb 27 10:43 a1.tar.gz

Restauration des données seules depuis des instantanés

Les instantanés dans Incus capturent bien plus d’informations que le seul état du disque (configuration de l’instance, et, lorsque demandé, état de fonctionnement de celle-ci). Cependant, un cas d’usage fréquent est de ne souhaiter restaurer que les données du disque et rien de plus, ce qui est désormais supporté.

stgraber@dakara:~$ incus snapshot restore a1 snap0 --diskonly

Volume de stockage dédié aux journaux serveur

Les journaux d’Incus peuvent grossir avec le temps, en particulier sur des systèmes comportant des centaines ou des milliers de VM. Incus dispose d’un mécanisme de rotation des journaux pour rester maître de la situation, mais ceux-ci peuvent toutefois prendre plusieurs Go de stockage.

Une nouvelle clef de configuration, storage.logs_volume, permet de stocker les journaux d’Incus sur un volume de stockage personnalisé dédié, comme c’était le cas pour les images et les sauvegardes.

stgraber@dakara:~$ incus storage volume create default logs
Storage volume logs created
stgraber@dakara:~$ incus config set storage.logs_volume default/logs
Error: Failed validation of "storage.logs_volume": `storage.logs_volume` cannot be changed if there are running instances
stgraber@dakara:~$ incus stop --all
stgraber@dakara:~$ incus config set storage.logs_volume default/logs
stgraber@dakara:~$ incus start --all

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

Améliorations dans le stockage QCOW2

Pour rappel, Incus utilise QCOW2 pour la prise d’instantanés des volumes de stockage en bloc sur lvmcluster. Incus peut à présent créer et gérer ces instantanés pour des instances, avec un support complet des instances en fonctionnement et de la migration à chaud.

Les volumes de stockage personnalisés en bloc utilisent désormais également QCOW2 par défaut, avec un support pour la prise d’instantanés. D’autres fonctionnalités cependant (prise d’instantanés des volumes attachés à des VM en fonctionnement) arriveront avec Incus 6.23.

Redimensionnement de pools de stockage lvmcluster

Les clusters Incus partageant du stockage en bloc avec le driver lvmcluster peuvent désormais redimensionner les périphériques en bloc sous-jacents, permettant à Incus d’accroître la capacité du stockage LVM qui s’y trouve.

Il est possible de définir la propriété size sur un pool lvmcluster à la valeur de sa nouvelle taille souhaitée, ou à max, pour accroître sa taille à la taille maximale disponible sur le stockage sous-jacent.

Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_lvm/

Suppression automatique d’instantanés à la restauration avec lvmcluster

Toujours avec lvmcluster, le driver a une restriction commune à de nombreux autres backends de stockage, à savoir le fait qu’il est uniquement possible de restaurer le dernier instantané (demandant ainsi la suppression de tous les instantanés plus récents que celui que nous souhaitons restaurer).

Nous avons donc rajouté une clef de configuration lvmcluster.remove_snapshots pour supprimer automatiquement les instantanés intermédiaires durant la restauration.

Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_lvm/

Passthrough de contrôleurs USB entiers

Le périphérique unix-hotplug a été étendu avec une nouvelle clef de configuration pci, permettant de sélectionner un contrôleur USB particulier, rajoutant dynamiquement à une instance tous les périphériques s’y connectant.

stgraber@dakara:~$ incus launch images:debian/13 c1
Launching c1
stgraber@dakara:~$ incus config device add c1 usb-controller unix-hotplug pci=0000:24:00.0
Device usb-controller added to c1
stgraber@dakara:~$ incus exec c1 bash
root@c1:~# find /dev/bus
/dev/bus
/dev/bus/usb
/dev/bus/usb/005
/dev/bus/usb/005/023

Documentation : https://linuxcontainers.org/incus/docs/main/reference/devices_unix_hotplug/

Accès aux certificats TLS depuis le scriptlet d’autorisation

Dans les environnements où une intégration à OpenID Connect et OpenFGA n’est pas pratique, Incus supporte un mécanisme d’autorisation plus simple au travers d’un scriptlet.

Il s’agit d’un script dans un langage similaire à Python, qui est exécuté dans Incus à chaque fois qu’un accès doit être validé pour une opération donnée. L’implémentation initiale exposait au scriptlet l’empreinte du certificat TLS ainsi que l’opération et l’objet concerné.

Désormais, toutes les informations dont Incus dispose au sujet du certificat sont également exposées au scriptlet.

Cela permet d’implémenter des politiques d’accès plus complexes, reposant sur des propriétés du certificat, comme son nom ou les restrictions qui lui sont appliquées dans Incus.

Documentation : https://linuxcontainers.org/incus/docs/main/authorization/#scriptlet-authorization

Redémarrage rapide des VM

Incus prend en charge un grand nombre de fonctionnalités et d’intégrations avec les VM, lesquelles requièrent parfois une configuration assez poussée de l’hôte en-dehors de QEMU.

Pour cette raison, Incus a toujours redémarré complètement QEMU à chaque redémarrage des VM, afin de pouvoir démarrer dans un état sain.

Bien que cela garantisse la sûreté des opérations, le redémarrage de QEMU entraîne une déconnexion de la console et un délai. Pour améliorer cette situation, Incus surveille désormais si un redémarrage complet est souhaitable (par exemple, à la suite d’une opération de hotplug), et le cas échéant uniquement, redémarre QEMU. Dans les autres cas, le redémarrage des VM s’effectue de manière beaucoup plus rapide et sans déconnexion de la console.

Restrictions sur les URL des serveurs d’images dans les projets

Les personnes administrant des clusters Incus avec des projets restreints peuvent vouloir limiter les domaines depuis lesquels leurs utilisateurs peuvent télécharger des images.

Nous avons ajouté une nouvelle clef de configuration pour les projets, restricted.images.servers, à cet effet. Elle prend une liste de domaines depuis lesquels les téléchargements d’images sont autorisés. Les requêtes vers les autres serveurs seront rejetées.

Enfin, les projets restreints ne peuvent dorénavant plus faire de migration en mode pull, uniquement en mode push.

stgraber@dakara:~$ incus project set foo restricted=true restricted.images.servers=example.net
stgraber@dakara:~$ incus launch images:alpine/edge a1
Launching a1
Error: Failed instance creation: Image server "images.linuxcontainers.org" isn't allowed in this project
stgraber@dakara:~$ incus project set foo restricted=true restricted.images.servers=images.linuxcontainers.org
stgraber@dakara:~$ incus launch images:alpine/edge a1
Launching a1

Documentation : https://linuxcontainers.org/incus/docs/main/reference/projects/

Import d’URL dans incus-migrate

incus-migrate est notre outil de migration prenant en charge de nombreux scénarios, allant de la migration de machines physiques vers Incus à l’import d’images de VM et de conteneurs externes.

L’outil a été mis à jour pour permettre l’import direct d’images via des URL, rendant trivial l’import d’images QCOW2 ou VMDK depuis le web.

stgraber@dakara:~$ incus-migrate 
The local Incus server is the target [default=yes]:

What would you like to create?
1) Container
2) Virtual Machine
3) Virtual Machine (from .ova)
4) Custom Volume

Please enter the number of your choice: 2
Project to create the instance in [default=default]: 
Name of the new instance: talos
Please provide the path or URL to a disk, partition, or qcow2/raw/vmdk image file: https://factory.talos.dev/image/9ed5fecdacb36b5c5427b87d409f1065cfb2df69b0f71c58b868d9d466d8dab3/v1.12.4/metal-amd64.qcow2
Downloading "https://factory.talos.dev/image/9ed5fecdacb36b5c5427b87d409f1065cfb2df69b0f71c58b868d9d466d8dab3/v1.12.4/metal-amd64.qcow2"
Does the VM support UEFI booting? [default=yes]: 
Does the VM support UEFI Secure Boot? [default=yes]: no

Instance to be created:
  Name: talos
  Project: default
  Type: virtual-machine
  Source: /tmp/3948685006
  Source format: qcow2
  Config:
    security.secureboot: "false"

Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool

Please pick one of the options above [default=1]: 4
Please provide the storage pool to use: default
Do you want to change the storage size? [default=no]: yes
Please specify the storage size: 50GiB

Instance to be created:
  Name: talos
  Project: default
  Type: virtual-machine
  Source: /tmp/3948685006
  Source format: qcow2
  Storage pool: default
  Storage pool size: 50GiB
  Config:
    security.secureboot: "false"

Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
2) Override profile list
3) Set additional configuration options
4) Change instance storage pool or volume size
5) Change instance network
6) Add additional disk
7) Change additional disk storage pool

Please pick one of the options above [default=1]: 1
Converting image "/tmp/3948685006" to raw format before importing
Instance talos successfully created
stgraber@dakara:~$ incus start talos

Documentation : https://linuxcontainers.org/incus/docs/main/howto/import_machines_to_instances/

Certificats multidomaines via ACME

Incus supporte l’utilisation d’ACME/Let’s Encrypt pour obtenir des certificats HTTPS.
Jusqu’à présent, nous étions limités à des certificats portant sur des hôtes uniques, mais supportons désormais l’utilisation de plusieurs domaines séparés par des virgules dans la clef de configuration acme.domain.

stgraber@dakara:~ (incus:dev-cluster01/default)$ incus config set acme.domain=cluster01.dev.stgraber.org,foo.dev.stgraber.org

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

Contrôle de la propriété trusted pour les cartes réseau SR-IOV

L’usage des cartes réseau SR-IOV dans Incus se faisait jusqu’à présent dans le mode untrusted, empêchant de changer leur adresse MAC ou leur VLAN.

Pour les environnements de confiance, nous avons rajouté la propriété security.trusted, permettant de désactiver ces restrictions.

stgraber@dakara:~$ incus create images:alpine/edge a1
Creating a1
stgraber@dakara:~$ incus config device add a1 eth0 nic nictype=sriov parent=enp1s0 name=eth0 security.trusted=true
Device eth0 added to a1
stgraber@dakara:~$ incus start a1

Documentation : https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#nictype-sriov

Nouveaux états pour les membres évacués des clusters

Pour mieux suivre l’état des clusters, nous avons ajouté deux états supplémentaires à leurs membres, EVACUATING et RESTORING, selon respectivement si ceux-ci sont en cours d’évacuation ou de restauration.

stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster list
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
|  NAME   |                         URL                         |      ROLES      | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION | STATUS |      MESSAGE      |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus01 | https://[2602:fc62:b:8007:1266:6aff:fe46:8bd]:8443  | database-leader | x86_64       | default        |             | ONLINE | Fully operational |
|         |                                                     | database        |              |                |             |        |                   |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus02 | https://[2602:fc62:b:8007:1266:6aff:fe02:fa52]:8443 | database        | x86_64       | default        |             | ONLINE | Fully operational |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus03 | https://[2602:fc62:b:8007:1266:6aff:fed2:70e9]:8443 | database        | x86_64       | default        |             | ONLINE | Fully operational |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster list
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+------------+--------------------------------+
|  NAME   |                         URL                         |      ROLES      | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION |   STATUS   |            MESSAGE             |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+------------+--------------------------------+
| incus01 | https://[2602:fc62:b:8007:1266:6aff:fe46:8bd]:8443  | database-leader | x86_64       | default        |             | ONLINE     | Fully operational              |
|         |                                                     | database        |              |                |             |            |                                |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+------------+--------------------------------+
| incus02 | https://[2602:fc62:b:8007:1266:6aff:fe02:fa52]:8443 | database        | x86_64       | default        |             | ONLINE     | Fully operational              |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+------------+--------------------------------+
| incus03 | https://[2602:fc62:b:8007:1266:6aff:fed2:70e9]:8443 | database        | x86_64       | default        |             | EVACUATING | Unavailable due to maintenance |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+------------+--------------------------------+
stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster list
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
|  NAME   |                         URL                         |      ROLES      | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION |  STATUS   |            MESSAGE             |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus01 | https://[2602:fc62:b:8007:1266:6aff:fe46:8bd]:8443  | database-leader | x86_64       | default        |             | ONLINE    | Fully operational              |
|         |                                                     | database        |              |                |             |           |                                |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus02 | https://[2602:fc62:b:8007:1266:6aff:fe02:fa52]:8443 | database        | x86_64       | default        |             | ONLINE    | Fully operational              |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus03 | https://[2602:fc62:b:8007:1266:6aff:fed2:70e9]:8443 | database        | x86_64       | default        |             | EVACUATED | Unavailable due to maintenance |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster list
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
|  NAME   |                         URL                         |      ROLES      | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION |  STATUS   |            MESSAGE             |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus01 | https://[2602:fc62:b:8007:1266:6aff:fe46:8bd]:8443  | database-leader | x86_64       | default        |             | ONLINE    | Fully operational              |
|         |                                                     | database        |              |                |             |           |                                |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus02 | https://[2602:fc62:b:8007:1266:6aff:fe02:fa52]:8443 | database        | x86_64       | default        |             | ONLINE    | Fully operational              |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
| incus03 | https://[2602:fc62:b:8007:1266:6aff:fed2:70e9]:8443 | database        | x86_64       | default        |             | RESTORING | Unavailable due to maintenance |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+-----------+--------------------------------+
stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster list
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
|  NAME   |                         URL                         |      ROLES      | ARCHITECTURE | FAILURE DOMAIN | DESCRIPTION | STATUS |      MESSAGE      |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus01 | https://[2602:fc62:b:8007:1266:6aff:fe46:8bd]:8443  | database-leader | x86_64       | default        |             | ONLINE | Fully operational |
|         |                                                     | database        |              |                |             |        |                   |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus02 | https://[2602:fc62:b:8007:1266:6aff:fe02:fa52]:8443 | database        | x86_64       | default        |             | ONLINE | Fully operational |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+
| incus03 | https://[2602:fc62:b:8007:1266:6aff:fed2:70e9]:8443 | database        | x86_64       | default        |             | ONLINE | Fully operational |
+---------+-----------------------------------------------------+-----------------+--------------+----------------+-------------+--------+-------------------+

Restauration de cluster sans migration d’instance

Toujours sur le thème de l’évacuation de cluster, il est à présent possible de restaurer un serveur sans toutefois y migrer ou redémarrer d’instance.

stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster evacuate incus02
Are you sure you want to evacuate cluster member "incus02"? (yes/no) [default=no]: yes
stgraber@dakara:~ (incus:dev-cluster01/default)$ incus cluster restore incus02 --action=skip
Are you sure you want to restore cluster member "incus02"? (yes/no) [default=no]: yes

Métriques de démarrage des instances

Deux nouvelles métriques ont été ajoutées pour mesurer le temps d’utilisation des instances :

  • incus_boot_time_seconds, timestamp UNIX du démarrage de l’instance
  • incus_time_seconds, timestamp UNIX courant

Ce choix est inspiré des métriques provenant de node_exporter.

stgraber@dakara:~$ incus list a1
+------+---------+---------------------+---------------------------------------------+-----------+-----------+
| NAME |  STATE  |        IPV4         |                    IPV6                     |   TYPE    | SNAPSHOTS |
+------+---------+---------------------+---------------------------------------------+-----------+-----------+
| a1   | RUNNING | 172.17.0.177 (eth0) | 2602:fc62:c:1000:1266:6aff:fe2d:30e5 (eth0) | CONTAINER | 0         |
+------+---------+---------------------+---------------------------------------------+-----------+-----------+
stgraber@dakara:~$ incus query /1.0/metrics | grep a1 | grep time
incus_boot_time_seconds{name="a1",project="default",type="container"} 1.772214792e+09
incus_time_seconds{name="a1",project="default",type="container"} 1.772216491e+09

Documentation : https://linuxcontainers.org/incus/docs/main/reference/provided_metrics/

Liste complète des changements

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

Liste complète des commits
  • Translated using Weblate (French)
  • incusd/device/nic: Fix connected logic for non-NIC QEMU devices
  • doc: Update config
  • incusd/instance/qmp: Prevent setting link up at initialization
  • incusd/instance/qemu: Properly initialize connected status
  • incusd/storage/zfs: Set IncusOS storage usage property
  • Fix typo: Supported cConditions to Supported Conditions
  • Translated using Weblate (Japanese)
  • shared/util: Fix SingleQuote to actually quote
  • Translated using Weblate (French)
  • cmd/incus: Fix get-client-certificate ignoring per-remote certs
  • Translated using Weblate (French)
  • Translated using Weblate (French)
  • Translated using Weblate (French)
  • incusd/storage/lvm: Move IncusOS check to pool creation
  • Translated using Weblate (French)
  • Translated using Weblate (Portuguese)
  • Translated using Weblate (French)
  • incus-migrate: Allow running as non-root
  • incus-migrate: Add URL imports
  • doc: Ignore broken links on Alpine gitlab
  • doc: Ignore broken links on docbook website
  • github: Deal with new Github images
  • tests: Fix SR-IOV attached key test
  • incusd/device/nic_physical: Allow migration of managed devices
  • shared/cliconfig: Don't pass scheme to OCI creds helper
  • incusd/cluster: Allow restoring a cluster without its instances
  • incus/cluster: Add --action for restore
  • i18n: Update translation templates
  • internal/instance; Correct doc for boot.autostart.priority
  • doc: Update config
  • incusd/cluster: Restrict join token to database servers
  • incusd/storage/lvm: Prevent use of lvmcluster with loop files
  • incusd/operations: Prevent concurrent access to metadata
  • incusd/storage: Add support for renaming qcow2 volumes
  • incusd/storage/drivers: Load NBD module for lvmcluster
  • incusd/instance/drivers: Pass information about whether migration is live
  • incusd/storage: Add support for qcow2 volume migration
  • incusd/storage: Add snapshot mount paths parameter to the task function
  • incusd/device/nic_riov: Retry MAC setting logic
  • Translated using Weblate (Portuguese)
  • doc/howto/instances: Mention keeping agent drive attached
  • incusd/instances/agent-loader: Silence semanage
  • incusd/cluster: Also transfer public key on join
  • doc/cloud-init: Fix bad link
  • incusd: Search OVS switch external_interfaces
  • api: nic_sriov_security_trusted
  • incusd/ip/link: Add support for virtual function trusted property
  • incusd/device/nic: Add security.trusted configuration key
  • internal/instance: Add volatile.<name>.last_state.vf.trusted
  • tests: Add tests for SR-IOV security.trusted property
  • doc: Update config for SR-IOV security.trusted
  • doc/backup: Fix MarkdownLint warnings
  • incusd/storage_volumes_snapshot: Treat pongo templates as unique
  • incusd/instance/drivers: Propagate error when adding qcow2 backing block device
  • incusd/instancewriter: Make signature more generic
  • client/instances: Add direct backup capability
  • client/storage_volumes: Add direct backup capability
  • client/storage_buckets: Add direct backup capability
  • incusd/response: Add pipe response
  • incus/export: Add direct backup capability
  • incus/storage_volume: Add direct backup capability
  • incus/storage_bucket: Add direct backup capability
  • incusd/backup: Refactor S3 upload
  • incusd/instance_backup: Add direct backup capability
  • incusd/storage_volumes_backup: Add direct backup capability
  • incusd/storage_buckets_backup: Add direct backup capability
  • doc/rest-api: Refresh swagger YAML
  • api: direct_backup
  • incusd/instance/qemu: gofumpt
  • incusd/device/disk: Add IsSpecialDisk
  • incusd/instance/lxc: Skip metrics on special disks
  • github: Resolve /dev/scratch symlink when consumed
  • api: instance_snapshot_disk_only_restore
  • shared/api: Add DiskOnly option in InstancePut
  • incusd/instance_put: Add DiskOnly option and check for mismatching options
  • incusd/instance/qemu: Implement disk-only restore logic in qemu driver
  • incusd/instance/lxc: Implement disk-only restore logic in lxc driver
  • incusd/instance: Adjust interface for diskOnly parameter
  • doc/rest-api: Refresh swagger YAML
  • client: Check for diskOnly api extension when invoked
  • incus/snapshot: Add disk only restore
  • i18n: Update translation templates
  • incusd/storage: Prevent moving shared storage volumes
  • incus/image: Add generate-metadata
  • i18n: Update translation templates
  • doc: Update incus-migrate documentation
  • incusd: Validate that instance can be migrated
  • incusd/instance/drivers: Add writable argument to NBDBlockExportAdd
  • incusd/instance/drivers/qmp: Add NBDUnixServerStart
  • incusd/instance: Add ExportQcow2Disk
  • incusd/storage: Support live migration of qcow2 volumes
  • doc: Add information about lvmcluster limitations
  • incusd/instance: Add QCOW2 live migration support for instances with snapshots
  • incusd/storage: Add QCOW2 live migration support for instances with snapshots
  • incusd: Remove ensureMigratable as checks are no longer valid
  • doc: Remove outdated doc about live QCOW2 migration limitation
  • incusd/instance/drivers: Propagate live migration information
  • incusd/storage: Skip final filesystem sync for VMs during migration
  • doc/requirements: Bump minimal requirements
  • Validate requested storage pool during instance migration
  • incusd/instance/qemu: Rename onDisconnectEvent to initialized
  • incusd/instance/qemu: Add EventVMReset
  • incusd/instance/qemu: Use standard QEMU actions and catch in handler
  • internal/instance: Add volatile.vm.needs_reset
  • incusd/instance/qemu: Implement fast reboot
  • doc: Update config
  • incusd/instance/qmp: Fix cross-server live-migration
  • incusd/instance/qemu: Report QEMU error on VM restore
  • incus-migrate: Fix URL detection
  • incusd/instance/drivers: Remove instance volume on revert after failed live migration
  • incusd/instance/drivers: Propagate target migration failure to source using context cancellation
  • incusd/storage: Prevent concurrent QCOW2 snapshot deletions
  • incusd/instance/qemu: Require full restart after eject
  • incusd/storage: Prevent concurrent snapshot deletions
  • incus: Refactor CLI usage strings
  • i18n: Update translation templates
  • incusd/instance/qemu: Force a real reboot after applying templates
  • incusd/storage/ceph: Use the standard error for unsupported disk usage
  • api: unix_hotplug_pci
  • incusd/devices/unix_hotplug: Allow selecting by PCI bus
  • doc: Update config
  • incusd/instance/qmp: Fix gofumpt
  • incusd/storage/qcow2: Wait for qemu-nbd to be ready
  • incusd/instance/drivers: Fix backing block device ordering when fetching from QEMU
  • internal/server/instance/drivers: Get vsock client for Windows
  • cmd/incus-agent: Add serial communication for Windows
  • incusd/storage/drivers: Delete mount paths when deleting snapshots
  • cmd/incus-agent: Only use TCP agent for macOS
  • cmd/incus-agent: Use vsock for Windows agent
  • Use vsock fork
  • incusd/fsmonitor: Read multiple fanotify events
  • doc/instance_units: Mention common units
  • incusd/instance/qemu: Clarify CPU hotplug error
  • incusd/instance/qmp: Add MemoryConfiguration
  • incusd/instance/qemu: Improve error message on memory hotplug
  • doc/instance: Cover CPU and memory hotplug limits
  • incusd/storage/drivers: Allow creation of qcow2 custom volumes
  • incusd/instance/drivers: Support detaching qcow2 custom volumes
  • incusd/storage: Add snapshot management for qcow2 custom volumes
  • incusd/device: Pass backing path information for disk devices
  • incusd/storage: Block custom volume snapshot create/delete when attached to an instance
  • api: cluster_evacuating_restoring
  • incusd/cluster: Implement evacuating and restoring states
  • shared/api: Align JSON and YAML behavior for preseeding
  • client: Update for InitPreseed change
  • incus: Update for InitPreseed change
  • incusd: Update for InitPreseed change
  • doc/rest-api: Refresh swagger YAML
  • incusd/device/nic_ovn: Fix nested NIC state
  • incusd/metrics: Implement incus_boot_time_seconds and incus_time_seconds
  • incus-agent: Implement incus_boot_time_seconds and incus_time_seconds
  • incusd/instance/lxc: Implement time metrics
  • doc: Add description of incus_boot_time_seconds and incus_time_seconds
  • incusd/storage/linstor: Propagate error when volume filler fails
  • shared/validate: Allow a specific set of compressors
  • incusd: Validate CompressionAlgorithm everywhere it's received
  • tests: Check compression algorithm validation
  • incusd/project: Prevent restricted projects from pulling data
  • api: projects_restricted_image_servers
  • incusd/project: Introduce restricted.images.servers
  • doc: Update config
  • incusd/project: Implement image server restrictions
  • incusd/images: Check project restrictions on image download
  • incusd/db: Turn NodeSpecificStorageConfig into driver aware function
  • incusd: Switch usages to NodeSpecificStorageConfig function
  • incusd/storage: Add support for expanding lvmcluster storage pool
  • incusd/storage: Add DisallowedStorageConfigForCreation and ClusterWideStorageConfig
  • incusd: Add additional checks fro re-sizing lvmcluster pool
  • api: Add storage_lvmcluster_size extension
  • doc: Update config
  • incusd/certificates: Store full API objects in the cache
  • incusd/project: Update permissions test for new certificate cache
  • incusd/certificate: Allow to retrieve a single API certificate
  • incusd/auth/scriptlet: Expose API certificate and request TLS chain to the scriptlet
  • doc/authorization: Document new scriptlet details fields
  • api: authorization_scriptlet_cert
  • incusd/images: Simplify image URL check
  • api: lvmcluster_remove_snapshots
  • incusd/storage/drivers: Add 'lvmcluster.remove_snapshots' config key
  • incusd/storage: Handle snapshot restore when 'lvmcluster.remove_snapshots' is set
  • doc: Update config
  • incus: Add validation before starting sshSFTPserver
  • tests: Add validation for sftp checks
  • i18n: Update translation templates
  • incusd: Pass volume type to daemonStorageValidate
  • api: daemon_storage_logs
  • incusd/config: Add storage logs_volume option
  • incusd/daemon_storage: Add storage operation for 'storage.logs_volume'
  • incusd/api: Add validation and management of 'storage.logs_volume'
  • incusd/instance/common: Use logs folder when configured
  • incusd/instance/lxc: Use LogPath for forkstart
  • incusd/instance_logs: Use LogPath
  • doc: Update config
  • incus/server/network/util: Add ipInPoinerRanges util function
  • incusd/network/bridge: Trigger dependency notifcation on changes
  • incusd/network/ovn: Resetup network on change of uplink ovn range/gateway
  • incusd/apparmor/instance: Fix logs volume handling
  • incus/server/network/ovn/nb: Overwrite static mac bindings if it already exists
  • incusd/api_cluster: Fix database-client count logic
  • incusd/instances: Properly instruct to reset NVRAM when changing secure boot config
  • incusd/instance/config: Propagate volatile.apply_nvram to copied instances
  • incusd/network/acl: Use 'allow-related' instead of 'allow' for default egress action
  • incusd/daemon_storage: Don't fail on log volume unmount failure
  • incusd/cluster: Handle evacuation on single-node clusters
  • internal/instance: Add volatile.hotplug.memory
  • doc: Update config
  • incusd/instance/qemu: Record and re-use base memory configuration
  • incusd/device/nic_bridged: Lookup ACLs in the correct project
  • ncusd/network/zone: Include records from all relevant projects
  • tests: Update for network zone filtering
  • incusd/response: Store original Host in forwardedResponse
  • shared/tls: Support multiple domains in ACME functions
  • incusd/acme: Support multiple domains
  • incusd/network/zone: Allow wildcard records
  • incusd/cluster: Don't stop local networking on healing
  • incusd/db/networks: Set Project in getPartialNetworkByProjectAndName
  • Makefile: Bump minimum to Go 1.25
  • gomod: Update dependencies

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.22.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