This content follows experimental nightly development software. Pre-release software is intended for testing purposes only. Use the Product and Version selectors above to view content specific to a stable software release.
Virtual Machines and Containers in TrueNAS 25.04 and Later
TrueNAS 25.04 replaces the previous KVM hypervisor (TrueNAS 24.10 and earlier) with Incus for virtual machine (VM) deployment.
It also introduces support for Linux system containers (LXC), enabling lightweight isolation similar to jails in TrueNAS CORE.
With this change, the Instances (formerly Virtualization) screens in the TrueNAS UI are fully redesigned.
We are actively updating Tutorials and UI Reference articles to reflect these changes.
Please use the Docs Hub Feedback button (located to the right of any article) to report documentation issues or request improvements to the Instances documentation.
Migrating VMs from 24.10 to 25.04
Manual Migration Required
Due to configuration incompatibilities between the previous KVM hypervisor (TrueNAS 24.10 and earlier) and Incus in TrueNAS 25.04, existing VM configurations do not transfer automatically during the upgrade.
However, TrueNAS retains storage zvols, allowing you to manually recreate the previous VM configurations and get them back online.
Instances are an experimental feature intended for community testing only.
Users with production VMs on TrueNAS 24.10 should not upgrade to TrueNAS 25.04 until after this experimental feature stabilizes in a future TrueNAS release.
Manual Migration Instructions
To migrate VMs from TrueNAS 24.10 (latest) to 25.04:
Recreate VMs using the saved configurations and attach existing zvol storage.
Preparing to Migrate VMs from 24.10
Copy or write down the VM configuration:
a. Go to the Virtualization screen and locate your VM.
b. Click on the VM row to expand it, then click Edit.
c. Take a screenshot or manually write down the VM settings, as they do not transfer to 25.04.
d. Save this information externally for reference.
Copy or write down the storage and virtual device configuration:
a. Go to the Virtualization screen and locate your VM.
b. Click on the VM row to expand it, then click device_hubDevices.
c. Click more_vert in the Disk row and select Edit.
d. Note the Zvol path, storage Mode, and Disk Sector Size.
e. Document all VM devices and their configurations for later use.
Recreating VMs in 25.04
Configure Instances settings:
a. After upgrading to TrueNAS 25.04, go to Instances (formerly Virtualization).
b. Click Select Pool to open Global Settings.
c. Select the storage pool for virtualization from the Pool dropdown.
d. Accept default networking settings or modify as needed, then click Save.
Recreate the VM using the existing zvol:
a. Click Create New Instance.
b. Select VM as the Virtualization Method.
c. Select Upload ISO, import a zvol or use another volume from VM Image Options.
d. Click Select Volume to open the Volumes screen, then click Import Zvols to open the Import Zvol dialog.
Enter the path or browse to select an existing Zvol in Select Zvols.
Select the radio button to clone or move the existing zvol.
Select Clone to clone and promote a temporary snapshot of the zvol into a custom storage volume.
This option retains the original zvol while creating an identical copy as an instances volume.
Select Move to relocate the existing zvol to the ix-virt dataset as a volume.Enter or browse to select the path to the existing zvol.
f. Adjust VM settings (CPU, memory, networking, etc.) to match your previous configuration.
g. Click Create.
Instances (Incus-powered containers and virtual machines) are an experimental feature intended for community testing only.
Functionality could change significantly between releases, and instances might not upgrade reliably.
Use this feature for testing purposes only—do not rely on it for production workloads.
Long-term stability is planned for future TrueNAS Community Edition releases.
Make all configuration changes using the TrueNAS UI.
Operations using the command line are not supported and might not persist on upgrade.
For assistance or to discuss this feature with other TrueNAS users, visit our community forums. To report bugs, submit an issue on TrueNAS Jira.
Instances Screen
The Instances screen allows users to add, edit, or manage virtual machines (VMs) and Linux containers.
The screen header displays a Pool is not selected status before a pool for instances is selected.
See Global Settings for more information.
Global Settings opens the Global Settings screen showing global options that apply to all instances, including selecting the storage pool for instances and network settings.
The Pool dropdown list shows a list of available pools on the system.
[Disabled] deactivates the pool and disables the instances service.
The screen header displays a Pool is not selected status before a pool for instances is selected.
Default Network Settings
Default Network settings configure global networking defaults for the instances service.
Setting
Description
Bridge
Specifies the network bridge. Automatic uses the default network bridge for communication between instances and the TrueNAS host. The dropdown list option shows existing bridges. See Accessing NAS from VMs and Containers for more information.
IPv4 Network
Specifies the IPv4 address for the bridge specified when Bridge is set to Automatic. Enter the IPv4 address and subnet (e.g., 192.168.1.0/24) for the instances to use or leave empty to allow TrueNAS to use the default address.
IPv6 Network
Specifies the IPv6 address for the bridge specified when Bridge is set to Automatic. Enter the IPv6 address and subnet (e.g., fd42:96dd:aef2:483c::1/64) for the instances to use or leave empty to allow TrueNAS to use the default address.
Manage Volumes
The Volumes screen lists all volumes currently configured for the instances service.
Specifies the Zvol to import. Enter or browse to select an existing Zvol.
Clone
Clones and promotes a temporary snapshot of the zvol into a custom storage volume. This option retains the original zvol while creating an identical copy as an instances volume.
Move
Relocates the existing zvol to the ix-virt dataset as a volume.
Delete Volumes
delete Delete on an image row deletes that image.
A Delete volume dialog displays.
The Users or Groups tabs display mappings for individual user or group accounts, respectively.
Existing mappings are shown in a table containing the group or user name, host ID, and instance ID.
delete Delete on a row deletes that mapping.
Add New Mapping Settings
Setting
Description
User/Group
Specifies the user or group account name. Begin typing an account name to search for it or select it from the dropdown menu.
Map to the same UID/GID in the instance
(Default) Specifies the host ID-to-instance user or group ID mapping. Select to map the host ID to the same ID in instances.
Instance UID/GID
(Displays when Map to the same UID/GID in the instance is not selected) Specified the user or group ID. Enter the ID number (e.g., 1000) to map the host user or group ID to in instances.
Set creates the mapping.
Changes take effect immediately, but instances might require a restart to reflect the changes.
Create Instance Wizard
The Create Instance configuration wizard displays all settings to set up a new container or virtual machine.
Instance Configuration
The Instance Configuration settings specify the instance name, virtualization method or type, and operating system image.
Required. Enter an alphanumeric name for the instance.
Virtualization Method
Required. Select Container to create a lightweight Linux container that shares the TrueNAS OS kernel.
Image
Browse Catalog opens the Select Image screen with available Linux image choices from linuxcontainers.org. Search or browse to locate your desired image and click Select.
Instance Name Requirements
An instance name must meet these criteria:
It must be between 1 and 63 characters long.
It can only include letters, numbers, and dashes from the ASCII character set.
Required. Enter an alphanumeric name for the instance.
Virtualization Method
Required. Select VM to create a fully isolated virtual machine using any operating system.
VM Image Options
(Shows when Virtualization Method is set to VM)
Use a Linux image
Select to choose a Linux image from linuxcontainers.org. Browse Catalog opens the Select Image screen with available image choices. Search or browse to locate your desired image and click Select.
Upload ISO, import a zvol or use another volume
Sets the method to use to for the storage option. Select to create the VM using an .iso image, import a zvol from a previously installed VM, or use an existing instances volume. Select ISO opens the Volumes screen. See Volumes for more information.
Instance Name Requirements
An instance name must meet these criteria:
It must be between 1 and 63 characters long.
It can only include letters, numbers, and dashes from the ASCII character set.
It cannot begin with a number or a dash.
It cannot end with a dash.
CPU & Memory
The CPU & Memory settings specify the number of virtual CPU cores to allocate to the virtual machine and memory size.
(Required for VMs) Enter the number of virtual CPU (vCPU) cores to allocate to the instance. Set to an integer to expose that number of full vCPU cores to the instance.
Set to a range or comma-separated list to pin vCPUs to specific physical cores. For better cache locality and performance, select cores that share the same cache hierarchy or NUMA node. For example, to assign cores 0,1,2,5,9,10,11, you can write: 1-2,5,9-11.
For Linux containers, you can set CPU limits or leave this field blank to allow access to all host CPUs.
Memory Size
(Required for VMs) Allocate RAM for the instance. This field accepts human-readable input (Ex. 50 GiB, 500M, 2 TB). If units are not specified, the value defaults to mebibytes (MiB). The minimum value is 32 MiB.
For Linux containers, you can set memory limits or leave this field blank to allow access to all host memory.
Environment
The Environment settings configure optional environment variables to run on boot or execute.
These settings are only available for containers and cannot be used with VMs.
Enter the name of the environment variable to set (for example, LANG).
Value
Enter the value to assign to the environment variable (for example, en_US.UTF-8).
Disks
The Disks settings allow mounting storage volumes to an instance.
Container options include creating a new dataset or using an existing one.
VMs use the Volumes screen to select or create a new volume.
VMs must specify the I/O bus and size of the root disk.
Add displays a set of fields to create or mount a disk.
(Required for VMs only) Set the root disk I/O bus type to the option that best suits system needs. Options are:
NVMe – Ideal for high-performance storage with faster read and write speeds.
Virtio-BLK – Efficient for virtualized environments, offering direct block device access with lower overhead.
Virtio-SCSI – Flexible and scalable, supporting advanced features like hot-swapping and multiple devices.
Root Disk Size (in GiB)
(Required for VMs only) Enter a plain integer to configure the size of the VM root disk (default 10).
Source
(Required) Displays after clicking Add in Disks. Enter an existing zvol or create a new dataset using the Create Dataset option that allows creating a new dataset after entering a path or browsing to select a parent dataset from the dropdown list of datasets on the system. Enter a name for the new dataset in the Create Dataset window. Create adds the dataset.
To use an existing zvol, select an existing zvol from the dropdown list.
Destination
(Required for containers only) Specifies the file system path to mount the disk in the container, for example /media or /var/lib/data.
I/O Bus
(Required for VMs only) Sets the disk I/O bus type to what best suits system needs. Options are NVMe, Virtio-BLK, or Virtio-SCSI.
Proxies
The Proxies settings allow you to forward network connections between the host and the instance.
This routes traffic from a specific address on the host to an address inside the instance, or vice versa, allowing the instance to connect externally through the host.
These settings are only available for containers and cannot be used with VMs.
Add displays a set of proxy configuration settings.
Sets the connection protocol for the TrueNAS host. Options are TCP or UDP.
Host Port
Sets TrueNAS host port to map to the instance port on the container, for example 3600.
Instance Protocol
Sets the connection protocol for the container. Select from the options TCP or UDP.
Instance Port
Sets the port number within the container. Enter a port number to use, for example 80.
Network
The Network settings configure how the instance connects to the host and external networks.
Options include the default network bridge, an existing bridge interface, or a MACVLAN.
Select to use default network settings to connect the instance to the host using the automatic bridge defined in Global Settings. Selected by default. Disable to display the Bridged NICs (if available) and Macvlan NICs settings.
Bridged NICs
Select an existing bridge on the TrueNAS host to connect to the instance. Displays when one or more existing bridge interface(s) is available.
Macvlan NICs
Select an existing interface to create a virtual network interface based on it, assigning a unique MAC address so the instance appears as a separate device on the network.
A MACVLAN NIC on the same physical interface as the TrueNAS host cannot directly communicate with the host.
MACVLAN sends traffic directly to the external network without passing through the host network stack.
The host does not recognize MACVLAN packets as local, so any traffic between them must be routed through an external switch, use a separate NIC, or use a network bridge.
USB Devices
USB Devices displays a list of available devices to attach to an instance, allowing the device to function as if physically connected.
PCI Passthrough settings enable assigning a physical PCI device, such as a network card or controller, directly to a VM, allowing it to use the device as if physically attached.
These settings are only available for VMs and cannot be used with containers.
The selected PCI device(s) cannot be in use by the host or share an IOMMU group with devices the host requires.
The VNC settings allow you to enable VNC access for a VM, configure the VNC port, and set a VNC password for remote access.
These settings are only available for VMs and cannot be used with containers.
Enter a port number to configure the port that the VM VNC server listens for connections on.
VNC Password
Enter a password to authenticate VNC access to the VM. Note: A VNC password is not cryptographically secure. You should not rely on it as a single authentication mechanism for your VMs.
Security
The Security settings control various system security features, including Trusted Platform Module (TPM) and Secure Boot options.
These options help to ensure a secure environment by enabling advanced hardware-based security features during system startup and operation.
These settings are only available for VMs and cannot be used with containers.
Enables TPM, a hardware-based security feature that protects sensitive data and ensures integrity. Adds a Trusted Platform Module (TPM) device to the VM.
Secure Boot
Sets boot to ensure that only trusted, signed software is loaded during the system boot process. Can be incompatible with some images.
Instances Table
The Instances table lists each configured instance, displaying its name, type, current state, and options to restart or stop it.
Stopped instances show the option to start the instance.
The Details for Instancewidgets show information and management options for the selected instance.
restart_alt restarts or stop_circle stops a running instance.
play_circle starts a stopped instance.
Search above the Instances table allows entering the name of an instance to locate a configured instance.
The checkbox on each instance row shows the Bulk Actions dropdown.
Bulk Actions
The Bulk Actions dropdown list allows you to apply actions to one or more instances on your system.
Options are Start All Selected, Stop All Selected, and Restart All Selected.
The Details for Instancewidgets display information and configuration options for the selected instance.
General Info Widget
The General Info widget displays the instance status, autostart setting, base image, CPU, memory, and secure boot configuration.
It includes the Edit and Delete buttons for the instance.
The Disks widget shows the storage devices attached to the instance, along with their associated paths.
It allows you to manage the disks, including adding new ones or modifying existing ones.
Add opens the Add Disk screen for adding new disks to the instance.
For existing disks, the more_vert actions include options to Edit or Delete the disk mount.
For VMs, the widget displays the current root disk size.
The root disk stores the OS and serves as the boot disk for the VM.
Change opens the Change Root Disk Setup dialog.
Add/Edit Disk Screen
The Add/Edit Disk screen allows you to configure a new disk or modify an existing one attached to an instance.
Increases the size of the VM root disk. Enter a new root disk size in GiB, such as 20.
Root Disk I/O Bus
Sets the communication pathway type for the root disk. Options are NVMe, Virtio-BLK, and Virtio-SCSI.
Save applies changes.
NIC Widget
The NIC Widget displays the network interfaces (NICs) attached to the instance, along with their names and types.
It allows you to add new NICs and manage existing ones.
Confirm activates the Continue button.
Continue starts the delete operation.
Proxies Widget
The Proxies widget displays the network proxy settings configured for the instance.
It allows you to manage these settings, including adding, editing, or removing proxies.
These settings are only available for containers and cannot be used with VMs.
Confirm activates the Continue button.
Continue starts the delete operation.
Idmap Widget
The Idmap widget shows the user ID (UID) and group ID (GID) mappings used by the instance to translate IDs between the host and the container or VM.
It provides details such as the Host ID, Maprange, and NS ID for both UIDs and GIDs.
These settings are only available for containers and cannot be used with VMs.
Host ID shows the starting ID used by the host for mapping to the instance IDs.
Maprange indicates the range of IDs that the host allocates for the instance.
NS ID represents the namespace ID used for the mapping.
For example, if the Host ID is 2147000001 and the Maprange is 458752, the container UID 0 (root) is mapped to the host UID 2147000001.
This ensures proper isolation and user/group identity management between the host and the instance.
Tools Widget
The Tools widget provides quick access to various tools and utilities for managing your instance.
You can open a shell, console, or VNC session directly from this widget.
Shell opens an Instance Shell session for command-line interaction with the instance.
Serial Console (VM only) opens an Instance Console session to access the system console for the instance.
VNC (VM only) opens a VNC connection using your preferred client.
It uses a VNC URL scheme (for example, vnc://hostname.domain.com:5930) to launch the session directly in the application.
If your environment does not support VNC URLs, you can manually connect using a VNC client by entering the host name or IP address followed by the port number without vnc:// (for example, hostname.domain.com:5930 or IP:5930).
Metrics Widget
The Metrics widget displays real-time graphs that monitor instance performance, including CPU usage, memory usage, and disk I/O pressure.
CPU (%) shows the percentage of CPU usage over time.
Memory (MiB) displays the memory usage in MiB over time.
Disk I/O Full Pressure (%) tracks the disk input/output pressure as a percentage over time.
Edit Instance Screen
The Edit Instance: Instance screen settings are a subset of those found on the Create Instance Wizard screens.
It includes the general Instance Configuration and CPU and Memory settings for all instances.
Additionally, containers include Environment settings.
VMs include VNC and Security settings.
To edit device, disk, network, or proxy settings, use the Instances Widgets on the Instances screen.
Edit Instance Configuration Settings
The Instance Configuration settings on the Edit screen allow you to modify basic parameters for the instance, such as startup behavior.
(Required for VMs) Enter the number of virtual CPU (vCPU) cores to allocate to the instance. Set to an integer to expose that number of full vCPU cores to the instance.
Set to a range or comma-separated list to pin vCPUs to specific physical cores. For better cache locality and performance, select cores that share the same cache hierarchy or NUMA node. For example, to assign cores 0,1,2,5,9,10,11, you can write: 1-2,5,9-11.
For Linux containers, you can set CPU limits or leave this field blank to allow access to all host CPUs.
Memory Size
(Required for VMs) Allocate RAM for the instance. This field accepts human-readable input (Ex. 50 GiB, 500M, 2 TB). If units are not specified, the value defaults to mebibytes (MiB). The minimum value is 32 MiB.
For Linux containers, you can set memory limits or leave this field blank to allow access to all host memory.
Edit VNC Settings
The VNC settings on the Edit screen are the same as those in the Create Instance wizard.
These settings are only available for VMs and cannot be used with containers.
Enter a port number to configure the port that the VM VNC server listens for connections on.
VNC Password
Enter a password to authenticate VNC access to the VM. Note: A VNC password is not cryptographically secure. You should not rely on it as a single authentication mechanism for your VMs.
Edit Environment Settings
The Environment settings on the Edit screen are the same as those in the Create Instance wizard.
These settings are only available for containers and cannot be used with VMs.
Enter the name of the environment variable to set (for example, LANG).
Value
Enter the value to assign to the environment variable (for example, en_US.UTF-8).
Edit Security Settings
The Security settings on the Edit screen allow you to enable Secure Boot for the instance, ensuring that only trusted, signed software runs during the startup process.
These settings are only available for VMs and cannot be used with containers.
Use Search Devices or the Type dropdown to filter available devices.
The selected PCI device(s) must not be in use by the host or share an IOMMU group with any device the host requires.