Actualités¶
Incus 7.1 est maintenant disponible¶
30 mai 2026
L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 7.1 !
Il s’agit de notre première version mensuelle depuis la sortie d’Incus 7.0 LTS, et elle contient un grand nombre de changements, puisque nous avons pris du temps pour traiter une bonne partie de nos bugs et requêtes de fonctionnalités en attente.
Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/
Correctifs de sécurité¶
Cette version corrige 6 vulnérabilités :
- CVE-2026-48753 (critique)
- CVE-2026-47753 (faible)
- CVE-2026-48754 (faible)
- CVE-2026-48756 (faible)
Nouvelles fonctionnalités¶
Reconstruction de volumes de stockage personnalisés¶
Il est à présent possible de reconstruire un volume de stockage personnalisé avec la nouvelle commande incus storage volume rebuild.
Le volume sous-jacent est supprimé et un nouveau volume vide est créé, avec la même configuration. La reconstruction est uniquement permise si le volume n’a pas d’instantanés.
Le comportement est le même que incus rebuild pour les instances, mais pour les volumes de stockage personnalisés.
stgraber@castiana:~$ incus storage volume create default foo
Storage volume foo created
stgraber@castiana:~$ incus storage volume rebuild default foo
Storage volume foo rebuilt
Topologie CPU explicite pour les machines virtuelles¶
La clef de configuration limits.cpu a été étendue pour les machines virtuelles, de sorte qu’il soit possible de spécifier une topologie CPU explicite, de la forme sockets=2,cores=4,threads=2.
Cela permet plus de flexibilité dans ce qui est exposé au système invité, mais il est important de noter que l’utilisation de cette fonctionnalité empêchera le (dé)branchement à chaud de CPU.
stgraber@castiana:~$ incus launch images:debian/13 v1 --vm -c limits.cpu="sockets=4,cores=2,threads=4"
Launching v1
stgraber@castiana:~$ incus exec v1 bash
root@v1:~# lscpu | grep -E 'Socket|Core|Thread'
Thread(s) per core: 4
Core(s) per socket: 2
Socket(s): 4
root@v1:~# nproc
32
Certificats TPM personnalisés¶
Deux nouvelles clef de configuration du serveur ont été ajoutées :
instances.tpm.platform_certinstances.tpm.platform_key
Elles permettent de fournir une autorité de certification permettant de signer l’Endorsement Key du TPM virtuel. Il est alors possible de faire explicitement confiance à ce TPM.
stgraber@castiana:~$ incus config get instances.tpm.platform_cert
-----BEGIN CERTIFICATE-----
MIIBjDCCATOgAwIBAgIUD0ayUKYdRlCHaXIzzSTWIDX0L4owCgYIKoZIzj0EAwMw
HDEaMBgGA1UEAwwRSW5jdXMgVFBNIHNpZ25pbmcwHhcNMjYwNTIzMDEyODMyWhcN
MzYwNTIwMDEyODMyWjAcMRowGAYDVQQDDBFJbmN1cyBUUE0gc2lnbmluZzBZMBMG
ByqGSM49AgEGCCqGSM49AwEHA0IABHeorFI2aDNnjcmKgaXKJgwmQFdPEUwVFbze
9PBYRc+157TE7WGNxfjK/x9K6/c/oo91cP7wMfhSuvtLfbVG7d+jUzBRMB0GA1Ud
DgQWBBTCr1gVrRuPVC54BoneUqnQpIUfaDAfBgNVHSMEGDAWgBTCr1gVrRuPVC54
BoneUqnQpIUfaDAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA0cAMEQCIFJo
oJ/mWxv69XLDdOMUpvmGu1INjo8cBQh9KqIgnYUYAiA/JXgYEp0u9DCpge9Eifc/
R3QrMmCl71nW2Lz4kZOqhw==
-----END CERTIFICATE-----
stgraber@castiana:~$ incus config get instances.tpm.platform_key
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIMdKhntzfFiQqaBZGo8IvtK16AetkUIYVbhgimeX57aAoAoGCCqGSM49
AwEHoUQDQgAEd6isUjZoM2eNyYqBpcomDCZAV08RTBUVvN708FhFz7XntMTtYY3F
+Mr/H0rr9z+ij3Vw/vAx+FK6+0t9tUbt3w==
-----END EC PRIVATE KEY-----
stgraber@castiana:~$ incus config device add v1 tpm tpm
Device tpm added to v1
stgraber@castiana:~$ incus start v1
stgraber@castiana:~$ incus wait v1 agent
stgraber@castiana:~$ incus exec v1 bash
root@v1:~# tpm2_getekcertificate | openssl x509 -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: CN=Incus TPM signing
Validity
Not Before: May 30 01:32:08 2026 GMT
Not After : Dec 31 23:59:59 9999 GMT
Subject: CN=unknown
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c1:04:b8:19:52:9e:4a:a2:f0:30:1c:23:00:48:
40:71:9b:62:ef:18:d0:56:71:95:da:58:0b:a9:82:
1d:a3:46:b0:66:eb:ad:fe:b1:e0:c1:35:c7:33:bd:
00:69:f4:eb:08:64:84:f1:7a:4f:0b:95:16:1d:88:
18:17:30:ef:3b:74:28:cc:45:b7:9b:ce:be:00:d0:
88:6f:74:4e:90:10:5f:5f:c4:7f:3d:d4:31:3b:5b:
87:57:7d:e5:b1:d0:c4:6b:bd:e8:49:0b:4f:f6:d9:
cb:58:85:91:6a:e7:02:87:bf:5d:99:a0:db:88:74:
f2:47:d8:35:41:fb:09:ec:a6:ae:c4:d4:07:8f:de:
95:d4:82:71:b7:a2:c9:e9:a4:3d:e9:40:73:04:03:
ef:dc:7f:15:60:52:c5:b8:14:9c:ef:66:4a:28:4d:
d7:79:b8:27:b2:b9:d4:58:55:44:f1:52:6a:5e:f7:
a8:e4:56:39:55:65:42:41:c2:73:de:00:de:65:08:
0f:d5:d3:cb:a4:82:3a:75:cf:4e:ac:b2:94:58:96:
a8:9c:c0:f8:e3:3c:2e:25:76:6d:24:7e:00:58:f5:
63:01:e9:90:84:8e:21:b2:e0:29:a4:d8:cb:2f:f7:
d4:a6:a0:3a:e4:54:54:10:77:4f:d0:96:1b:68:b2:
e4:91
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Extended Key Usage:
Endorsement Key Certificate
X509v3 Subject Alternative Name: critical
DirName:/tcg-at-tpmManufacturer=id:00001014/tcg-at-tpmModel=swtpm/tcg-at-tpmVersion=id:20240125
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Subject Directory Attributes:
TPM Specification:
0:d=0 hl=2 l= 12 cons: SEQUENCE
2:d=1 hl=2 l= 3 prim: UTF8STRING :2.0
7:d=1 hl=2 l= 1 prim: INTEGER :00
10:d=1 hl=2 l= 2 prim: INTEGER :B7
X509v3 Authority Key Identifier:
C2:AF:58:15:AD:1B:8F:54:2E:78:06:89:DE:52:A9:D0:A4:85:1F:68
X509v3 Key Usage: critical
Key Encipherment
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:46:02:21:00:b9:7a:97:78:fb:4d:ea:6e:93:27:24:3a:f6:
66:08:b9:ae:54:e8:2b:c1:c8:e9:1c:74:45:79:88:88:72:3e:
46:02:21:00:82:f6:c0:d9:dc:c0:1a:5e:95:cb:f3:b9:fa:00:
65:55:b3:5f:b4:25:7e:c5:c6:fb:b2:c4:e4:41:36:6d:76:5b
Documentation : https://linuxcontainers.org/incus/docs/main/server_config/#miscellaneous-options
Création automatique de volume¶
La commande incus storage volume attach accepte désormais un drapeau --create.
Lorsqu’il est utilisé, un volume de stockage personnalisé est créé, si aucun volume du même nom n’existe, avant d’être attaché à l’instance (économisant un appel à incus storage volume create).
stgraber@castiana:~$ incus storage volume attach default v1-extra v1 extra --create
stgraber@castiana:~$ incus exec v1 bash
root@v1:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 100M 0 part /boot/efi
└─sda2 8:2 0 9.9G 0 part /
sdb 8:16 0 10G 0 disk
Paramètres personnalisés pour la création de systèmes de fichiers¶
Une nouvelle option de configuration, block.create_options, permet de contrôler les arguments passés à mkfs lors de la création de volumes sur des périphériques en bloc.
btrfs.create_options a également été ajouté pour contrôler les options passées à mkfs.btrfs lors de la création d’un nouveau pool de stockage.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_btrfs/#storage-btrfs
Configuration LINSTOR de bas niveau¶
Un nouvel ensemble de clefs de configuration, linstor.raw.*, est à présent disponible pour les pools et les volumes de stockage LINSTOR. Il permet de définir des propriétés de bas niveau sur les groupes de ressources et les définitions de ressources sous-jacents.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_linstor/
Plages d’adresses IP dans les ensembles d’adresses réseau¶
Les ensembles d’adresses réseau supportent à présent des plages d’adresses IP (par exemple, 10.0.0.120-10.0.0.130), comme cela était le cas pour les règles des ACL réseau.
Chaque plage peut contenir au plus 256 adresses ; les ensembles plus grands doivent être exprimés avec la notation CIDR.
stgraber@castiana:~$ incus network address-set create demo
Network address set demo created
stgraber@castiana:~$ incus network address-set add demo 10.0.0.100-10.0.0.200
Documentation : https://linuxcontainers.org/incus/docs/main/howto/network_address_sets/
Contrôle du snooping multicast sur les bridges¶
Une nouvelle option de configuration, bridge.multicast_snooping, a été ajoutée aux réseaux de type bridge. Lorsque celle-ci est définie à false, le snooping multicast est désactivé sur le bridge.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/network_bridge/
Support de plusieurs adresses par serveur distant¶
La commande incus remote accepte désormais plusieurs adresses pour chaque serveur distant.
Incus conserve en mémoire la dernière adresse fonctionnelle et bascule sur la suivante en cas de problème de connexion, permettant de définir facilement des adresses alternatives pour les serveurs en cluster.
Améliorations dans le stockage objet S3¶
Le serveur de stockage objet intégré compatible S3 a été étendu pour supporter quelques extensions communes :
- Les URL pré-signées sont désormais supportées pour les algorithmes de signature SigV2 et SigV4.
- L’opération
CopyObjectest maintenant implémentée, permettant la copie des objets côté serveur.
Liste complète des changements¶
Voici une liste complète de tous les changements apportés par cette version :
Liste complète des commits
- gomod: Update dependencies
- incusd/instance/drivers: Round memory hotplug size up to block size
- incusd/instance/lxc: Allow unsetting limits.memory.swap without hitting a cgroup error
- tests: Update for new name restrictions
- doc: Update config
- internal/server: fire agent events after checking current state
- internal/instance: Add volatile.last_state.agent
- incusd/storage/s3: Confine multipart uploads with os.Root
- incusd/storage: Guard nil fields in createDependentVolumesFromBackup
- incusd/storage: Guard nil ExpiresAt in CreateCustomVolumeFromBackup
- incusd/storage: Fix unsafe access to backup data
- incusd/device: Encode device names in DevicesPath storage paths
- incusd/instance/drivers: Apply standard API object name checks
- doc: Update config
- doc: Document CPU topology support for limits.cpu
- incusd/instance: Support CPU topology for VM limits.cpu
- internal/instance: Allow CPU topology syntax for limits.cpu
- shared/validate: Add CPU topology parsing helper
- api: instance_limits_cpu_topology
- i18n: Update translation templates
- tests: Switch to recursive chown on file push
- incus/file: Make recursive push apply UID/GID overrides recursively
- incus/storage_volume: Put big subcommands into their own files
- incusd/devices: Cleanup leftover forkproxy on startup
- i18n: Update translation templates
- incus/config: Fix typo in usage
- incus/image: Improve usage
- incus/move: Improve usage
- incus/storage/volume: Improve usage
- incus/remote: Improve usage
- Translated using Weblate (Portuguese)
- Translated using Weblate (Swedish)
- Translated using Weblate (Russian)
- incusd/images: Revert 36f513c
- incusd/storage: Prevent creating daemon volumes on shared pools
- api: api_fragments
- incusd/project: Handle server objects
- incusd/db/cluster/entities: Add TypeServer and fix map sorting
- incusd/storage: Improve handling of daemon volumes
- shared/api/url: Add URL fragment setter
- client: handle absolute paths for simplestream files
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Tamil)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Greek)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- tests: Add storage bucket presigned URL test
- incus/storage/s3: Support SigV2 presigned URLs
- incus/storage/s3: Support SigV4 presigned URLs
- i18n: Update translation templates
- doc: Update command name
- incus: Keep track of last working remote
- incus: Remove global mutable state from the parser
- incus: Refactor calls to the parser
- incus/remote: Add support for multiple URLs
- global: Use strings.Builder for string concatenation in loops
- shared/api: Drop no-op omitempty on nested struct fields
- global: Use slices.Backward for reverse iteration
- global: Use strings.CutSuffix instead of HasSuffix/TrimSuffix
- global: Use strings.Cut instead of strings.Split/SplitN
- incusd/instance/drivers: Use the min builtin for memory capping
- incusd: Use unsafe.Add for pointer arithmetic in forkproxy
- global: Use t.Context in tests
- global: Use reflect.TypeFor
- global: Use range-over-int loops
- global: Use maps.Copy instead of manual copy loops
- global: Use sync.WaitGroup.Go for goroutine management
- incusd: Rename dqlite references to cowsql
- incusd/network/physical: Skip VLAN interface on filtered bridges
- incusd/network/ovn: Correctly set VLAN on uplink veth
- tests: Add storage volume rebuild test
- i18n: Update translation templates
- incus/storage_volume: Add rebuild command
- client: Add RebuildStoragePoolVolume
- doc/rest-api: Refresh swagger YAML
- incusd/storage: Add storage volume rebuild API endpoint
- shared/api: Add StorageVolumeRebuildPost
- incusd/storage: Add RebuildCustomVolume to pool backend
- api: storage_volumes_rebuild
- test/lint: Run full golangci-lint instead of only new changes
- incusd/instance/operationlock: Omit redundant error type from sentinel var declaration (revive:var-declaration)
- incusd/dnsmasq/dhcpalloc: Omit redundant error type from sentinel var declaration (revive:var-declaration)
- incusd/cluster: Omit redundant error type from sentinel var declaration (revive:var-declaration)
- incusd: Omit redundant error type from sentinel var declaration (revive:var-declaration)
- incusd/operations: Inline reflect.Ptr as reflect.Pointer (govet:inline)
- incus: Inline reflect.Ptr as reflect.Pointer (govet:inline)
- i18n: Update translation templates
- incus: Add newline after block before switch case (newline-after-block)
- incusd/storage/drivers: Add newline after block before switch case (newline-after-block)
- incusd/instance/drivers: Add newline after block before switch case (newline-after-block)
- incusd/device: Add newline after block before switch case (newline-after-block)
- incusd: Add newline after block before switch case (newline-after-block)
- incusd/fsmonitor/drivers: Add doc comments on exported Name methods (revive:exported)
- incusd/fsmonitor/drivers: Rename locals that shadow logger import (revive:import-shadowing)
- incusd/fsmonitor: Rename local that shadows logger import (revive:import-shadowing)
- incusd/seccomp: Simplify setxattr whiteout check with early return (revive:early-return)
- incusd/backup: Rename locals that shadow state import (revive:import-shadowing)
- incusd/apparmor: Omit inferred type from strings.Builder declarations (staticcheck:ST1023)
- incusd/apparmor: Add doc comment on nullWriteCloser.Close (revive:exported)
- internal/linux: Add missing doc comments on exported symbols (revive:exported)
- internal/linux: Drop redundant = nil from err declaration (revive:var-declaration)
- internal/linux: Rename devpts_fd parameter (revive:var-naming)
- internal/linux: Return error last from GetErrno (revive:error-return)
- incusd/device: Use tagged switch statements (staticcheck:QF1003)
- incusd/device: Apply De Morgan's law to simplify booleans (staticcheck:QF1001)
- incusd/device: Remove embedded StorageVolume field from selector (staticcheck:QF1008)
- incusd/device: Check container type assertions (revive:unchecked-type-assertion)
- incusd/device: Invert conditions to return early (revive:early-return)
- incusd/device: Remove unnecessary blank line in validateConfig (whitespace)
- incusd/device: Remove blank line at start of block (revive:empty-lines)
- incusd/device: Avoid defer inside loop in checkAttachedRunningProcesses (revive:defer)
- incusd/device: Rename locals that shadow imports (revive:import-shadowing)
- incusd/auth/oidc: Add doc comments on exported methods (revive:exported)
- incusd/auth/oidc: Check email claim type assertion (revive:unchecked-type-assertion)
- incusd/auth: Use strings.Split instead of SplitN (staticcheck:QF1004)
- incusd/auth: Add doc comments on exported symbols (revive:exported)
- incusd/auth: Rename locals that shadow logger import (revive:import-shadowing)
- incusd/events: Add doc comments on exported methods (revive:exported)
- incusd/events: Remove embedded Conn field from selectors (staticcheck:QF1008)
- incusd/response: Use fmt.Fprintf instead of WriteString with Sprintf (staticcheck:QF1012)
- incusd/response: Avoid defer inside loop in fileResponse.Render (revive:defer)
- incusd/response: Add doc comments on exported Render methods (revive:exported)
- incusd/device/config: Rename copy locals that shadow builtin (revive:redefines-builtin-id)
- incusd: Fix remaining identifier naming (revive:var-naming)
- incusd: Annotate intentional os.Exit calls (revive:deep-exit)
- incusd: Remove useless break in case clauses (revive:useless-break)
- incusd: Remove blank line at start of block (revive:empty-lines)
- incusd: Remove empty else block (revive:empty-block)
- incusd: Rename local that shadows builtin min (revive:redefines-builtin-id)
- incusd: Add space after comment delimiter (revive:comment-spacings)
- incusd: Avoid deferring inside loops (revive:defer)
- incusd: Drop else after return (revive:indent-error-flow)
- incusd: Return early to reduce nesting (revive:early-return)
- incusd: Use comma-ok form for type assertions (revive:unchecked-type-assertion)
- incusd: Rename locals that shadow imports (revive:import-shadowing)
- incusd: Fix identifier naming (revive:var-naming)
- incusd: Use tagged switch statements (staticcheck:QF1003)
- incusd: Remove dead source connection (staticcheck:SA4006)
- incusd: Fix errors.Is argument order (staticcheck:SA1032)
- incusd: Use fmt.Fprintf instead of Write of Sprintf (staticcheck:QF1012)
- incusd: Convert byte slice argument to string (staticcheck:QF1010)
- incusd: Merge conditional assignments into declarations (staticcheck:QF1007)
- incusd: Remove unnecessary trailing newline (whitespace)
- incusd: End comments with a period (godot)
- incusd: Fix import grouping (gci)
- incusd/config: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/bgp: Remove unused setup method (unused)
- incusd/firewall/drivers: Remove unused subnetMask function (unused)
- incusd/metadata: Add doc comment on exported var Data (revive:exported)
- incusd/refcount: Omit redundant type in var declaration (revive:var-declaration)
- incusd/ucred: Check type assertion in GetConnFromContext (revive:unchecked-type-assertion)
- incusd/scriptlet/log: Fix doc comment on exported CreateLogger (revive:exported)
- incusd/scriptlet: Use tagged switch statements (staticcheck:QF1003)
- incusd/metrics: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/dnsmasq/dhcpalloc: Lift break condition into loop (staticcheck:QF1006)
- incusd/dnsmasq: Use strings.Split instead of SplitN (staticcheck:QF1004)
- incusd/dns: Rename param that shadows db import (revive:import-shadowing)
- incusd/dns: Add doc comment on exported method ServeDNS (revive:exported)
- incus/usage: Remove dead assignments to renderedAtoms (staticcheck:SA4006)
- incus: Remove unused functions (unused)
- incus: Use tagged switch statement (staticcheck:QF1003)
- incusd/instance/drivers: Use tagged switch statements (staticcheck:QF1003)
- incusd/instance/drivers: Replace append loop with variadic append (staticcheck:S1011)
- incusd/instance/drivers: Rename locals that shadow imports (revive:import-shadowing)
- incusd/instance/drivers: Add doc comments on exported methods (revive:exported)
- incusd/instance/drivers: Check type assertions (revive:unchecked-type-assertion)
- incusd/instance/drivers: Return early to reduce nesting (revive:early-return)
- incusd/instance/drivers: Avoid deferring inside loops (revive:defer)
- incusd/instance/drivers: Omit inferred type from var declaration (revive:var-declaration)
- incusd/instance/drivers: Remove unnecessary blank line at end of block (whitespace)
- incusd/instance/drivers: Remove unused const and function (unused)
- incusd/instance: Rename locals that shadow imports (revive:import-shadowing)
- incusd/instance: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/instance: Return explicit values instead of bare returns (revive:bare-return)
- incusd/instance/drivers/qmp: Use tagged switch statement (staticcheck:QF1003)
- incusd/instance/drivers/qmp: Fix doc comment on exported Run method (revive:exported)
- incusd/logging: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/db: Omit type from strings.Builder declarations (staticcheck:ST1023)
- incusd/db: Add space after comment delimiter (revive:comment-spacings)
- incusd/db: Omit redundant types in var declarations (revive:var-declaration)
- incusd/db: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/db: Check type assertion result (revive:unchecked-type-assertion)
- incusd/db: Rename local that redefines builtin max (revive:redefines-builtin-id)
- incusd/db: Rename profileIds parameter to profileIDs (revive:var-naming)
- incusd/db: Apply De Morgan's law to simplify boolean (staticcheck:QF1001)
- incusd/db: Rename locals that shadow imports (revive:import-shadowing)
- incusd/db/cluster: Use fmt.Fprintf instead of WriteString (staticcheck:QF1012)
- incusd/db/cluster: Check type assertion result (revive:unchecked-type-assertion)
- incusd/db/cluster: Rename locals that shadow imports (revive:import-shadowing)
- incusd/db/cluster: Remove redundant import alias (revive:redundant-import-alias)
- incusd/db/schema: Rename locals that shadow imports (revive:import-shadowing)
- incusd/db/schema: Check error from db.Close (errcheck)
- incusd/db/node: Rename locals that shadow imports (revive:import-shadowing)
- incusd/db/query: Rename locals that shadow imports (revive:import-shadowing)
- incusd/db/query: Add missing doc comments on exported symbols (revive:exported)
- incusd/cluster: Rename locals that shadow imports (revive:import-shadowing)
- incusd/cluster: Avoid deferring inside loops and chains (revive:defer)
- incusd/cluster: Simplify with early return (revive:early-return)
- incusd/cluster: Add missing doc comments on exported methods (revive:exported)
- incusd/cluster: Drop redundant client import alias (revive:redundant-import-alias)
- incusd/endpoints: Rename locals that shadow import (revive:import-shadowing)
- incusd/operations: Rename param that shadows import (revive:import-shadowing)
- incusd/operations: Add missing doc comments on exported methods (revive:exported)
- incusd/network: Use tagged switch statements (staticcheck:QF1003)
- incusd/network: Lift break condition into loop (staticcheck:QF1006)
- incusd/network: Merge conditional assignment into declaration (staticcheck:QF1007)
- incusd/network: Remove embedded common field from selectors (staticcheck:QF1008)
- incusd/network: Remove blank line at start of block (revive:empty-lines)
- incusd/network: Rename locals that shadow imports (revive:import-shadowing)
- incusd/network: Add and fix doc comments on exported symbols (revive:exported)
- incusd/network/acl: Remove blank line at start of switch (revive:empty-lines)
- incusd/network/acl: Invert condition to return early (revive:early-return)
- incusd/network/acl: Merge conditional assignment into declaration (staticcheck:QF1007)
- incusd/network/acl: Use tagged switch on rule.Protocol (staticcheck:QF1003)
- incusd/network/acl: Use tagged switch on rule.Action (staticcheck:QF1002)
- incusd/network/acl: Rename locals that shadow imports (revive:import-shadowing)
- incusd/network/zone: Add and fix doc comments on exported methods (revive:exported)
- incusd/network/zone: Rename param that shadows state import (revive:import-shadowing)
- incusd/network/ovn: Use tagged switch statements (staticcheck:QF1003)
- incusd/network/ovs: Use strings.Split instead of SplitN (staticcheck:QF1004)
- incusd/network/ovs: Remove unused unquote function (unused)
- incusd/storage/drivers: Use tagged switch statements (staticcheck:QF1003)
- incusd/storage/drivers: Use strings.Split instead of SplitN (staticcheck:QF1004)
- incusd/storage/drivers: Omit inferable type from declaration (staticcheck:QF1011)
- incusd/storage/drivers: Remove extra blank lines at start of block (revive:empty-lines)
- incusd/storage/drivers: Simplify if/else with early return (revive:early-return)
- incusd/storage/drivers: Avoid deferring inside loops (revive:defer)
- incusd/storage/drivers: Rename locals that shadow imports (revive:import-shadowing)
- incusd/storage/drivers: Add missing doc comments on exported symbols (revive:exported)
- incusd/storage: Simplify boolean with De Morgan's law (staticcheck:QF1001)
- incusd/storage: Use tagged switch statements (staticcheck:QF1003)
- incusd/storage: Check type assertion result (revive:unchecked-type-assertion)
- incusd/storage: Simplify if/else with early return (revive:early-return)
- incusd/storage: Rename locals that shadow imports (revive:import-shadowing)
- incusd/storage: Add missing doc comments on exported symbols (revive:exported)
- tests: Update btrfs test for new behavior
- incusd/instance/lxc: Use os.Root for templating
- incusd/instance: Handle negative disk usage values
- incusd/storage: Return -1 as disk usage when the driver doesn't support it
- incus/info: Handle negative usage values (unknown)
- i18n: Update translation templates
- incus/storage_volume: Fix push behavior with UID/GID/mode overrides
- tests: Add thorough tests for incus file push with UID/GID/mode overrides
- incus/file: Fix typo
- incus/file: Fix push behavior with UID/GID/mode overrides
- incusd/instances: Only reset NVRAM on secureboot change for VMs
- incusd/storage/zfs: Use latest common GUID as refresh base
- Translated using Weblate (Russian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Swedish)
- Translated using Weblate (Russian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Swedish)
- inucsd/devices/tpm: Enable tpm live migration
- tests: Add IP range coverage for network address sets
- doc: Document IP range support in network address sets
- incusd/network/address-set: Support IP ranges
- api: network_address_set_ip_ranges
- doc: Update config
- incusd/network/ovn: Use dnat_and_snat for fully mapped external addresses
- api: linstor_raw
- tests: Add quick raw DRBD key checks
- incusd/storage/linstor: Allow setting raw DRBD properties on storage volumes
- incusd/storage/linstor: Allow setting raw DRBD properties on storage pools
- incusd/storage: Allow skipping validation for more prefixes
- gomod: Update dependencies
- Makefile: Use older incus-os for Go 1.25
- incusd/forknet: Filter the DHCPv4 raw socket
- incusd/forknet: Handle zero wait time for DHCPv6
- incusd/forknet: Time out DHCPv6 lease acquisition
- incusd/forknet: Time out DHCPv4 lease acquisition
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Tamil)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Greek)
- incus-simplestreams: Detect type of unified images
- incus-simplestreams: Support split container images
- shared/simplestreams: Add combined_type
- i18n: Update translation templates
- incus/config: Fix YAML file name in help text
- i18n: Update translation templates
- incus/launch: Update examples
- incus/network/forward: Fix typo in description
- i18n: Update translation templates
- incus/remote_unix: Clarify socket type
- incus/launch: Clarify examples
- incus/cluster: Fix typo in description
- Translated using Weblate (Russian)
- Translated using Weblate (Portuguese)
- doc: Add PEM to wordlist
- doc: Update config
- incusd/device/tpm: Provision vTPM with platform CA when configured
- incusd/cluster/config: Add instances.tpm.platform keys
- incusd/devices: Set volatileGet on Refresh
- api: instances_tpm_platform_cert
- shared/archive: Improved ENOSPC detection
- incus/utils: Tweak environment file handling to strip matching outer quotes
- doc: Update config
- tests: Add test for block.create_options
- incusd/storage/drivers: Add support for block.create_options
- api: storage_create_options
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Tamil)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Greek)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- i18n: Update translation templates
- incus/storage/volume: Align long and short description
- incus/project: Align description formatting
- incus/project: Fix typo in description
- incus/cluster/group: Fix typo in description
- incus/warning: Align description formatting
- incus/config/trust: Align description formatting
- incus/image: Align description formatting
- incus/network/forward: Fix typo in description
- incus/config/trust: Fix typo in description
- incus/storage/volume: Fix typo in description
- incus/network: Fix typo in description
- incus/network/zone: Align long and short descriptions
- incus/network: Fix typo in description
- incus/operation: Fix default column layout in help text
- incusd/instance/qemu: Add virtio vga feature gating
- incusd/instance/qmp: Add QueryVirtioVGADevice
- Extend description for OCI-compliant remotes
- incus/server/network/ovn/driver: Fix duplicate listening ip check in LoadBalancerCreate
- incus/server/network/ovn/driver: Fix duplicate listening ip check in ForwardCreate
- client/oci: Pass --no-tags to skopeo inspect
- incusd/firewall/nftables: Use terse mode to improve performance
- i18n: Update translation templates
- doc/rest-api: Refresh swagger YAML
- doc: Update metadata
- doc: Clarify snapshots.expiry
- cmd/incus: Clarify --expiry flag format
- shared/api: Fix swagger examples
- incusd/storage/ceph: Refuse pool deletion when unexpected images exist
- incus: Print console log when attaching via --console
- incusd/db/node: Allow using a fixed time in Offline checks
- incusd/forknet: Use space separator for DNS search domains
- incusd/device/nic_bridged: Recover orphaned veth on startup
- incusd/device/nic_bridged: Drop redundant accept_ra=0
- incusd/ip: Set NUD_PERMANENT on neighbour proxy entries
- incusd/networks: Parallelize network startup and OVN restart
- Translated using Weblate (Portuguese)
- incusd/storage/drivers: Add workaround for shared VG removal failures
- tests/storage: Add S3 CopyObject coverage
- incusd/storage/s3: Implement ACL placeholder
- tests/storage_volume_attach: Test --create on attach
- i18n: Update translation templates
- incus/storage_volume: Add --create flag to attach
- incusd/storage/s3: Implement S3 CopyObject
- doc/storage_volume: Fix outdated information
- test: Disable volume shrinking with LINSTOR
- incusd/instance/drivers/lxc: Quote values in lxc.environment
- incusd/instances: Skip offline members in bulk state changes
- incusd/network/ovn: Skip per-IP NAT for external routes when no uplink
- incusd/storage/zfs: Avoid recursive zfs list in GetResources
- incusd/cluster: Better handle misisng OVS/OVN
- Use correct host:port format for ClusterAddress
- Update list of Ubuntu LTS releases that get pre-built Incus packages
- doc: Update Ansible section with incus-client details
- incusd/storage/drivers: Restore config volume as part of VM block restoration
- build(deps): bump actions/dependency-review-action from 4 to 5
- devcontainer: fix golangci-lint install source
- incusd/storage: Add lock handling for NBD operations
- incusd/storage: Use InstanceByVolumeName in qcow2MigrateVolume
- incusd/locking: Add TryLock
- doc: Update config
- incusd/network/bridge: Add bridge.multicast_snooping config key
- api: network_bridge_multicast_snooping
- incusd/db/node: Cleanup node offline messages
- incusd/instance/qemu: Pass SMBIOS type 11 entries via files
- incusd/endpoints: Fix Wait() race in Tomb shutdown
- incusd/cluster: Re-order evacuations to happen earlier on shutdown
- incusd/instance/qemu: Remove deprecated QEMU flag
- test/network_acl: Add test for ACL used by instance in different project
- doc/rest-api: Refresh swagger YAML
- incusd/storage_volume_nbd: Fix incorrect swagger
- incusd/projects: Fix targeting on project delete
- incusd/network/acl: Fix issue with instances in different project than ACL
- doc/authorization: Fix reference to old "manager" relation
- incusd/device/nic_bridged: Fix swapped IPv4/IPv6 DNS record
- incusd/forknet: Add jitter to DHCPv6 renewal
- incusd/forknet: Properly renew stateful DHCPv6
- incusd/forknet: Include FQDN in DHCPv6 INFO requests
- incusd/forknet: Persist DHCPv6 client DUID across restarts
- incusd/instance/lxc: Fix swap=false failure
- incusd: Re-introduce core scheduling detection
- incusd/instance/qemu: Fix version detection for qemu-kvm
- Translated using Weblate (French)
- Translated using Weblate (Russian)
- Translated using Weblate (Japanese)
- Translated using Weblate (Swedish)
- Translated using Weblate (French)
- Translated using Weblate (Russian)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Tamil)
- Translated using Weblate (Greek)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- doc/devices/disk: Fix broken link
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/7.1.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
Incus 7.0 LTS est maintenant disponible¶
5 mai 2026
Introduction¶
C’est avec beaucoup de fierté et de plaisir que l’équipe d’Incus annonce la sortie d’Incus 7.0 LTS !
Incus est un gestionnaire moderne de conteneurs système et d’application et de machines virtuelles. C’est un projet open source publié sous licence Apache 2.0 et géré par la communauté dans le cadre de l’organisation Linux Containers.
Incus fournit un environnement de type cloud permettant la création d’instances à partir de nos images prédéfinies ou de dépôts OCI, et offrant une grande variété de fonctionnalités, comme la capacité de gérer en toute simplicité des clusters de serveurs.
Il prend en charge différents systèmes de stockage locaux ou distants, une gestion réseau traditionnelle ou entièrement distribuée, et offre les fonctionnalités cloud les plus courantes, avec notamment une API REST, des intégrations avec des outils comme Ansible, Terraform/OpenTofu, Packr, Kubernetes Cluster API, et plus encore !
Il s’agit de la deuxième version LTS d’Incus, marquant l’entrée d’Incus 6.0 LTS dans sa phase de maintien en condition de sécurité pendant les 3 dernières années de son cycle de vie de 5 ans.
Incus 7.0 LTS rejoint LXC 7.0 LTS et LXCFS 7.0 LTS pour conclure cette série de versions LTS.
Tout comme ces autres projets, Incus 7.0 LTS sera supporté jusqu’en juin 2031.
Les 2 premières années seront consacrées à la corrections de bugs et de problèmes de sécurité, ainsi qu’à des améliorations livrées dans des versions mineures (7.0.x). Après ces deux premières années, Incus 7.0 LTS ne recevra plus que des mises à jour de sécurité pour le reste de ses 5 ans de support.
Un total de 204 individus ont contribué à Incus entre les versions 6.0 LTS et 7.0 LTS, avec 45 contributrices et contributeurs entre les versions 6.23 et 7.0 LTS.
Comme d’habitude, vous pouvez l’essayer en ligne : https://linuxcontainers.org/incus/try-it/
Correctifs de sécurité¶
Cette version corrige un total de 9 vulnérabilités.
Celles-ci ont été remontées dans le cadre d’un audit de sécurité d’Incus mené par https://7asecurity.com.
- CVE-2026-35527 (modérée)
- CVE-2026-40195 (modérée)
- CVE-2026-40197 (modérée)
- CVE-2026-40251 (modérée)
- CVE-2026-41647 (modérée)
- CVE-2026-41684 (modérée)
- CVE-2026-41685 (modérée)
- CVE-2026-40243 (faible)
- CVE-2026-41648 (faible)
Changements majeurs¶
Puisqu’il s’agit d’une nouvelle version majeure, nous en avons profité pour apporter quelques changements pouvant affecter les systèmes exécutant Incus.
Les exigences système minimales ont été mises à jour :
- Go 1.25
- Linux 6.12
- QEMU 8.2
- LXC 6.0.0
- nftables 1.0.0
- dnsmasq 2.90
- Open vSwitch 2.15.0 (lorsqu’OVS ou OVN sont utilisés)
- OVN 23.03.0 (lorsqu’OVN est utilisé)
- ZFS 2.1.0 (lorsque ZFS est utilisé)
- LVM 2.03.11 (lorsque LVM est utilisé)
De plus, certains sous-systèmes historiques ont été supprimés :
- Retrait du support des CGroupV1
- Retrait du support de xtables (iptables/ip6tables/ebtables)
L’outil incus a également connu bon nombre d’améliorations dans sa gestion des arguments en ligne de commande, et a été rendu plus cohérent par la suppression de cas spéciaux préservés pour des raisons historiques.
Changements depuis Incus 6.23¶
Remplacement de MinIO¶
MinIO n’étant plus maintenu, il n’était pas raisonnable de continuer à l’utiliser pour nos buckets de stockage.
Plutôt que d’utiliser une nouvelle dépendance externe et d’effectuer tout le travail d’intégration qui vient avec, nous avons décidé d’implémenter notre propre serveur S3, fournissant les opérations basiques dont nous avons besoin dans Incus.
Les buckets de stockage seront automatiquement convertis depuis le format de stockage de MinIO vers notre nouveau format (de simples fichiers avec leurs métadonnées) la première fois qu’ils seront requêtés. Le processus peut prendre quelques minutes en fonction de la taille des objets présents dans le bucket.
La logique de migration conserve les métadonnées de MinIO originales, si celles-ci se montraient utiles un jour.
Du point de vue des clients, hormis un délai au premier accès du fait de la conversion, l’API n’a pas changé et reste conforme à S3.
Action à l’extinction du serveur¶
Une nouvelle option de configuration du serveur, core.shutdown_action, a été ajoutée.
La valeur shutdown (par défaut), arrête les instances proprement. La nouvelle valeur evacuate déclenche l’évacuation du serveur de son cluster à l’extinction, permettant le déplacement des instances vers d’autres serveurs.
Documentation : https://linuxcontainers.org/incus/docs/main/server_config/
API de sauvegarde bas niveau¶
Pour simplifier son intégration dans des logiciels de sauvegarde, Incus expose désormais une API NBD et des API permettant de suivre quels blocs ont été modifiés dans les volumes en bloc (dirty bitmaps).
La combinaison de ces deux fonctionnalités ouvre la voie vers des sauvegardes et restaurations incrémentales simplifiées.
Le client en ligne de commande d’Incus peut être utilisé pour gérer la connexion NBD et fournir un port d’écoute local utilisable par des clients NBD standards.
stgraber@castiana:~$ incus storage volume nbd default virtual-machine/v1 --address=127.0.0.1:1234
NBD listening on 127.0.0.1:1234
Restrictions sur les pools de stockage dans les projets¶
Une nouvelle clef de configuration pour les projets, restricted.storage-pools.access, a été ajoutée pour définir une liste de pools de stockage (séparée par des virgules) pouvant être utilisés dans un projet.
Son effet est similaire au fait de définir un quota de 0 octets pour les pools ne devant pas être utilisés dans le projet, mais l’option permet de définir positivement les pools autorisés, et non négativement les pools interdits.
Documentation : https://linuxcontainers.org/incus/docs/main/reference/projects/
Appel du scriptlet de placement des instances lors du rééquilibrage du cluster¶
Le scriptlet de placement des instances supporte une nouvelle raison rebalance lorsque la fonctionnalité de rééquilibrage est activée et qu’Incus cherche à déplacer des instances pour équilibrer sa charge.
La liste des serveurs candidats est triée du serveur le moins chargé au plus chargé.
Documentation : https://linuxcontainers.org/incus/docs/main/explanation/clustering/
Commandes de transfert de fichiers alignées avec cp¶
Les commandes incus file push et incus file pull suivent à présent un comportement similaire à celui de la commande cp, avec des drapeaux en commun :
-p, --create-dirs Créer les dossiers intermédiaires
-L, --dereference Toujours suivre les liens symboliques source
-H, --follow Seulement suivre les liens symboliques source fournis en arguments
-P, --no-dereference Ne jamais suivre les liens symboliques source
-r, --recursive Transférer les fichiers récursivement
L’expérience devrait être plus prédictible lors du transfert de fichiers vers et depuis des instances Incus.
Drapeau --reuse pour incus image copy¶
La commande incus image copy supporte désormais un drapeau --reuse qui, lorsqu’utilisé aves --copy-aliases, fait que les anciens alias pointent sur la nouvelle image.
Changements depuis Incus 6.0.6 LTS¶
Nous avons rétroporté de manière assez agressive les changements des versions Incus 6.x vers les versions 6.0.x LTS. En conséquence, la liste des nouvelles fonctionnalités par rapport à la version 6.0.6 LTS est assez courte.
Ces fonctionnalités demandent des changements majeurs sur le disque ou dans les bases de données, et n’étaient donc pas appropriées pour du rétroportage dans les versions LTS.
Toutes les fonctionnalités citées ci-dessus¶
Incus 6.0.6 LTS est sorti juste avant Incus 6.23 ; en conséquence, toutes les nouvelles fonctionnalités citées ci-dessus s’appliquent aux migrations depuis Incus 6.0.6 LTS.
Support d’OCI¶
Ajouté dans Incus 6.3, le support d’OCI permet la création de conteneurs d’application à partir d’images OCI.
Toutes les options de configuration des conteneurs Incus, qu’il s’agisse de limites de ressources, d’interceptions de syscalls… s’appliquent également aux conteneurs applicatifs. Ils sont aussi tous lancés dans le même environnement sûr de conteneurisation que nos conteneurs système.
stgraber@dakara:~$ incus remote add docker https://docker.io --protocol=oci
stgraber@dakara:~$ incus launch docker:mysql mysql \
> -c environment.MYSQL_DATABASE=wordpress \
> -c environment.MYSQL_USER=wordpress \
> -c environment.MYSQL_PASSWORD=wordpress \
> -c environment.MYSQL_RANDOM_ROOT_PASSWORD=1
Launching mysql
stgraber@dakara:~$ incus list mysql
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| mysql | RUNNING | 172.17.250.26 (eth0) | 2602:fc62:c:250:216:3eff:fefa:468 (eth0) | CONTAINER (APP) | 0 |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
stgraber@dakara:~$ incus launch docker:wordpress wordpress \
> -c environment.WORDPRESS_DB_HOST=172.17.250.26 \
> -c environment.WORDPRESS_DB_USER=wordpress \
> -c environment.WORDPRESS_DB_PASSWORD=wordpress \
> -c environment.WORDPRESS_DB_NAME=wordpress
Launching wordpress
stgraber@dakara:~$ incus list wordpress
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
| wordpress | RUNNING | 172.17.250.119 (eth0) | 2602:fc62:c:250:216:3eff:fe61:c1fc (eth0) | CONTAINER (APP) | 0 |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
stgraber@dakara:~$
Volumes de stockage dépendants¶
Ajoutés dans Incus 6.23, les volumes de stockage dépendants permettent de lier des volumes personnalisés à des instances, de telle sorte que les instantanés, la migration, les sauvegardes, et les suppressions portent à la fois sur les instances et leurs volumes dépendants.
stgraber@castiana:~$ incus launch images:debian/13 c1
Launching c1
stgraber@castiana:~$ incus storage volume create default c1-extra dependent=true
Storage volume c1-extra created
stgraber@castiana:~$ incus config device add c1 extra disk pool=default source=c1-extra dependent=true path=/extra
Device extra added to c1
stgraber@castiana:~$ incus storage volume snapshot create default c1-extra test
Error: Direct snapshots are not allowed for dependent volumes
stgraber@castiana:~$ incus snapshot create c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------------------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------------------+------------+
| foo | 2026/03/27 18:54 EDT | |
+------+----------------------+------------+
stgraber@castiana:~$ incus snapshot delete c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------+------------+
Ensembles d’adresses réseau¶
Ajoutés dans Incus 6.12, les ensembles d’adresses réseau fournissent un moyen de simplifier la définition d’ACL réseau référençant ces ensembles.
Tout comme les ACL, les ensembles d’adresses sont liés à chaque projet, et chaque ensemble peut contenir un certain nombre d’adresses IPv4 et IPv6. Les ensembles peuvent ensuite être utilisés dans les ACL comme source ou comme destination.
stgraber@dakara:~$ incus network address-set create cloudflare-dns
Network address set cloudflare-dns created
stgraber@dakara:~$ incus network address-set add cloudflare-dns 1.0.0.1
stgraber@dakara:~$ incus network address-set add cloudflare-dns 1.1.1.1
stgraber@dakara:~$ incus network address-set add cloudflare-dns 2606:4700:4700::1001
stgraber@dakara:~$ incus network address-set add cloudflare-dns 2606:4700:4700::1111
stgraber@dakara:~$ incus network acl create my-acl
Network ACL my-acl created
stgraber@dakara:~$ incus network acl rule add my-acl egress action=allow state=enabled
stgraber@dakara:~$ incus network acl rule add my-acl egress action=reject state=enabled destination='$cloudflare-dns'
stgraber@dakara:~$ incus config device override d13 eth0 security.acls=my-acl
Device eth0 overridden for d13
stgraber@dakara:~$ incus exec d13 -- ping linuxcontainers.org -c1 -W1
PING linuxcontainers.org (2602:fc62:a:1::7) 56 data bytes
64 bytes from rproxy.dcmtl.stgraber.org (2602:fc62:a:1::7): icmp_seq=1 ttl=59 time=8.60 ms
--- linuxcontainers.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.599/8.599/8.599/0.000 ms
stgraber@dakara:~$ incus exec d13 -- ping one.one.one.one -c1 -W1
PING one.one.one.one (2606:4700:4700::1111) 56 data bytes
--- one.one.one.one ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
Documentation : https://linuxcontainers.org/incus/docs/main/howto/network_address_sets/
Driver de stockage LINSTOR¶
Ajouté dans Incus 6.11, le driver LINSTOR permet la création de pools de stockage utilisant DRBD pour gérer la réplication des données entre différents systèmes.
Vous pouvez en apprendre plus sur LINSTOR sur leur site web : https://linbit.com/linstor/
Cela permet aux volumes en bloc d’être créés pour les conteneurs et les machines virtuelles, avec une copie primaire présente typiquement sur le serveur sur lequel l’instance tourne, et une copie répliquée présente sur un autre serveur du cluster.
Documentation du driver : https://linuxcontainers.org/incus/docs/main/reference/storage_linstor/
Guide d’utilisation : https://linuxcontainers.org/incus/docs/main/howto/storage_linstor_setup/
Documentation technique : https://linuxcontainers.org/incus/docs/main/reference/storage_linstor_internals/
Driver de stockage TrueNAS¶
Ajouté dans Incus 6.16, le driver TrueNAS permet l’utilisation d’un serveur TrueNAS distant comme pool de stockage pour les instances et volumes Incus.
Son comportement est similaire au driver de stockage ZFS (que TrueNAS utilise), mais, plutôt que d’interagir avec ZFS localement, le driver utilise l’API de TrueNAS pour effectuer les actions sur un serveur de stockage distant. Les volumes sont exposés au serveur Incus en iSCSI par le serveur TrueNAS.
Puisqu’il s’agit d’un driver de stockage distant (comme Ceph, Linstor et LVM en cluster), il peut être utilisé avec des clusters de serveurs Incus pour assurer des migrations fluides d’instances sans déplacement de disques.
root@truenas-incus:~# incus storage create demo truenas source=test/demo truenas.host=192.0.2.10 truenas.api_key=MY-KEY truenas.allow_insecure=true
Storage pool demo created
root@truenas-incus:~# incus launch images:debian/13 d13 --storage demo
Launching d13
root@truenas-incus:~# incus list
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
| d13 | RUNNING | 10.2.165.159 (eth0) | fd42:a815:51cf:d4bb:1266:6aff:fe51:ae56 (eth0) | CONTAINER | 0 |
+------+---------+---------------------+------------------------------------------------+-----------+-----------+
Documentation : https://linuxcontainers.org/incus/docs/main/reference/storage_truenas/
Définition de fonctionnalités CPU dans des groupes d’un cluster¶
Ajoutées dans Incus 6.4, les définitions de fonctionnalités CPU permettent de gérer de manière efficace des clusters de machines hétérogènes.
Il est ainsi possible d’avoir un groupe par modèle/génération de CPU, et de laisser Incus calculer un ensemble de flags CPU commun pour ces serveurs.
Par exemple, incus cluster group set foo instances.vm.cpu.x86_64.baseline=kvm64 instances.vm.cpu.x86_64.flags=auto permet à Incus de parcourir automatiquement les serveurs dans le groupe foo et de le laisser définir la clef de configuration flags avec l’ensemble des flags CPU en commun.
Mais cela permet également de définir votre propre configuration CPU ; par exemple, incus cluster group set foo instances.vm.cpu.x86_64.baseline=EPYCv2 instances.vm.cpu.x86_64.flags=-svm expose un CPU AMD EPYC de base de 2e génération, avec l’extension de virtualisation (svm) désactivée.
Liste complète des changements¶
Voici une liste complète de tous les changements apportés depuis Incus 6.23 :
Liste complète des commits
- shared/cliconfig: Shorten path to using keepalive proxy
- shared/cliconfig: Implement TLS cert/key/ca caching
- shared/cliconfig: Add support for encrypted TLS keys to keepalive proxy
- github: format INCUS_VERSION from tag in release workflow
- Added translation using Weblate (Georgian)
- client: Optionally skip blocking for OIDC authentication
- incus/version: Gracefully fail when server unreachable
- incusd/instance/agent-loader: Use Linux arch names
- incusd/instance/qmp: Add QuerySpice
- incusd/instance/qemu: Add SPICE detection logic
- incusd/instance/qemu: Disable SPICE on systems missing support
- incusd/instances/qemu: Rework qemuArchConfig
- incusd/instance/qmp: Add Query9pDevice
- incusd/instance/qemu: Add plan9 detection logic
- incusd/instance/qemu: Export plan9 drives only when supported
- incusd/instance/qemu: enable SPICE audio via feature gate
- incus: Un-export Command and Run functions
- incus-benchmark: Un-export Command and Run functions
- incus-simplestreams: Un-export Command and Run functions
- incus-agent: Un-export Command and Run functions
- incus-user: Un-export Command and Run functions
- lxd-to-incus: Un-export Command and Run functions
- lxc-to-incus: Un-export Command and Run functions
- fuidshift: Un-export Command and Run functions
- incus: Un-export remaining exported functions
- incus-migrate: Un-export remaining exported functions
- incus-benchmark: Un-export remaining exported functions
- incusd: Un-export remaining exported functions
- incus-benchmark: Remove unused function
- incusd: Fix bad type in format strings
- incusd/instance/qmp: Add QueryVirtioSoundDevice
- incusd/instance/qemu: Add virtio-sound detection logic
- incusd/instance/qemu: Omit audio device on systems without virtio-sound
- Translated using Weblate (Georgian)
- Translated using Weblate (Russian)
- incusd/storage: Delete dependent volumes on instance deletion
- tests: Test dependent volume deletion on instance deletion
- internal/incusos: Allow non-GET requests
- internal/incusos: Implement TriggerSystemUpdateCheck
- incusd: Trigger IncusOS update check on version mismatch
- incusd/response: Make pipeResponse flush headers ASAP
- incusd: Disallow setting the 'dependent' key on volume creation
- incusd/device: Update 'dependent' flag on device add and detach
- tests: Add additional tests for dependent volume handling
- incusd/instance/common: Don't perform costly storage actions when no snapshots
- incusd: Remove explicit caching mechanism in favor of implicit
- incusd/storage/zfs: Implement better caching
- incusd/storage/truenas: Implement better caching
- incusd/instances: Allow more concurency
- incusd/storage/truenas: Retry iSCSI map request
- shared/cliconfig: Avoid treating
=as part of a remote name - incusd/network/state: Use canAccessNetwork
- cmd/incus-simplestreams: Add flag for overriding product name
- incusd/storage/truenas: Use old-style ZFS types
- incusd/storage/zfs: Use old-style ZFS types
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Tamil)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Greek)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- shared/api: Switch to go-yaml/v4
- shared/cliconfig: Switch to go-yaml/v4
- shared/cmd: Switch to go-yaml/v4
- shared/subprocess: Switch to go-yaml/v4
- shared/validate: Switch to go-yaml/v4
- incusd/instance/drivers: Switch to go-yaml/v4
- incusd/storage: Switch to go-yaml/v4
- incus-agent: Switch to go-yaml/v4
- incus-migrate: Switch to go-yaml/v4
- incus-simplestreams: Switch to go-yaml/v4
- incusd/backup: Switch to go-yaml/v4
- incusd/storage/drivers: Switch to go-yaml/v4
- incusd: Switch to go-yaml/v4
- incus: Switch to go-yaml/v4
- test: Switch to go-yaml/v4
- gomod: Update dependencies
- incus: Update for new YAML empty reader behavior
- test: Fix ordering of godeps.list
- tests: Update for slight YAML differences
- incusd/device: Ignore 'not found' errors when updating dependent config during device add/remove
- incusd/storage: Add ShouldMigrateDependentVolume
- incusd/instance: Add support for disk name to ExportQcow2Block
- incusd/instance/drivers: Add support for cross-cluster dependent volumes migration
- incusd/storage: Add support for cross-cluster dependent volumes migration
- incusd/instance: Add HasDependentDisk and ForEachDependentDiskType to instance interface
- incusd/storage: use ForEachDependentDiskType and HasDependentDisk from instance
- incusd/instance: Pass additional parameter to Delete method
- incusd/storage: Pass additional parameter to Delete method
- incusd/instance: Move dependent volume deletion from storage to instance delete()
- incusd/storage: Move dependent volume deletion from storage to instance delete()
- incusd/storage: Fix race in caching logic
- incusd/storage: Fix potential deadlock
- incusd/migration: Implement cancelation in migration logic
- incusd/instances: Implement cancelation in exec logic
- incusd: Clarify shutdown message
- incusd: Limit request body to 1MiB by default
- incusd: Configure exceptions to the 1MiB limit
- incusd/instance: Rename deleteDependentVolumes to cleanupDependencies
- incus/server/network/ovn/nb: Add function to get PortGroups by Port UUID
- incus/server/network/ovn/driver: Cleanup stale instance port uuids from acl port groups on instance stop
- incusd/storage: Support optimized storage for dependent volumes
- incusd/storage: Improve logging during dependent volume creation from backup
- incusd/storage: Rename createDependentVolumes to createDependentVolumesFromBackup
- incusd/device: Add cleanupDependencies argument to Remove() method
- incusd/instance/drivers: Pass the cleanupDependencies flag to device Remove
- tests: Rewrite out-of-space test to use profiles
- incusd/storage: Improve comments on locks
- incusd/forksyscall: Handle mount arguments when using idmap
- incusd/storage: Use device name when importing dependent volumes from backup
- tests: Add tests for exporting/importing dependent volumes
- incusd/cluster/config: Clarify description of oidc.claim option
- doc: Update metadata
- incusd/device/nic_physical: Fix device validation
- doc: Update config
- gomod: Update dependencies
- incusd/instance: Add support for stateful snapshots for qcow2 volumes
- incusd/storage: Add support for stateful snapshots for qcow2 volumes
- incusd: Don't expose the API extension list pre-authentication
- incusd/device/nic_physical: Fix bridge handling
- incusd/device/nic_physical: Fix inheritance from network
- incusd/instances/qemu: Skip vmcoreinfo on ppc64le
- doc/image_format: Update Pongo2 website
- incusd/device/nic_bridged: Handle physical NICs
- incusd/instance/drivers: Fix live migration of instances with snapshots
- incusd/instance/qemu: Scale SCSI queues with CPUs
- incus: Enable admin recover and admin sql on all platforms
- api: storage_volume_nbd
- incusd/auth: Add can_connect_nbd
- client: Add GetStoragePoolVolumeBlockNBDConn
- incusd/storage_volumes: Add NBD API
- incusd/storage: Implement NBD functions
- doc/rest-api: Refresh swagger YAML
- incusd/instance: Implement ConnectNBD
- incus/storage/volume: Add NBD command
- i18n: Update translation templates
- incusd/instance/qmp: Add QueryBlockExports and QueryNBDBlockExports
- incusd/instance/drivers: Improve error when NBD server is already running
- incusd/instance: Export snapshot when VM is running to ensure consistency
- incusd/storage: Export snapshot when VM is running to ensure consistency
- incusd/storage/drivers: Implement ActivateTask
- incusd/storage: Support NBD export in offline mode
- incusd/instance/qmp: Add commands to manage dirty bitmaps
- shared/api: Add structs for managing dirty bitmaps
- incusd/instance: Add methods to manage dirty bitmaps
- incusd/storage: Add InstanceByVolumeName
- incusd: Add API endpoints for managing dirty bitmaps
- doc/rest-api: Refresh swagger YAML
- incusd/instance/lxc: Don't return nil when not implemented
- client: Forward skopeo errors
- incusd/storage: Add instanceStateful flag to volume snapshot operations
- incusd/device: Pass instanceStateful flag during instance snapshot
- incusd: Pass instanceStateful flag during instance snapshot
- incusd/apparmor/qemuimg: Expand symlinks
- incus: Fix Windows absolute paths
- incus: Enforce stricter directory checks
- tests: Add strict pull checks for directories
- i18n: Update translation templates
- incusd: Return bitmap endpoints by default, objects with recursion=1
- doc/rest-api: Refresh swagger YAML
- incusd/instance/qemu: Fix RTC handling on Windows
- incusd/instance/drivers: Allow exposing dirty bitmaps through NBD export in online mode
- incusd/storage: Allow exposing dirty bitmaps through NBD export in offline mode
- incusd/storage/drivers: Fix ordering in Qcow2DeletionCleanup
- incusd/instance/drivers: Improve snapshot creation rollback handling
- incusd/storage: Improve snapshot creation rollback handling
- internal/instance: Introduce volatile.vm.boot_state
- incusd/instance/qemu: Rename internal structs
- incusd/instance/qemu: Add new migration state volatile
- incusd/instance/qemu: Move topology functions to new file
- incusd/instance/qemu: Make use of new migration state logic
- incusd/instance/qemu: Don't export internal vcpus and numa nodes maps
- doc: Update config
- incusd/instance/qemu: Handle stateful detection corner case
- incusd/migrate: Set short timeouts on read/write of control data
- client: Fix bad error handling
- incusd/response/upgrade: Add small delay for NBD
- incus/server/network/ovn/nb: Mark route as discord when nexthop is 'discard'
- incus/server/network/ovn/driver: Only add discard route if it doesn't exist already
- incusd/storage: Improve qcow2 volume handling
- incusd/storage/drivers: Add syncBtrfs
- incusd/storage/drivers: Use 'qemu-img info' in read-only mode
- incusd/instances: Don't delete ephemeral instances on system shutdown
- api: Add projects_restricted_storage_pool_access extension
- incusd/project: Add support for restricted.storage-pools.access
- doc: Update config
- incusd/project: Make checkRestrictionsAndAggregateLimits validate pool access
- Translated using Weblate (Tamil)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Greek)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- shared/archive: Improve detection and error handling
- shared/subprocess: Cleanup pointless check
- incusd/seccomp: Cleanup pointless check
- incusd/migrate: Bump migration timeouts
- shared/util: Introduce SafeCopy
- incus-migrate: Switch io.CopyN to util.SafeCopy
- incus: Switch io.CopyN to util.SafeCopy
- incusd: Switch io.CopyN to util.SafeCopy
- client: Switch io.Copy to util.SafeCopy
- shared/ws: Switch io.Copy to util.SafeCopy
- shared/cliconfig: Switch io.Copy to util.SafeCopy
- shared/util: Switch io.Copy to util.SafeCopy
- internal/util: Switch io.Copy to util.SafeCopy
- internal/io: Switch io.Copy to util.SafeCopy
- internal/rsync: Switch io.Copy to util.SafeCopy
- lxd-to-incus: Switch io.Copy to util.SafeCopy
- lxc-to-incus: Switch io.Copy to util.SafeCopy
- incus-simplestreams: Switch io.Copy to util.SafeCopy
- incus-agent: Switch io.Copy to util.SafeCopy
- incus-user: Switch io.Copy to util.SafeCopy
- incus-migrate: Switch io.Copy to util.SafeCopy
- incus: Switch io.Copy to util.SafeCopy
- incusd: Switch io.Copy to util.SafeCopy
- Translated using Weblate (Russian)
- incusd/migration: Bump timeouts to 30s
- Translated using Weblate (Russian)
- incusd/instance/qemu: Fix boot state recording
- incusd/devices/disk: Lock creation of ISO images
- incusd: Increase devices tmpfs
- gomod: Update dependencies
- incusd/device/nic: Prevent USB NICs on migratable VMs
- incus/cluster: Tweak error message
- i18n: Update translation templates
- incus/info: Tweak wording in resources output
- i18n: Update translation templates
- incus/export: Improve target file handling
- incus/import: Improve stdin handling
- incus/storage_volume: Improve import/export file handling
- incus/storage_bucket: Improve import/export file handling
- tests: Add import from stdin and export to stdout
- i18n: Update translation templates
- incusd/instance/drivers/qmp: Wait for block job completion after issuing block-job-complete
- incusd/instance/drivers: Add support for handling BLOCK_JOB_COMPLETED and BLOCK_JOB_ERROR events
- incusd/migrate: Limit timeout to initial handshake
- shared/archive: Avoid concurrent calls to Wait
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Greek)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Georgian)
- Translated using Weblate (Georgian)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Tamil)
- incusd/images: Allow simpler HTTP headers
- incusd/storage/drivers: Extract unpackVolume and backupVolume to util
- incusd/storage/drivers: Make createParentSnapshotDirIfMissing public
- incusd/storage: Add support for export/import qcow2 in raw format
- Translated using Weblate (Portuguese)
- incusd/instance/edk2: Add support for seabios at bios-256k
- incus: Widen stdout checks in pull commands
- incus: Add cp-like flags to incus file push
- tests: Test cp-like flags in incus file push
- incus: Defer dereferencing error handling
- incus: Add cp-like flags to incus storage volume file push
- tests: Test cp-like flags in incus storage volume file push
- i18n: Update translation templates
- incusd/instance/qemu: Improve OS detection for FreeBSD
- incus-agent: Use psutil for process count
- Translated using Weblate (Portuguese)
- Translated using Weblate (Russian)
- incusd/instance/qemu: Use timeouts for agent operations
- incusd: Add validation for dependent volumes during copy request
- incusd: Allow copy only when all volumes are on remote storage
- incusd/storage: Include dependent disks in copy requests
- incusd/instance/drivers: Remove temporary snapshot block device after migration
- incusd/storage: Add support for migrating dependent volumes with a new name
- incusd/storage: Add support for copying dependent volumes on the same target when the root volume storage changes
- incusd/instance/drivers: Add support for live-migration of dependent volumes with a changed name
- incusd/instance/drivers: Add check to notify disk only during cluster move
- incusd/instances/qemu: Fix crash on nil qmp handler in RunJSON
- incusd/storage: Prevent migration of dependent volumes for snapshot instances
- shared/validate: Fix name validation on single character
- internal/linux: Add logging to ClearBlock
- Translated using Weblate (Russian)
- incusd/networks: Support targeting of network list
- incus/network: Add --target to network list
- i18n: Update translation templates
- doc/benchmark_performance: Mention GOPATH
- incus/instance/drivers/common: Add isErrorStatusCode function Signed-off-by: Leon Schoch git@darkress.xyz
- incus/instance/drivers/qemu: Early return state call in case instance is in error state Signed-off-by: Leon Schoch git@darkress.xyz
- incus/instance/drivers/lxc: Early return state call in case instance is in error state Signed-off-by: Leon Schoch git@darkress.xyz
- incusd/cgroup: Require Cgroup V2
- incusd/instance/lxc: Remove cgroup1 support
- incusd: Remove cgroup1 support
- incusd/apparmor: Remove cgroup1 support
- incusd/device: Remove cgroup1 support
- incusd/seccomp: Remove cgroup1 support
- incusd/sys: Remove cgroup1 support
- doc: Remove cgroup1 mentions
- Translated using Weblate (Russian)
- incus-agent: Work around issue when built with GO111MODULE=off
- incusd/storage/drivers: Add CanRestoreVolume
- incusd/storage/drivers: Run Qcow2Info in read-only mode
- incusd/storage: Add CanRestoreInstanceSnapshot and qcow2CanRestoreSnapshot
- incusd/instance/drivers: Check whether an instance snapshot can be safely restored
- incusd/storage/drivers: Fix migration import-shadowing
- incus; Fix copy/pasted list column description
- incus: Add missing example descriptions
- incus/profile: Clarify example description
- incus/admin_sql: Clarify behavior on standalone systems
- i18n: Update translation templates
- incus: Wrap addition of string flags
- incus: Wrap addition of string array flags
- incus: Wrap addition of integer flags
- incus: Wrap addition of boolean flags
- incus: Wrap addition of native integer flags
- incus: Generalize -f shorthand for --force
- incus: Generalize -f shorthand for --format
- incus: Generalize -t shorthand for --type
- incus: Generalize -a shorthand for --all
- i18n: Update translation templates
- incusd: Reset LXC feature detection
- incusd/cgroup: Update LXC baseline
- incusd/device: Update LXC baseline
- incusd/instance/lxc: Update LXC baseline
- incusd/seccomp: Update LXC baseline
- incus: Improve cp compatibility for pull operations
- tests: Add more thorough tests for pull/push operations
- client: Add bitmap manipulation functions
- incusd: Remove kernel feature detection
- incusd/sys: Update kernel baseline
- incusd/instance/lxc: Update kernel baseline
- incusd/device: Update kernel baseline
- incusd/apparmor: Update kernel baseline
- incusd/seccomp: Update kernel baseline
- incusd/seccomp: Update LXC baseline
- incusd/instance/lxc: Drop forknet info fallback in networkState
- incusd/forknet: Remove unused info subcommand
- incusd/device/proxy: Drop pidfd fallback in setupProxyProcInfo
- incusd/seccomp: Assume pidfd kernel support in MakePidFd
- incusd/instance/lxc: Drop pidfd fallback paths
- shared/idmap: Keep respecting INCUS_IDMAPPED_MOUNTS_DISABLE
- doc/requirements: Expand on minimum versions
- incusd: Drop kernel version checks (6.12 baseline)
- incusd/instance/qemu: Drop QEMU version checks below 8.2
- incusd/storage/zfs: Drop ZFS version checks below 2.1.0
- incusd/storage/btrfs: Drop btrfs version checks below 6.12.0
- incusd/storage/lvm: Drop LVM version checks below 2.03.11
- incusd/storage/truenas: Bump baseline to 0.7.7
- incusd/firewall/nftables: Drop nftables version checks below 1.0.0
- incusd/apparmor: Drop AppArmor version checks below 3.0.0
- incusd/rsync: Drop rsync version checks below 3.2.0
- incusd/network/bridge: Drop dnsmasq version checks below 2.90
- Translated using Weblate (Portuguese)
- incusd/storage/linstor: Update comment
- incus/config_trust: Drop legacy [
:] ATOM syntax - shared/cliconfig: Drop legacy
syntax - incus/remote_unix: Drop legacy
syntax - incus/color: Add warning prefix
- incus/usage: Add deprecation warning for the
syntax - incus/storage_volume: Drop legacy [custom/] prefix
- tests: Drop legacy [custom/] prefix
- i18n: Update translation templates
- incusd/firewall: Drop xtables/iptables/ebtables backend (nftables only)
- doc: Drop xtables/iptables/ebtables references
- tests: Drop xtables firewall driver support
- github: Automatically close untyped issues
- github: Add disclaimer on bug reports
- incusd/storage: Allow overriding pool for dependent disk during migration
- incusd/migration: Add DeviceName field to DependentVolume
- client: Pass device override information during copy
- incusd/migration: Add support for overriding disk device pool during migration
- incusd/storage: Add support for overriding disk device pool during migration
- incusd/instance: Add UpdateDevices
- incusd/instance: Add support for overriding disk device pool during migration
- incusd: Add support for overriding disk device pool during migration
- incusd: Fix cross-server migration being used instead of intra-cluster migration when storage and target are specified
- incusd/storage/linstor: Tune DrbdOptions/Disk/rs-discard-granularity on pool creation
- incus/storage: Fix typo
- i18n: Update translation templates
- incus/cluster: Fix spelling of YAML
- i18n: Updatee translation templates
- incus/network_zone: Fix missing example description
- i18n: Updatee translation templates
- incus/storage_bucket: Fix bad list column help message
- i18n: Updatee translation templates
- internal/rsync: Fix gofumpt
- internal/server/cgroup: Fix gofumpt
- incusd/instances: Fix gofump
- incusd/storage/s3: Add in-process S3 handler package
- incusd/storage/s3: Switch to new listener
- incusd/storage/s3: Migrate data from minio to new format
- incusd/storage: Remove remaining minio interactions
- incusd/storage/s3: Remove minio supervisor and ActivateBucket
- tests: Replace minio with simple built-in S3 endpoint
- incusd: Switch minio S3 client for AWS SDK
- incusd/storage/s3: Derive AWS region from S3 endpoint URL
- gomod: Update dependencies
- incusd: Patch LINSTOR to set DrbdOptions/Disk/rs-discard-granularity
- incus/server/network/ovn/driver: Validate that networks external ips are not used by another network, forward or loadbalancer
- incusd/images: Add image server restriction check in image URL download path
- incusd/storage/bucket: Validate expected metadata on import
- incusd/storage/volume: Validate snapshot entries on import
- incusd/storage/instance: Properly check dependent volumes on import
- incusd/network/ovn: Fix TLS validation logic
- incusd/storage/instance: Fix bad snapshot index calculation
- incusd/storage/s3: Fix nil pointer dereference on truncated input
- incusd: Limit tarball YAML reads to 1MiB
- incusd: Fix nil pointer dereference in instance backup restore
- incusd: Use QuotaWriter for backup and ISO uploads
- api: Add server_shutdown_action extension
- incusd/cluster/config: Add core.shutdown_action
- doc: Update metadata
- incusd/evacuate: Extract evacuateStopInstance and evacuateMigrateInstance helpers
- incusd: Implement core.shutdown_action
- incus/cluster: Don't attempt to connect during join
- incus/image/copy: Add --reuse flag for --copy-aliases
- i18n: Update translation templates
- incus/server/network/ovn/driver: Fix duplicate external network ip check on network creation
- doc/metrics: Mention Loki requirement
- incusd: Add missing path parameters
- doc/rest-api: Refresh swagger YAML
- Makefile: Add help target and remove tags target
- tests: Use a 5MiB test file for buckets
- incus/cluster: Simplify logic
- api: instances_placement_scriptlet_rebalance
- shared/api/scriptlet: Add InstancePlacementReasonRebalance
- incusd/cluster: Run placement scriptlet during re-balancing
- doc/clustering: Add new scriptlet reason
- incusd/instance/qemu: Fix locking around VM reset
- incusd/device/nic: Set next-hop based on configured IP addresses
- tests: Adjust to work with next-hop
- incusd/instance/agent-loader: Remove some trailing whitespaces
- incus/storage_bucket/key: Fix incorrect list column description
- incus/launch: Add missing example description
- incus/config_template: Add missing example description
- incus/create: Add missing example description
- incus/network_acl: Add missing example description
- incus/network_address_set: Add missing example description
- incus/network_integration: Add missing example description
- incus/network_zone: Add missing example description
- incus/storage: Add missing example description
- i18n: Update translation templates
- incusd/device/disk: Auto-create missing volume sub-directories
- incusd/instance: Allow initial keys for sub-paths
- doc/devices/disk: Update to cover sub-path creation
- doc: Update config
- tests: Extend sub-path tests to cover directory creation
- incusd/instance/qemu: Don't emit shutdown lifecycle event during restart
- incusd/instance/qemu: Don't restart the VM on shutdown
- incusd/instance/console: Emit a single instance-console event on SPICE
- gomod: Update dependencies
- Makefile: Switch to new golangci-lint install script
- github/workflows/tests: Configure PPAs without apt-add-repository
- github/workflows/tests: Install mdl from rubygems instead of snap
- github/workflows/tests: Build cowsql and raft from source
- Rewrite Go import path to v7
- gomod: Update dependencies
Documentation¶
La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/
Installation¶
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.
Paquets 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/7.0.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
Migration depuis LXD¶
Un outil de migration, lxd-to-incus, permet une migration en place de LXD vers Incus.
Il a été testé avec des versions de LXD de la 4.0 LTS à la dernière version LXD 5.21.
Il permet une migration très rapide de LXD vers Incus, en vérifiant automatiquement à l’avance les conflits potentiels.
Pour plus d’informations, consultez : https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/
Support¶
Incus 7.0 LTS sera supporté pendant un total de 5 ans (jusqu’en juin 2029).
Durant les 2 premières années, de nouvelles versions mineures contenant des corrections de bugs, des mises à jour de sécurité et d’autres améliorations mineures seront publiées. Après cette période initiale de 2 ans (après la sortie d’Incus 8.0 LTS), Incus 7.0 LTS ne recevra plus que des mises à jour de sécurité pendant les 3 années restantes.
Cela correspond à ce que nous faisons pour nos autres projets (LXC et LXCFS) depuis 10 ans.
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
Incus 6.23 est maintenant disponible¶
27 mars 2026
Introduction¶
L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.23 !
Cette version est la dernière de la série 6.x, précédant la sortie d’Incus 7.0 LTS prévue pour le 30 avril.
C’est également une nouvelle version très complète, avec la résolution d’un bon nombre de vulnérabilités (en grande partie grâce à une analyse en cours de 7asecurity) et de bugs, des améliorations des performances, et de nouvelles fonctionnalités étendant le support des OS invités et rendant la gestion du stockage plus flexible avec les volumes dépendants.
Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/
Nouveaux mainteneurs¶
Cette nouvelle version est l’occasion pour le projet Incus d’accueillir deux nouveaux mainteneurs :
- Benjamin Somers
- Piotr Resztak
Ils contribuent tous deux depuis un certain temps à Incus, et ont été impliqués dans le développement de bon nombre de nouvelles fonctionnalités et correctifs de bugs dans une grande partie de la base de code d’Incus. Ils sont donc suffisamment qualifiés pour aider à la revue de code et à l’orientation et à la maintenance du projet.
Ils rejoignent les mainteneurs historiques :
- Aleksa Sarai
- Christian Brauner
- Free Ekanayaka
- Serge Hallyn
- Stéphane Graber
- Tycho Andersen
Correctifs de sécurité¶
Cette version corrige 6 vulnérabilités :
- CVE-2026-33711 (faible)
- CVE-2026-33542 (modérée)
- CVE-2026-33743 (modérée)
- CVE-2026-33898 (haute)
- CVE-2026-33897 (critique)
- CVE-2026-33945 (critique)
À l’exception de la CVE-2026-33542, toutes ces vulnérabilités ont été identifiées dans le cadre d’une analyse de sécurité toujours en cours par 7asecurity.
Les correctifs ont été rétroportés sur notre branche LTS (stable-6.0), et les distributions proposant Incus LTS ont été notifiées et ont publié (ou vont prochainement publier) des paquets mis à jour.
Nouvelles fonctionnalités¶
Volumes de stockage dépendants¶
Incus supporte désormais des volumes dits « dépendants ». Ils se comportent de la même manière que des volumes personnalisés attachés à une instance, à la différence qu’un lien explicite est créé entre le volume et l’instance.
Supprimer une instance comportant des volumes dépendants supprimera également ces derniers ; prendre un instantané de l’instance prendra aussi un instantané de ses volumes dépendants ; les sauvegardes et les migrations inclueront également ces derniers.
stgraber@castiana:~$ incus launch images:debian/13 c1
Launching c1
stgraber@castiana:~$ incus storage volume create default c1-extra dependent=true
Storage volume c1-extra created
stgraber@castiana:~$ incus config device add c1 extra disk pool=default source=c1-extra dependent=true path=/extra
Device extra added to c1
stgraber@castiana:~$ incus storage volume snapshot create default c1-extra test
Error: Direct snapshots are not allowed for dependent volumes
stgraber@castiana:~$ incus snapshot create c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------------------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------------------+------------+
| foo | 2026/03/27 18:54 EDT | |
+------+----------------------+------------+
stgraber@castiana:~$ incus snapshot delete c1 foo
stgraber@castiana:~$ incus storage volume snapshot list default c1-extra
+------+----------+------------+
| NAME | TAKEN AT | EXPIRES AT |
+------+----------+------------+
Support des VM FreeBSD¶
L’agent d’Incus peut à présent être lancé sur des invités FreeBSD.
De la même manière que pour macOS, l’agent nécessite une connexion réseau avec Incus, et donc que la VM soit dans un réseau géré par Incus.
Des images de FreeBSD 14 et 15 construites quotidiennement sont disponibles sur notre serveur d’images.
stgraber@castiana:~$ incus launch images:freebsd/15.0 bsd -c security.secureboot=false --vm
Launching bsd
stgraber@castiana:~$ incus wait bsd agent && incus exec bsd sh
# freebsd-version·
15.0-RELEASE
NOTE : L’agent peut mettre du temps à arriver dans toutes les distributions Linux, aussi les systèmes exécutant Incus 6.23 n’auront pas tous la possibilité d’en utiliser les fonctionnalités. Un redémarrage de la VM en mode mono-utilisateur permet de définir un mot de passe pour l’utilisateur root, permettant d’utiliser la console.
Nouveau parseur pour la CLI Incus¶
Un certain nombre d’améliorations ont été apportées à l’outil en ligne de commande incus. Celui-ci peut désormais mieux identifier les erreurs dans l’utilisation des arguments, et utilise des couleurs pour améliorer la clarté des messages d’aide.

Support de la désactivation des annonces de la passerelle en DHCP¶
Il est désormais possible de définir ipv4.dhcp.gateway avec la valeur spéciale none pour indiquer à Incus de ne pas pousser de routes en DHCP.
Cette option est particulièrement utile lorsque des instances sont connectées à plusieurs réseaux, certains desquels ne routant pas de trafic vers l’extérieur.
Support de ipv4.dhcp.gateway sur les réseaux OVN¶
En lien avec la fonctionnalité précédente, les réseaux OVN supportent à présent l’option ipv4.dhcp.gateway, y compris sa nouvelle valeur none.
Cela permet qu’une instance du réseau OVN soit utilisée comme passerelle à la place du routeur virtuel, ou encore de désactiver l’annonce de route par défaut.
Support de io.bus sur les cartes réseau OVN¶
Il est maintenant possible d’utiliser io.bus avec les cartes réseau OVN.
Cela permet d’ajouter à des VM des interfaces réseau USB connectées à des réseaux OVN.
Événements de cycle de vie pour l’agent Incus¶
Deux nouveaux événements de cycle de vie ont été ajoutés dans cette version :
- instance-agent-started
- instance-agent-stopped
Leurs noms parlent d’eux-mêmes. Ces événements sont limités aux VM, et sont émis dès qu’Incus reçoit une notification de l’agent sur sa connexion série.
Réécriture de incus file pull et incus storage volume file pull¶
La logique de récupération de fichiers des deux commandes a été réécrite pour mieux correspondre au comportement de la commande cp.
Cette modification permet de mieux gérer les liens symboliques, aves les nouvelles options suivantes :
-L(Toujours suivre les liens symboliques source)-H(Seulement suivre les liens symboliques source fournis en arguments)-P(Ne jamais suivre les liens symboliques source)
Métriques relatives aux projets¶
De nouvelles métriques ont été ajoutées pour fournir des statistiques sur les projets.
stgraber@castiana:~/Code/lxc/incus (git:lxc/main)$ incus query /1.0/metrics | grep _project_
# HELP incus_project_resources_total Current resource count in a project.
# TYPE incus_project_resources_total gauge
incus_project_resources_total{project="default",resource="containers"} 0
incus_project_resources_total{project="default",resource="virtual-machines"} 3
incus_project_resources_total{project="default",resource="images"} 17
incus_project_resources_total{project="default",resource="profiles"} 1
incus_project_resources_total{project="default",resource="networks"} 3
incus_project_resources_total{project="default",resource="storage-volumes"} 6
incus_project_resources_total{project="demo",resource="containers"} 0
incus_project_resources_total{project="demo",resource="virtual-machines"} 0
incus_project_resources_total{project="demo",resource="images"} 0
incus_project_resources_total{project="demo",resource="profiles"} 1
incus_project_resources_total{project="demo",resource="networks"} 0
incus_project_resources_total{project="demo",resource="storage-volumes"} 0
incus_project_resources_total{project="user-1001",resource="containers"} 0
incus_project_resources_total{project="user-1001",resource="virtual-machines"} 0
incus_project_resources_total{project="user-1001",resource="images"} 2
incus_project_resources_total{project="user-1001",resource="profiles"} 1
incus_project_resources_total{project="user-1001",resource="networks"} 0
incus_project_resources_total{project="user-1001",resource="storage-volumes"} 0
API de bas niveau pour réparer les instances¶
Un nouveau chemin d’API a été ajouté sous /1.0/instances/NOM/debug/repair.
Il permet à Incus d’exposer des actions de réparation de bas niveau, utiles notamment dans des environnements restreints dans lesquels il n’est pas possible d’inspecter les données stockées sur disque (IncusOS en est un bon exemple).
Pour le moment, une seule action est fournie : rebuild-config-volume, permettant pour les instances utilisant du stockage en bloc QCOW2 avec LVM en cluster d’en reconstruire le volume de configuration, ce qui permet notamment de se remettre de corruptions BTRFS suivant une extinction forcée d’un serveur.
Liste complète des changements¶
Voici une liste complète de tous les changements apportés par cette version :
Liste complète des commits
- incusd/instance: Allow custom volume snapshot create/delete when attached to running instance
- incusd/server: Allow custom volume snapshot create/delete when attached to running instance
- shared/cliconfig: Add lock to prevent panic
- incusd/endpoints/starttls: Report correct ServerName
- cmd/generate-database: fix linter complaints - #2636
- build(deps): bump actions/upload-artifact from 6 to 7
- incusd/network/bridge: Support disabling DHCPv4 router announcement
- incusd/network/ovn: Implement ipv4.dhcp.gateway
- doc: Update config
- internal/server/firewall: fix linter complaints - #2636
- internal/server/sys: fix linter complaints - #2636
- internal/server/project: fix linter complaints - #2636
- internal/server/util: fix linter complaints - #2636
- incusd/instance/lxc: Add /usr/bin/init to OCI PID1 list
- internal/server/seccomp: fix linter complaints - #2636
- internal/server/migration: fix linter complaints - #2636
- internal/server/task: fix linter complaints - #2636
- incus/usage: Add a way to show the user a parsing rule different from the one in use
- incus/usage: Small tweaks before adding parsers
- api: instances_debug_repair
- shared/api: Add InstanceDebugRepairPost
- doc/rest-api: Refresh swagger YAML
- incusd/storage: Implement ActivateTask
- incusd/instance/debug: Implement instance repair API
- incus/usage: Add parsers
- incus: Add --explain global flag
- incus/usage: Add legacy support functions
- incus/action: Switch to new parser
- incus/admin_init: Switch to new parser
- incus/admin_recover: Switch to new parser
- incus/admin_shutdown: Switch to new parser
- incus/admin_sql: Switch to new parser
- incus/admin_waitready: Switch to new parser
- incus/alias: Switch to new parser
- incus/cluster: Switch to new parser
- incus/cluster_group: Switch to new parser
- incus/cluster_role: Switch to new parser
- incus/config: Switch to new parser
- incus/config_device: Switch to new parser
- incus/config_metadata: Switch to new parser
- incus/config_template: Switch to new parser
- incus/config_trust: Switch to new parser
- incus/console: Switch to new parser
- incus/delete: Switch to new parser
- incus: Switch
copyandmoveto new parser - incus: Switch
createandlaunchto new parser - incus/debug: Switch to new parser
- incus/exec: Switch to new parser
- incus/export: Switch to new parser
- incus/file: Switch to new parser
- incus/image: Switch to new parser
- incus/image_alias: Switch to new parser
- incus/import: Switch to new parser
- incus/info: Switch to new parser
- incus/list: Switch to new parser
- incus/manpage: Switch to new parser
- incus/monitor: Switch to new parser
- incus/network: Switch to new parser
- incus/network_acl: Switch to new parser
- incus/network_address_set: Switch to new parser
- incus/network_allocations: Switch to new parser
- incus/network_forward: Switch to new parser
- incus/network_integration: Switch to new parser
- incus/network_load_balancer: Switch to new parser
- incus/network_peer: Switch to new parser
- incus/network_zone: Switch to new parser
- incus/operation: Switch to new parser
- incus/profile: Switch to new parser
- incus/project: Switch to new parser
- incus/publish: Switch to new parser
- incus/query: Switch to new parser
- incus/rebuild: Switch to new parser
- incus/remote: Switch to new parser
- incus/rename: Switch to new parser
- incus/snapshot: Switch to new parser
- incus/storage: Switch to new parser
- incus/storage_bucket: Switch to new parser
- incus/storage_volume: Switch to new parser
- incus/top: Switch to new parser
- incus/version: Switch to new parser
- incus/wait: Switch to new parser
- incus/warning: Switch to new parser
- incus/webui: Switch to new parser
- test: Fix
incus config settests - test: Fix
incus profile assigntests - test: Fix
incus storage volume attachtests - test: Fix
incus storage volume snapshot showtests - test: ISO import now allows setting no volume name
- go.mod: Make runewidth a direct dependency
- Makefile: Properly set POT encoding
- i18n: Update translation templates
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Russian)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Tamil)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- incusd/operations: Fix missing Unlock
- doc: Fix typo
- incusd: Fix typo
- Translated using Weblate (Portuguese)
- incusd/metrics: Increase node-exporter timeout to 5s
- doc: Add preselects to wordlist
- Translated using Weblate (Swedish)
- incusd/instance_logs: Prevent bad values for exec-output
- incus-migrate: Restrict OVA unpack path
- incus/network_allocation: Fix project handling
- incusd/network_allocations: Use canAccessNetwork
- incusd/instance/qemu: Relax SEV check
- incus: Fix import shadowing
- incusd/storage_volumes: Use switch statement
- incusd/network/common: Use FPrintf instead of WriteString
- incusd/device/nic_physical: Drop support for connected key
- incusd/device/nic_ovn: Add io.bus key for OVN NICs
- doc: Update config
- api: network_io_bus_ovn
- shared/api: add new instance-agent events
- internal/server: fire instance-agent events when agent status changes
- doc: add instance-agent entries to lifecycle events
- incus/usage: Defer remote connection
- incusd/backup: Make extra sure backup.yaml is consistent on disk
- incus-agent/darwin: Factor BSD-like bits out
- incus-agent/freebsd: Add FreeBSD agent
- incusd/instance/agent-loader: Add FreeBSD files
- incusd/instance/qemu: Support FreeBSD
- doc/instance/create: Add details for FreeBSD
- doc/wordlist: Update wordlist
- incusd/instance/lxc: Stop any forkfile instances prior to migration
- incusd/storage/zfs: Freeze ZFS instances when using block_mode
- incusd/storage/zfs: Don't create temporary snapshot for inactive volumes
- incusd/storage/zfs: Don't unmap a mounted snapshot
- incus/storage/volume: Fix image deletion
- incusd/storage: Don't allow loop pools on IncusOS
- Translated using Weblate (Swedish)
- cmd/incus: fix log in sftpRecursiveMkdir
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- devcontainer: update Go version and pipx install command
- Translated using Weblate (Swedish)
- incus/cluster: Fix default column layout in help text
- i18n: Update translation templates
- incus: Fix indent on --sub-commands
- incusd/storage: Add readonly 'dependent' volume config key
- incusd/device: Add 'dependent' config key to disk device
- incusd: Prevent direct snapshot creation and deletion on dependent volumes
- incusd/storage: Create and delete dependent volume snapshots with instance snapshots
- incusd/storage: Support restoring an instance with dependent volumes from a snapshot
- incusd/storage/drivers: Add ability to set archive files path when exporting/importing volumes
- incusd/backup: Add DefaultBackupPrefix constant
- incusd/backup/config: Add DependentVolumes field to Config struct
- incusd: Pass path info when exporting/importing custom volume
- incusd/storage: Add support for exporting/importing dependent volumes
- incusd/storage/drivers: Create QCOW2 config volume snapshot during unpack if needed
- incusd/export: Add support for root-only flag
- incusd: Pass rootOnly argument where needed
- shared/api: Add RootOnly to InstanceBackupsPost
- incusd/backup: Add support for dependent volumes to backup
- incusd/db/cluster: Add root_only column to instances_backups
- incusd/db: Read and write 'root_only' field in table operations
- incusd/storage: Conditionally export dependent volumes
- incusd/instance: Pass rootOnly argument where needed
- tests: Add tests for dependent volumes
- doc/rest-api: Refresh swagger YAML
- doc: Update metadata
- api: Add dependent extension
- i18n: Update translation templates
- Introduce goreleaser
- incusd/daemon: Allow internal and os API during startup
- api: Add project_metrics extension
- incusd/metrics: Add project resource, limit and usage metrics
- doc: Add project metrics documentation
- incus-agent: Fix typos
- incusd/instance/agent-loader: Make stop kill the daemon instead of the agent
- incus-agent: Add hostname update logic for FreeBSD
- github: Disable shellcheck for rc.d services
- incusd/storage/drivers: Disallow for qcow2 custom block volumes
- doc: Document restriction for qcow2 custom block volumes
- cmd/incus: Print newly-created snapshot name if unspecified
- i18n: Update translation templates
- incus/info: Allow querying alternative log files
- i18n: Update translation templates
- incus: Add colors
- go.mod: Make color a direct dependency
- golangci: ignore errcheck for colored printers
- shared/cmd: Remove non-translatable colon
- incus: Refactor description strings
- incus-simplestreams: Re-add colons in description headers
- incusd: Re-add colons in description headers
- Makefile: Add missing packages to translate
- i18n: Update translation templates
- incusd/storage: Remove renaming of config volume Btrfs subvolume
- incusd/storage/drivers: Switch Btrfs subvolume naming to 'instance-' prefix
- incusd: Add patch to rename existing Btrfs subvolumes from '
-' to 'instance-' - incusd/device: Add support for partial device validation
- incusd: Pass partial validation flag to device validation functions
- incusd/instance: Pass partial validation flag to device validation functions
- incusd/migration: Add protobuf definitions to support dependent volume migration
- incusd/migration: Add structs and helper functions for dependent volume migration
- incusd: Switch to common VolumeSnapshotToProtobuf
- incusd/storage: Add support for dependent volumes migration
- incusd/instance: Add support for dependent volumes migration
- incusd: Add support for removing dependent volumes on source after migration
- internal/util: Fix LogPath logic to work with logs volume
- incusd/instances: Use internalUtil.LogPath
- incusd/daemon_storage: Fix log directory handling after LogPath change
- incus: Disable colors in parsing error messages
- incus: Print a new line before printing parsing errors
- shared/ws: Remove CheckOrigin bypass
- incusd/s3: Use standard TLS config on S3 API calls
- incusd/auth/oidc: Tighten cookie policy
- incus-agent: Tighten HTTP listener configuration
- incusd: Tighten HTTP listener configuration
- incusd/certificates: Prevent any type change
- tests: Confirm certificate type can't be changed
- incus: Add
no_colorconfig key - incusd/seccomp: Limit the new mount API system calls we block
- shared/validate: Allow LZ4 compression
- incus-migrate: Fix OVA handling within os.Root
- incus-migrate: Allow importing OVAs from URLs
- client: Make ImageFileRequest require a ReadWriteSeeker
- incus: Update for changes to incus.ImageFileRequest
- incusd: Update for changes to incus.ImageFileRequest
- client/simplestreams: Validate the full image hash
- incusd/instance_console: Prevent symlink attacks
- incusd/storage/s3: Don't assume backup structure
- incusd/instance: Use restricted pongo2 parser
- incus/remote: Actually validate the token code in
incus webui - doc/authentication: Clarify the type of incus.allowed_subnets
- incusd/auth/oidc: Cleanup and tighten subnet claim handling
- incus-agent: Use same YAML version as rest of code base
- incusd/network: Switch to backoff/v5
- incusd/network: Switch to go-criu/v8
- shared/logger: Implement basic slog wrapper
- incusd/bgp: Port to go-bgp/v4
- Makefile: Bump to Go 1.25.6
- gomod: Update dependencies
- github: Allow GHSA-4p9m-8gc4-rw2h (no fix available)
- incus/usage: Fix edge case
- Translated using Weblate (Tamil)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Russian)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- doc: Remove config-options page
- Added translation using Weblate (Greek)
- incusd/instance/drivers: Refactor live migration - extract common logic
- incusd/storage/drivers: Prevent setting the 'snapshots.XYZ' keys on dependent volumes
- incusd/device: Use ValidateDependentConfigKey for dependent config validation
- incus: Add cp-like flags to incus file pull
- tests: Test cp-like flags in incus file pull
- incus/storage_volume: Add cp-like flags to incus storage volume file pull
- tests: Test cp-like flags in incus storage volume file pull
- i18n: Update translation templates
- incusd/instances_post: Add extra validation during backup import
- incus/import: Fix bad rendering on error
- incusd/device: Allow live migration of dependent disks
- incusd/instance/drivers: Add support for live migration of dependent disks
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Tamil)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Russian)
- Translated using Weblate (Russian)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Greek)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Portuguese)
- Translated using Weblate (Portuguese)
- Translated using Weblate (French)
- Translated using Weblate (Russian)
- incusd/instance/qemu: Add image.requirements.cdrom_cloud_init key
- doc: Update config
- incusd/daemon_storage: Don't unmount logs path on shutdown
- incusd/instance/lxc: Wait after thawing
- incusd/instance/lxc: Confine credentials write to credentials directory
- incusd/response: Make sftpResponse generic
- incusd: Update for UpgradeResponse
- client: Move to generic upgrader
- Translated using Weblate (Russian)
- Translated using Weblate (Portuguese)
- Translated using Weblate (French)
- incusd/storage/lvm: Use shared access mode for ISO
- incusd/storage/truenas: Fix VM rename
- incus-agent: Fix router to avoid global match
- incusd/instance/lxc: Include config.json on publish
- doc/images_create: Mention that OCI container publishing isn't recommended
- incus: Complete all configs keys
- incusd/instance/lxc: Relax handling of initial.
- incusd/storage/volume/list: Fix project handling in all-projects queries
- incusd/seccomp: Fix mknod in /dev
- incus: Don't hang on password prompt when run from script
- gomod: Update dependencies
- Release Incus 6.23
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.23.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
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 !
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’instanceincus_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.trustedconfiguration key - internal/instance: Add
volatile.<name>.last_state.vf.trusted - tests: Add tests for SR-IOV
security.trustedproperty - 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
Incus 6.21 est maintenant disponible¶
23 janv. 2026
Introduction¶
L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.21 !
Nous démarrons 2026 avec des correctifs de sécurité, mais ce n’est pas tout : nous avons des améliorations attendues depuis longtemps dans notre CLI, une utilisation simplifiée du SR-IOV, de meilleures performances au démarrage, et plus encore !
Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/
Correctifs de sécurité¶
Rory McNamara, de snyk.io, a remonté deux problèmes de sécurité majeurs.
Ces deux problèmes permettent une élévation de privilèges à des utilisateurs aux droits restreints (utilisateurs locaux dans le groupe incus ou utilisateurs distants avec un certificat TLS restreint ou une configuration OpenFGA / un scriptlet équivalents).
- CVE-2026-23953 (injection de retour à la ligne dans une variable d’environnement)
- CVE-2026-23954 (lecture/écriture arbitraire de fichiers via des templates)
Ces deux problèmes sont corrigés dans cette version, des rétroportages sont disponibles dans la branche Incus 6.0.x, et des mises à jour de sécurité arrivent dans les diverses distributions Linux.
Nouvelles fonctionnalités¶
Commande incus wait¶
Une nouvelle commande, incus wait, a été ajoutée afin de permettre d’attendre que certains événements se produisent sur une instance donnée :
- L’arrivée de l’instance dans un état donné
- Le bon lancement de son agent
- L’obtention d’une adresse IP
La commande pourra être étendue dans le futur avec de nouvelles conditions utiles.
stgraber@castiana:~$ incus launch images:debian/13 v1 --vm && incus wait v1 agent && incus exec v1 -- echo "Hello world"
Launching v1
Hello world
Sélection automatique de fonctions SR-IOV pour les interfaces réseau¶
Les interfaces réseau SR-IOV ont à présent la même logique de sélection dynamique que les GPU, introduite il y a quelques versions.
Cela permet d’ajouter des interfaces réseau en spécifiant le constructeur et le modèle de la carte, peu importe le nombre d’interfaces physiques présentes sur le système. Incus choisira ensuite la carte optimale, en équilibrant les VF entre les différentes cartes et ports disponibles.
stgraber@dakara:~$ incus create images:debian/13 sriov
Creating sriov
stgraber@dakara:~$ incus config device add sriov eth0 nic nictype=sriov vendorid=8086 productid=10fb
Device eth0 added to sriov
stgraber@dakara:~$ incus start sriov
Documentation : https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#id2
Propriétés attached et connected pour les interfaces réseau¶
Deux nouvelles propriétés sont maintenant disponibles pour la plupart des interfaces réseau :
attachedcontrôle le fait que la carte soit attachée ou non à l’instance. Définir cette option àfalsepermet de conserver la configuration de la carte, tout en s’assurant que celle-ci soit pas vue par l’instance.connectedcontrôle l’état du lien réseau. Définir cette option àfalsepermet à l’instance de continuer à voir la carte réseau, mais celle-ci ne fournira aucune connectivité.
Voici un exemple de leur utilisation :
stgraber@dakara:~$ incus launch images:debian/13 v1 --vm
Launching v1
stgraber@dakara:~$ incus exec v1 -- ping6 -n ipv6.google.com -c1
PING ipv6.google.com (2607:f8b0:4023:1804::71) 56 data bytes
64 bytes from 2607:f8b0:4023:1804::71: icmp_seq=1 ttl=113 time=14.2 ms
--- ipv6.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.151/14.151/14.151/0.000 ms
stgraber@dakara:~$ incus config device override v1 eth0 connected=false
Device eth0 overridden for v1
stgraber@dakara:~$ incus exec v1 -- ping6 -n ipv6.google.com -c1
ping6: ipv6.google.com: Temporary failure in name resolution
stgraber@dakara:~$ incus config device set v1 eth0 connected=true
stgraber@dakara:~$ incus exec v1 -- ping6 -n ipv6.google.com -c1
PING ipv6.google.com (2607:f8b0:4023:1804::64) 56 data bytes
64 bytes from 2607:f8b0:4023:1804::64: icmp_seq=1 ttl=111 time=17.0 ms
--- ipv6.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.960/16.960/16.960/0.000 ms
stgraber@dakara:~$ incus config device set v1 eth0 attached=false
stgraber@dakara:~$ incus exec v1 -- ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
Démarrage d’instances en parallèle¶
Jusqu’à présent, toutes les instances marquées pour démarrer automatiquement au démarrage du système hôte étaient démarrées séquentiellement, en respectant les priorités et délais définis.
Pour accélérer leur démarrage sur des systèmes en comportant un grand nombre, Incus les sépare en deux catégories : celles avec une priorité de démarrage ou un délai, et celles sans. Ces dernières sont démarrées en parallèle, à raison d’une instance tous les 4 cœurs CPU, puis les autres démarrent en respectant leurs priorités.
Restrictions réseau via des claims OIDC¶
Une nouvelle fonctionnalité avancée à destination des personnes utilisant l’authentification OIDC est un claim nommé incus.allowed_subnets, qui peut contenir une liste de sous-réseaux CIDR séparée par des virgules depuis lesquels le client doit se connecter afin d’être autorisé à interagir avec l’API.
La fonctionnalité est particulièrement utile dans des environnements où un groupe d’utilisateurs donné doit nécessairement passer par un VPN ou se connecter en physique. L’IdP peut être configuré pour définir ce claim, et Incus en vérifie le respect à chaque requête.
Documentation : https://linuxcontainers.org/incus/docs/main/authentication/#openid-connect-authentication
Meilleur support pour le SOA dans les zones réseau¶
Les zones réseau DNS générées comportent à présent un enregistrement SOA plus standard, utilisant le premier serveur DNS configuré comme serveur primaire, et utilisant une nouvelle option de configuration dns.contact pour personnaliser le champ de contact pour la zone.
Documentation : https://linuxcontainers.org/incus/docs/main/howto/network_zones/
Support de la suppression forcée (récursive) de fichiers via l’API REST¶
Incus supporte deux API différentes pour l’accès aux fichiers dans les instances et les volumes personnalisés.
Les clients modernes utilisent notre nouvelle API SFTP, permettant de nombreuses opérations sur les fichiers, tandis que les clients plus simples ou anciens utilisent notre API REST plus basique.
Une fonctionnalité facilement disponible en SFTP mais pas en REST était la possibilité de supprimer de manière forcée un sous-arbre du système de fichiers, entraînant une suppression récursive.
Pour simplifier la tâche chez les clients n’utilisant pas l’API SFTP, nous avons ajouté un en-tête HTTP X-Incus-force pour l’opération DELETE qui déclenche la suppression récursive côté serveur, comme le ferait incus file delete -f.
Liste complète des changements¶
Voici une liste complète de tous les changements apportés par cette version :
Liste complète des commits
- doc/openfga: Improve required config keys
- incusd/network/ovn: Drop now obsolete DNS check
- incusd/storage/truenas: fix SetVolumeQuota issue when growing FS volumes
- cmd/incus-user: Don't reset setup if user has access
- api: oidc_allowed_subnets
- incusd/auth/oidc: Introduce incus.restricted_subnets
- doc/authentication: Mentioned incus.allowed_subnets claim
- internal/instance: Tweak handling of boot.autostart
- doc: Update configs
- incusd/instances: Support last-state value for boot.autostart
- incusd/network/physical: Allow parent re-use for bridges
- Translated using Weblate (Italian)
- Translated using Weblate (Italian)
- Translated using Weblate (Swedish)
- Translated using Weblate (Swedish)
- Translated using Weblate (Tamil)
- Translated using Weblate (Dutch)
- Translated using Weblate (Dutch)
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Chinese (Traditional Han script))
- Translated using Weblate (Spanish)
- Translated using Weblate (Spanish)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (German)
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (Portuguese (Brazil))
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (French)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Indonesian)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Norwegian Bokmål)
- Translated using Weblate (Russian)
- Translated using Weblate (Portuguese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Chinese (Simplified Han script))
- Translated using Weblate (Portuguese)
- incusd/network/physical: Allow vlan.tagged
- incusd/device: Add vlan.tagged to physical NICs
- doc: Update configs
- incusd/device/nic_physical: Fix internal bridge handling
- incusd: Add X-Incus-force header for file operations
- doc/rest-api: Refresh swagger YAML
- api: file_delete_force
- doc/network_ovn: Add note about advanced external_interfaces syntax
- incusd: Parallelize instance startup on daemon start
- incusd/instance/drivers: Add size parameter to UpdateBlockSize method
- incusd/storage/drivers: Export roundAbove function
- incusd/storage/drivers: Add Qcow2Resize and export isQcow2Block function
- Translated using Weblate (Swedish)
- incusd/storage: Add support for resizing qcow2 volumes
- generate-database: Respect "primary" config for Identifier in mappings
- Added a few more environment variables. PATHEXT and COMPUTERNAME were needed for 'shutdown.exe'. Meanwhile, I've connected as SYSTEM with PsExec to show the environment variables by default and added them.
- Add pires/go-proxyproto
- internal/server/endpoints/listeners: Use new proxyproto package
- generate-database: fix import type for association tables
- incusd/instance/drivers: Fix adding disk with a device name longer than 31 bytes
- incusd/instance/drivers: Add tests for hashName
- shared/validate: Don't allow $ in API names
- Translated using Weblate (Japanese)
- shared/util: Add SingleQuote
- incusd/instance/lxc: Use SingleQuote instead of Quote
- incusd/device/disk: Use isRequired
- incusd/device/disk: Move check for attached property
- incusd/device/disk: Handle required=false on custom volumes
- incusd/api_internal: Block instance hooks until daemon is ready
- incusd/instance_console: Align cleanup logic with exec
- incusd: pass firmware opt from device/pci to instance/qemu
- incusd/device: Move reusable code into getNumaNodeSet helper
- incusd/network: Add SRIOVCountFreeVirtualFunctions
- incusd/device: Add support for nic SR-IOV selection by vendorid, productid and pci
- doc: Update configs
- api: Add 'nic_sriov_select_ext' extension
- incusd/storage/drivers: Allow setting 'vg_name' for non-clustered LVM during init
- doc: Fix build failure
- incus: Implement "incus wait"
- i18n: Update translation templates
- internal/instance: Prevent line breaks in environment variables
- incusd/instance/drivers: Rename hashName to hashValue
- incusd/instance/drivers: Hash serial value if it exceeds the maximum length
- doc/linstor: Add documentation for
sourceparameter. - doc: Update configs
- incusd/network/bridge: Skip dnsmasq on non-routed IPv6
- Update Rocky Linux instructions
- incusd/network/zone: Use the standard SOA format
- incusd/network/zone: Allow setting DNS admin contact
- doc: Update configs
- api: network_zones_dns_contact
- Translated using Weblate (Portuguese)
- incusd/network: Remove automatic increasing of SR-IOV VF count
- doc: Add warning about long device names
- incusd/device/nic: Add
attachedconfiguration key - incusd/device/nic: Add
connectedconfiguration key - incusd/instance/qemu: Properly update detached devices
- incusd/instance/lxc: Properly update detached devices
- incusd/device/nic_ovn: Factor common options
- incusd/device/nic_p2p: Fix boot.priority spelling in gendoc
- incusd/instance/qemu: Implement NIC connected config key
- incusd/ip/link: Relax parent detection logic
- incusd/instance/lxc: Implement NIC connected config key
- api: nic_attached_connected
- doc: Update config
- incusd/instance/lxc: Restrict path of template files and targets
- tests: Add NIC tests for attached and connected keys
- Makefile: Bump to Go 1.24.12
- gomod: Update dependencies
- mini-oidc: Update for newer Zitadel
- incusd/cluster: Skip first re-balance
- incusd/auth/tls: Fix handling of GetPermissionChecker
- incusd/instance: Report clear error on concurent migrations
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.21.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
Anciennes nouvelles¶
- 19 déc. 2025
- 29 nov. 2025
- 31 oct. 2025
- 26 sept. 2025
- 29 août 2025
- 15 août 2025
- 1 août 2025
- 28 juin 2025
- 30 mai 2025
- 25 avr. 2025
- 4 avr. 2025
- 28 mars 2025
- 28 févr. 2025
- 24 janv. 2025
- 19 déc. 2024
- 13 déc. 2024
- 15 nov. 2024
- 3 oct. 2024
- 17 sept. 2024
- 6 sept. 2024
- 9 août 2024
- 12 juil. 2024
- 28 juin 2024
- 31 mai 2024
- 7 mai 2024
- 4 avr. 2024
- 26 mars 2024
- 23 févr. 2024
- 29 janv. 2024
- 26 janv. 2024
- 21 déc. 2023
- 27 nov. 2023
- 28 oct. 2023
- 7 oct. 2023




