Rust Desk


Get Started with Apps!
Keywords: remote, desktop
Train: Community
Home Page: https://rustdesk.com
Added: 2024-09-13
Last Updated: 2025-05-12
Rust Desk is an open-source remote desktop, and alternative to TeamViewer.
Run as Context- Rust Desk runs as any non-root user.
Group: 568 / rust-desk
User: 568 / rust-desk
App Metadata (Raw File)
{
"1.1.11": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/rust-desk/1.1.11",
"last_update": "2025-05-12 13:53:28",
"required_features": [],
"human_version": "1.1.14_1.1.11",
"version": "1.1.11",
"app_metadata": {
"app_version": "1.1.14",
"capabilities": [],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/rustdesk/rustdesk-server/releases",
"date_added": "2024-09-13",
"description": "Rust Desk is an open-source remote desktop, and alternative to TeamViewer.",
"home": "https://rustdesk.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/rust-desk/icons/icon.png",
"keywords": [
"remote",
"desktop"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "rust-desk",
"run_as_context": [
{
"description": "Rust Desk runs as any non-root user.",
"gid": 568,
"group_name": "rust-desk",
"uid": 568,
"user_name": "rust-desk"
}
],
"screenshots": [],
"sources": [
"https://hub.docker.com/r/rustdesk/rustdesk-server",
"https://github.com/rustdesk/rustdesk-server"
],
"title": "Rust Desk",
"train": "community",
"version": "1.1.11"
},
"schema": {
"groups": [
{
"name": "Rust Desk Configuration",
"description": "Configure Rust Desk"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Rust Desk"
},
{
"name": "Network Configuration",
"description": "Configure Network for Rust Desk"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Rust Desk"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Rust Desk"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Rust Desk"
}
],
"questions": [
{
"variable": "rust_desk",
"label": "",
"group": "Rust Desk Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "allow_only_encrypted_connections",
"label": "Allow Only Encrypted Connections",
"description": "Allow only encrypted connections.</br>\nClients have to use the generated key to connect to the server.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "additional_relay_servers",
"label": "Additional Relay Servers",
"description": "Configure additional relay servers for Rust Desk.</br>\nThe internal relay server will be added automatically. </br>\nFormat: </br> host:port\n",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "server",
"label": "Server",
"schema": {
"type": "string",
"default": "",
"required": true
}
}
]
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for Rust Desk.",
"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 Rust Desk files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Rust Desk 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": "host_network",
"label": "Host Network",
"description": "Bind to the host network. It's recommended to keep this disabled.\n",
"schema": {
"type": "boolean",
"default": false,
"show_subquestions_if": false,
"subquestions": [
{
"variable": "nat_type_test_port",
"label": "NAT Type Test Port",
"description": "The port to use for NAT type test.</br>\nInternal port will always be 21115\n",
"schema": {
"type": "int",
"default": 21115,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "id_reg_hole_punch_port",
"label": "ID Registration and Hole Punching Port",
"description": "The port to use for ID registration and Hole punching.</br>\nInternal port will always be 21116 (TCP/UDP)\n",
"schema": {
"type": "int",
"default": 21116,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "relay_port",
"label": "Relay Port",
"description": "The port to use for relay.</br>\nInternal port will always be 21117\n",
"schema": {
"type": "int",
"default": 21117,
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "enable_web_clients",
"label": "Enable Web Client Ports",
"description": "Enable web client ports.</br>\nThis is only required for web clients.</br>\n",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "server_web_clients_port",
"label": "Server Web Clients Port",
"description": "The port to use for server web clients.</br>\nInternal port will always be 21118\n",
"schema": {
"type": "int",
"default": 21118,
"required": true,
"show_if": [
[
"enable_web_clients",
"=",
true
]
],
"$ref": [
"definitions/port"
]
}
},
{
"variable": "relay_web_clients_port",
"label": "Relay Web Clients Port",
"description": "The port to use for relay web clients.</br>\nInternal port will always be 21119\n",
"schema": {
"type": "int",
"default": 21119,
"required": true,
"show_if": [
[
"enable_web_clients",
"=",
true
]
],
"$ref": [
"definitions/port"
]
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Rust Desk Data Storage",
"description": "The path to store Rust Desk 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": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for Rust Desk.",
"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": [],
"$ref": [
"normalize/acl"
]
}
}
]
}
},
{
"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": "rust-desk",
"description": "rust-desk"
},
{
"value": "rust-desk-relay",
"description": "rust-desk-relay"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Rust Desk.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Rust Desk.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Rust Desk</h1> <p><a href=\"https://rustdesk.com\">Rust Desk</a> is an open-source remote desktop, and alternative to TeamViewer.</p>",
"changelog": null,
"chart_metadata": {
"app_version": "1.1.14",
"capabilities": [],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/rustdesk/rustdesk-server/releases",
"date_added": "2024-09-13",
"description": "Rust Desk is an open-source remote desktop, and alternative to TeamViewer.",
"home": "https://rustdesk.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/rust-desk/icons/icon.png",
"keywords": [
"remote",
"desktop"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "rust-desk",
"run_as_context": [
{
"description": "Rust Desk runs as any non-root user.",
"gid": 568,
"group_name": "rust-desk",
"uid": 568,
"user_name": "rust-desk"
}
],
"screenshots": [],
"sources": [
"https://hub.docker.com/r/rustdesk/rustdesk-server",
"https://github.com/rustdesk/rustdesk-server"
],
"title": "Rust Desk",
"train": "community",
"version": "1.1.11"
}
}
}
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.