Omni TrueNAS Provider
Get Started with Apps!
App Version: v0.16.1 (Changelog)
Keywords: kubernetes, omni, talos, sidero, cluster, vm-provisioning
Train: Community
Home Page: https://github.com/bearbinary/omni-infra-provider-truenas
Added: 2026-04-24
Last Updated: 2026-05-12
Sidero Omni infrastructure provider that provisions Talos Linux VMs on TrueNAS SCALE.
Run as Context- Container [controller] can run as any non-root user and group.
Group: 568 / Host group is [apps]
User: 568 / Host user is [apps]
App Metadata (Raw File)
{
"1.0.3": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/omni-infra-provider-truenas/1.0.3",
"last_update": "2026-05-12 11:48:53",
"required_features": [],
"human_version": "v0.16.1_1.0.3",
"version": "1.0.3",
"app_metadata": {
"annotations": {
"min_scale_version": "25.10.0"
},
"app_version": "v0.16.1",
"capabilities": [],
"categories": [
"management"
],
"changelog_url": "https://github.com/bearbinary/omni-infra-provider-truenas/releases",
"date_added": "2026-04-24",
"description": "Sidero Omni infrastructure provider that provisions Talos Linux VMs on TrueNAS SCALE.",
"home": "https://github.com/bearbinary/omni-infra-provider-truenas",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/omni-infra-provider-truenas/icons/icon.png",
"keywords": [
"kubernetes",
"omni",
"talos",
"sidero",
"cluster",
"vm-provisioning"
],
"lib_version": "2.3.4",
"lib_version_hash": "2e3a8847308fb2eb0da046018f287c73822c094b5950a10377c3235794ff1242",
"maintainers": [
{
"email": "dev@truenas.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "omni-infra-provider-truenas",
"run_as_context": [
{
"description": "Container [controller] can run as any non-root user and group.",
"gid": 568,
"group_name": "Host group is [apps]",
"uid": 568,
"user_name": "Host user is [apps]"
}
],
"screenshots": [],
"sources": [
"https://apps.truenas.com/catalog/omni-infra-provider-truenas_community/",
"https://github.com/bearbinary/omni-infra-provider-truenas"
],
"title": "Omni TrueNAS Provider",
"train": "community",
"version": "1.0.3"
},
"schema": {
"groups": [
{
"name": "Omni Infra TrueNAS Provider Configuration",
"description": "Configure Omni Infra TrueNAS Provider"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Omni Infra TrueNAS Provider"
},
{
"name": "Network Configuration",
"description": "Configure Network for Omni Infra TrueNAS Provider"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Omni Infra TrueNAS Provider"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Omni Infra TrueNAS Provider"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Omni Infra TrueNAS Provider"
}
],
"questions": [
{
"variable": "omni",
"label": "",
"group": "Omni Infra TrueNAS Provider Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "endpoint",
"label": "Omni Endpoint",
"description": "Full URL of your Omni instance (e.g., https://omni.example.com).",
"schema": {
"type": "uri",
"required": true
}
},
{
"variable": "service_account_key",
"label": "Omni Service Account Key",
"description": "Base64-encoded service account key.</br>\nCreate with: `omnictl serviceaccount create --role=InfraProvider infra-provider:truenas`\n",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "insecure_skip_verify",
"label": "Skip Omni TLS Verification",
"description": "Disable TLS certificate verification for the Omni endpoint.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "provider_id",
"label": "Provider ID",
"description": "Unique provider identifier registered in Omni (e.g. `truenas-prod`, `truenas-lab`).</br>\nMust be unique per Omni instance; do not reuse across TrueNAS hosts.\n",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "provider_name",
"label": "Provider Display Name",
"description": "How this provider appears in the Omni UI.",
"schema": {
"type": "string",
"default": "TrueNAS"
}
},
{
"variable": "provider_description",
"label": "Provider Description",
"schema": {
"type": "string",
"default": "TrueNAS SCALE infrastructure provider"
}
},
{
"variable": "truenas",
"label": "TrueNAS Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "host",
"label": "TrueNAS Host",
"description": "TrueNAS hostname or IP.</br>\nUse `host.docker.internal` when running as a TrueNAS app on the same system.\n",
"schema": {
"type": "string",
"default": "host.docker.internal",
"required": true
}
},
{
"variable": "api_key",
"label": "TrueNAS API Key",
"description": "API key for a dedicated non-root user in the `builtin_administrators` group, with the password disabled.</br>\nDo not use the root user's key.</br>\nSee the upstream [TrueNAS setup guide](https://github.com/bearbinary/controller/blob/main/docs/truenas-setup.md) for the exact steps.\n",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "insecure_skip_verify",
"label": "Skip TLS Verification",
"description": "Skip TLS certificate verification. Recommended when using a self-signed certificate.\n",
"schema": {
"type": "boolean",
"default": true
}
}
]
}
},
{
"variable": "vm",
"label": "VM Provisioning Defaults",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "default_pool",
"label": "Default ZFS Pool",
"description": "Name of an existing ZFS pool used for VM zvols and cached ISO images.</br>\nRun `zpool list` on the TrueNAS host to see available pools.\n",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "default_network_interface",
"label": "Default Network Interface",
"description": "Host network interface attached to provisioned VM NICs (e.g. `br0`, `vlan100`, `enp5s0`).</br>\nLeave empty to let the provider auto-select the first available bridge at provision time.\n",
"schema": {
"type": "string",
"default": ""
}
},
{
"variable": "default_boot_method",
"label": "Default Boot Method",
"schema": {
"type": "string",
"default": "UEFI",
"required": true,
"enum": [
{
"value": "UEFI",
"description": "UEFI boot (recommended)"
},
{
"value": "BIOS",
"description": "Legacy BIOS boot"
}
]
}
},
{
"variable": "graceful_shutdown_timeout",
"label": "Graceful Shutdown Timeout (seconds)",
"description": "Seconds to wait for ACPI shutdown before force-stop on deprovision.",
"schema": {
"type": "int",
"default": 30,
"min": 0,
"max": 300,
"required": true
}
}
]
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "env",
"label": "Environment Variable",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string"
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "run_as",
"label": "",
"group": "User and Group Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "user",
"label": "User ID",
"description": "The user id that Omni Infra TrueNAS Provider files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Omni Infra TrueNAS Provider files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
}
]
}
},
{
"variable": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "networks",
"label": "Networks",
"description": "The docker networks to join.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "network",
"label": "Network",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"description": "The name of the network to join.</br>\nThe network must already exist.\n",
"schema": {
"type": "string",
"default": "",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "The containers to add to this network.",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Container Name",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "controller",
"description": "controller"
}
]
}
},
{
"variable": "config",
"label": "Container Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "aliases",
"label": "Aliases (Optional)",
"description": "The network aliases to use for this container on this network.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "alias",
"label": "Alias",
"schema": {
"type": "string"
}
}
]
}
},
{
"variable": "interface_name",
"label": "Interface Name (Optional)",
"description": "The network interface name to use for this network",
"schema": {
"type": "string"
}
},
{
"variable": "mac_address",
"label": "MAC Address (Optional)",
"description": "The MAC address to use for this network interface.",
"schema": {
"type": "string"
}
},
{
"variable": "ipv4_address",
"label": "IPv4 Address (Optional)",
"description": "The IPv4 address to use for this network interface.",
"schema": {
"type": "string"
}
},
{
"variable": "ipv6_address",
"label": "IPv6 Address (Optional)",
"description": "The IPv6 address to use for this network interface.",
"schema": {
"type": "string"
}
},
{
"variable": "gw_priority",
"label": "Gateway Priority (Optional)",
"description": "Indicates the priority of the gateway for this network interface.",
"schema": {
"type": "int",
"null": true
}
},
{
"variable": "priority",
"label": "Priority (Optional)",
"description": "Indicates in which order Compose connects the service's containers to its networks.",
"schema": {
"type": "int",
"null": true
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "additional_storage",
"label": "Additional Storage",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storage_entry",
"label": "Storage Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.</br>\nNFS Share: Is a NFS share that is mounted to as a volume.\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
},
{
"value": "cifs",
"description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
},
{
"value": "nfs",
"description": "NFS Share (Mounts a volume to a NFS share)"
}
]
}
},
{
"variable": "read_only",
"label": "Read Only",
"description": "Mount the volume as read only.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "mount_path",
"label": "Mount Path",
"description": "The path inside the container to mount the storage.",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"default": "storage_entry"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "cifs_config",
"label": "SMB Configuration",
"description": "The configuration for the SMB dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"cifs"
]
],
"attrs": [
{
"variable": "server",
"label": "Server",
"description": "The server to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "path",
"label": "Path",
"description": "The path to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "username",
"label": "Username",
"description": "The username to use for the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The password to use for the SMB share.",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "domain",
"label": "Domain",
"description": "The domain to use for the SMB share.",
"schema": {
"type": "string"
}
}
]
}
},
{
"variable": "nfs_config",
"label": "NFS Configuration",
"description": "The configuration for the NFS dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"nfs"
]
],
"attrs": [
{
"variable": "server",
"label": "Server",
"description": "The server to mount the NFS share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "path",
"label": "Path",
"description": "The path to mount the NFS share.",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "labels",
"label": "",
"group": "Labels Configuration",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "label",
"label": "Label",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "key",
"label": "Key",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "Containers where the label should be applied",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "controller",
"description": "controller"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "resources",
"label": "",
"group": "Resources Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "limits",
"label": "Limits",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "cpus",
"label": "CPUs",
"description": "CPUs limit for Omni Infra TrueNAS Provider.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Omni Infra TrueNAS Provider.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Omni TrueNAS Provider</h1> <p><a href=\"https://github.com/bearbinary/omni-infra-provider-truenas\">Omni TrueNAS Provider</a> is a Sidero Omni infrastructure provider that provisions and manages Talos Linux VMs on TrueNAS SCALE.</p> <h2>Prerequisites</h2> <ul> <li>A running <a href=\"https://omni.siderolabs.com/\">Sidero Omni</a> instance</li> <li>An Omni InfraProvider service account key</li> <li>TrueNAS SCALE 25.10 (Goldeye) or newer</li> <li>A TrueNAS API key for a <strong>dedicated non-root user</strong> in the <code>builtin_administrators</code> group, with the password disabled. Do not use the root key. See the upstream <a href=\"https://github.com/bearbinary/omni-infra-provider-truenas/blob/main/docs/truenas-setup.md\">TrueNAS setup guide</a> for the exact steps. A dedicated user gives you a separate audit trail, independent revocation, and no password attack surface.</li> </ul>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "25.10.0"
},
"app_version": "v0.16.1",
"capabilities": [],
"categories": [
"management"
],
"changelog_url": "https://github.com/bearbinary/omni-infra-provider-truenas/releases",
"date_added": "2026-04-24",
"description": "Sidero Omni infrastructure provider that provisions Talos Linux VMs on TrueNAS SCALE.",
"home": "https://github.com/bearbinary/omni-infra-provider-truenas",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/omni-infra-provider-truenas/icons/icon.png",
"keywords": [
"kubernetes",
"omni",
"talos",
"sidero",
"cluster",
"vm-provisioning"
],
"lib_version": "2.3.4",
"lib_version_hash": "2e3a8847308fb2eb0da046018f287c73822c094b5950a10377c3235794ff1242",
"maintainers": [
{
"email": "dev@truenas.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "omni-infra-provider-truenas",
"run_as_context": [
{
"description": "Container [controller] can run as any non-root user and group.",
"gid": 568,
"group_name": "Host group is [apps]",
"uid": 568,
"user_name": "Host user is [apps]"
}
],
"screenshots": [],
"sources": [
"https://apps.truenas.com/catalog/omni-infra-provider-truenas_community/",
"https://github.com/bearbinary/omni-infra-provider-truenas"
],
"title": "Omni TrueNAS Provider",
"train": "community",
"version": "1.0.3"
}
}
}Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Market hosts but does not validate or maintain any linked resources associated with this app.
There currently aren’t any resources available for this application!
Please help the TrueNAS community add resources here or discuss this application in the TrueNAS Community forum.


