Omada Controller
Get Started with Apps!
Keywords: network, controller, omada, tp-link
Train: Community
Home Page: https://github.com/mbentley/docker-omada-controller
Added: 2024-08-02
Last Updated: 2025-04-23
Omada Controller (TP-Link) is a network management controller for TP-Link Omada Equipment
Run as Context- Omada Controller runs as root user.
Group: 0 / root
User: 0 / root
Security Capabilities
- Omada Controller is able to chown files.
- Omada Controller requires this ability to bypass file permissions.
- Omada Controller requires this ability to bypass file permissions for it's sub-processes.
- Omada Controller requires this ability to switch group for sub-processes.
- Omada Controller requires this ability to switch user for sub-processes.
App Metadata (Raw File)
{
"1.2.14": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/omada-controller/1.2.14",
"last_update": "2025-04-23 17:43:28",
"required_features": [],
"human_version": "5.15_1.2.14",
"version": "1.2.14",
"app_metadata": {
"app_version": "5.15",
"capabilities": [
{
"description": "Omada Controller is able to chown files.",
"name": "CHOWN"
},
{
"description": "Omada Controller requires this ability to bypass file permissions.",
"name": "DAC_OVERRIDE"
},
{
"description": "Omada Controller requires this ability to bypass file permissions for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Omada Controller requires this ability to switch group for sub-processes.",
"name": "SETGID"
},
{
"description": "Omada Controller requires this ability to switch user for sub-processes.",
"name": "SETUID"
}
],
"categories": [
"networking"
],
"changelog_url": "https://github.com/mbentley/docker-omada-controller/releases",
"date_added": "2024-08-02",
"description": "Omada Controller (TP-Link) is a network management controller for TP-Link Omada Equipment",
"home": "https://github.com/mbentley/docker-omada-controller",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/omada-controller/icons/icon.svg",
"keywords": [
"network",
"controller",
"omada",
"tp-link"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "omada-controller",
"run_as_context": [
{
"description": "Omada Controller runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://github.com/mbentley/docker-omada-controller",
"https://hub.docker.com/r/mbentley/omada-controller"
],
"title": "Omada Controller",
"train": "community",
"version": "1.2.14"
},
"schema": {
"groups": [
{
"name": "Omada Controller Configuration",
"description": "Configure Omada Controller"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Omada Controller"
},
{
"name": "Network Configuration",
"description": "Configure Network for Omada Controller"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Omada Controller"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Omada Controller"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Omada Controller"
}
],
"questions": [
{
"variable": "TZ",
"group": "Omada Controller Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "omada",
"label": "",
"group": "Omada Controller Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for Omada Controller.",
"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",
"required": true
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "run_as",
"label": "",
"group": "User and Group Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "user",
"label": "User ID",
"description": "The user id that Omada Controller files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Omada Controller 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": "manage_http_port",
"label": "Manage HTTP Port",
"description": "Management portal HTTP port",
"schema": {
"type": "int",
"default": 30076,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "manage_https_port",
"label": "Manage HTTPS Port",
"description": "Management portal HTTPS port",
"schema": {
"type": "int",
"default": 30077,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "portal_http_port",
"label": "Portal HTTP Port",
"description": "User portal HTTP port",
"schema": {
"type": "int",
"default": 30078,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "portal_https_port",
"label": "Portal HTTPS Port",
"description": "User portal HTTPS port",
"schema": {
"type": "int",
"default": 30079,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "app_discovery_port",
"label": "App Discovery Port",
"description": "Omada Controller can be discovered by the Omada APP within the same network through this port",
"schema": {
"type": "int",
"default": 27001,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "discovery_port",
"label": "Discovery Port",
"description": "Omada Controller and Omada Discovery Utility discover Omada devices",
"schema": {
"type": "int",
"default": 29810,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "manager_v1_port",
"label": "Manager V1 Port",
"description": "Omada Controller and Omada Discovery Utility manage the Omada devices running firmware fully adapted to Omada Controller v4*",
"schema": {
"type": "int",
"default": 29811,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "manager_v2_port",
"label": "Manager V2 Port",
"description": "Omada Controller and Omada Discovery Utility manage the Omada devices running firmware fully adapted to Omada Controller v5*",
"schema": {
"type": "int",
"default": 29814,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "adopt_v1_port",
"label": "Adopt V1 Port",
"description": "Omada Controller and Omada Discovery Utility manage the Omada devices running firmware fully adapted to Omada Controller v4*",
"schema": {
"type": "int",
"default": 29812,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "upgrade_v1_port",
"label": "Upgrade V1 Port",
"description": "When upgrading the firmware for the Omada devices running firmware fully adapted to Omada Controller v4*.",
"schema": {
"type": "int",
"default": 29813,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "transfer_v2_port",
"label": "Transfer V2 Port",
"description": "Omada Controller receives Device Info and Packet Capture files from the Omada devices",
"schema": {
"type": "int",
"default": 29815,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "rtty_port",
"label": "RTTY Port",
"description": "Omada Controller establishes the remote control terminal session with the Omada devices",
"schema": {
"type": "int",
"default": 29816,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "host_network",
"label": "Host Network",
"description": "Bind to the host network. It's recommended to keep this disabled.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "certificate_id",
"label": "Certificate ID",
"description": "The certificate id to use for the https endpoint.",
"schema": {
"type": "int",
"null": true,
"$ref": [
"definitions/certificate"
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Omada Controller Data Storage",
"description": "The path to store Omada Controller Data.",
"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.\n",
"schema": {
"type": "string",
"required": true,
"immutable": 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)"
}
]
}
},
{
"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,
"immutable": true,
"hidden": true,
"default": "data"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"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": "logs",
"label": "Omada Controller Logs Storage",
"description": "The path to store Omada Controller Logs.",
"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.\n",
"schema": {
"type": "string",
"required": true,
"immutable": 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)"
}
]
}
},
{
"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,
"immutable": true,
"hidden": true,
"default": "logs"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"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": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for Omada Controller.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storageEntry",
"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.\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"immutable": true,
"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)"
}
]
}
},
{
"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,
"immutable": 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": "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": "omada",
"description": "omada"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Omada Controller.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Omada Controller.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Omada Controller</h1> <p><a href=\"https://github.com/mbentley/docker-omada-controller\">Omada Controller</a> is a network management controller for Omada (TP-Link) Equipment.</p>",
"changelog": null,
"chart_metadata": {
"app_version": "5.15",
"capabilities": [
{
"description": "Omada Controller is able to chown files.",
"name": "CHOWN"
},
{
"description": "Omada Controller requires this ability to bypass file permissions.",
"name": "DAC_OVERRIDE"
},
{
"description": "Omada Controller requires this ability to bypass file permissions for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Omada Controller requires this ability to switch group for sub-processes.",
"name": "SETGID"
},
{
"description": "Omada Controller requires this ability to switch user for sub-processes.",
"name": "SETUID"
}
],
"categories": [
"networking"
],
"changelog_url": "https://github.com/mbentley/docker-omada-controller/releases",
"date_added": "2024-08-02",
"description": "Omada Controller (TP-Link) is a network management controller for TP-Link Omada Equipment",
"home": "https://github.com/mbentley/docker-omada-controller",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/omada-controller/icons/icon.svg",
"keywords": [
"network",
"controller",
"omada",
"tp-link"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "omada-controller",
"run_as_context": [
{
"description": "Omada Controller runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://github.com/mbentley/docker-omada-controller",
"https://hub.docker.com/r/mbentley/omada-controller"
],
"title": "Omada Controller",
"train": "community",
"version": "1.2.14"
}
}
}
Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Portal 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 create content or discuss this application in the TrueNAS Community forum.