Piwigo
Get Started with Apps!
App Version: 15.6.0 (Changelog)
Keywords: photo, gallery
Train: Community
Home Page: https://piwigo.org
Added: 2024-09-19
Last Updated: 2025-09-02
Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.
Run as Context- Piwigo runs as root user.
Group: 0 / root
User: 0 / root - MariaDB runs as non-root user.
Group: 999 / mariadb
User: 999 / mariadb


Security Capabilities
- Piwigo is able to change file ownership arbitrarily
- Piwigo is able to bypass file permission checks
- Piwigo is able to bypass permission checks for file operations
- Piwigo is able to bind to privileged ports (< 1024)
- Piwigo is able to change group ID of processes
- Piwigo is able to change user ID of processes
App Metadata (Raw File)
{
"1.2.10": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/piwigo/1.2.10",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "15.6.0_1.2.10",
"version": "1.2.10",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "15.6.0",
"capabilities": [
{
"description": "Piwigo is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Piwigo is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Piwigo is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Piwigo is able to bind to privileged ports (< 1024)",
"name": "NET_BIND_SERVICE"
},
{
"description": "Piwigo is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Piwigo is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://piwigo.org/forum/viewforum.php?id=23",
"date_added": "2024-09-19",
"description": "Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.",
"home": "https://piwigo.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/piwigo/icons/icon.svg",
"keywords": [
"photo",
"gallery"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "piwigo",
"run_as_context": [
{
"description": "Piwigo runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
},
{
"description": "MariaDB runs as non-root user.",
"gid": 999,
"group_name": "mariadb",
"uid": 999,
"user_name": "mariadb"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/piwigo/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/piwigo/screenshots/screenshot2.png"
],
"sources": [
"https://github.com/linuxserver/docker-piwigo"
],
"title": "Piwigo",
"train": "community",
"version": "1.2.10"
},
"schema": {
"groups": [
{
"name": "Piwigo Configuration",
"description": "Configure Piwigo"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Piwigo"
},
{
"name": "Network Configuration",
"description": "Configure Network for Piwigo"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Piwigo"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Piwigo"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Piwigo"
}
],
"questions": [
{
"variable": "piwigo",
"label": "",
"group": "Piwigo Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "db_password",
"label": "Database Password",
"description": "The database password for Piwigo.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "db_root_password",
"label": "Root Database Password",
"description": "The root database password for Piwigo.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "admin_name",
"label": "Admin Name",
"description": "The admin name for Piwigo.</br>\nOnly used when Piwigo is first installed.</br>\nYou can change it later in the Piwigo WebUI.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": ""
}
},
{
"variable": "admin_password",
"label": "Admin Password",
"description": "The admin password for Piwigo.</br>\nOnly used when Piwigo is first installed.</br>\nYou can change it later in the Piwigo WebUI.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"password": true,
"default": ""
}
},
{
"variable": "admin_email",
"label": "Admin Mail",
"description": "The admin mail for Piwigo.</br>\nOnly used when Piwigo is first installed.</br>\nYou can change it later in the Piwigo WebUI.\n",
"schema": {
"type": "string",
"valid_chars": "^.+@.+\\..+$",
"valid_chars_error": "The email address is not valid.",
"required": true,
"immutable": true,
"default": ""
}
},
{
"variable": "language",
"label": "Language",
"description": "The language for Piwigo.</br>\nOnly used when Piwigo is first installed.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "en_UK",
"enum": [
{
"value": "af_ZA",
"description": "Afrikaans [ZA]"
},
{
"value": "es_AR",
"description": "Argentina [AR]"
},
{
"value": "az_AZ",
"description": "Az\u0259rbaycanca [AZ]"
},
{
"value": "id_ID",
"description": "Bahasa Indonesia [ID]"
},
{
"value": "pt_BR",
"description": "Brasil [BR]"
},
{
"value": "br_FR",
"description": "Brezhoneg [FR]"
},
{
"value": "ca_ES",
"description": "Catal\u00e0 [CA]"
},
{
"value": "da_DK",
"description": "Dansk [DK]"
},
{
"value": "de_DE",
"description": "Deutsch [DE]"
},
{
"value": "dv_MV",
"description": "Dhivehi [MV]"
},
{
"value": "en_GB",
"description": "English [GB]"
},
{
"value": "en_UK",
"description": "English [UK]"
},
{
"value": "en_US",
"description": "English [US]"
},
{
"value": "es_ES",
"description": "Espa\u00f1ol [ES]"
},
{
"value": "eo_EO",
"description": "Esperanto [EO]"
},
{
"value": "et_EE",
"description": "Estonian [EE]"
},
{
"value": "eu_ES",
"description": "Euskara [ES]"
},
{
"value": "fi_FI",
"description": "Finnish [FI]"
},
{
"value": "fr_FR",
"description": "Fran\u00e7ais [FR]"
},
{
"value": "fr_CA",
"description": "Fran\u00e7ais [QC]"
},
{
"value": "ga_IE",
"description": "Gaeilge [IE]"
},
{
"value": "gl_ES",
"description": "Galego [ES]"
},
{
"value": "hr_HR",
"description": "Hrvatski [HR]"
},
{
"value": "it_IT",
"description": "Italiano [IT]"
},
{
"value": "lv_LV",
"description": "Latvie\u0161u [LV]"
},
{
"value": "lt_LT",
"description": "Lietuviu [LT]"
},
{
"value": "lb_LU",
"description": "L\u00ebtzebuergesch [LU]"
},
{
"value": "hu_HU",
"description": "Magyar [HU]"
},
{
"value": "ms_MY",
"description": "Malay [MY]"
},
{
"value": "es_MX",
"description": "M\u00e9xico [MX]"
},
{
"value": "nl_NL",
"description": "Nederlands [NL]"
},
{
"value": "nb_NO",
"description": "Norsk bokm\u00e5l [NO]"
},
{
"value": "nn_NO",
"description": "Norwegian nynorsk [NO]"
},
{
"value": "pl_PL",
"description": "Polski [PL]"
},
{
"value": "pt_PT",
"description": "Portugu\u00eas [PT]"
},
{
"value": "ro_RO",
"description": "Rom\u00e2n\u0103 [RO]"
},
{
"value": "sk_SK",
"description": "Slovensky [SK]"
},
{
"value": "sl_SI",
"description": "Sloven\u0161cina [SI]"
},
{
"value": "sh_RS",
"description": "Srpski [SR]"
},
{
"value": "sv_SE",
"description": "Svenska [SE]"
},
{
"value": "vi_VN",
"description": "Ti\u1ebfng Vi\u1ec7t [VN]"
},
{
"value": "tr_TR",
"description": "T\u00fcrk\u00e7e [TR]"
},
{
"value": "wo_SN",
"description": "Wolof [SN]"
},
{
"value": "is_IS",
"description": "\u00cdslenska [IS]"
},
{
"value": "cs_CZ",
"description": "\u010cesky [CZ]"
},
{
"value": "el_GR",
"description": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac [GR]"
},
{
"value": "bg_BG",
"description": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 [BG]"
},
{
"value": "mk_MK",
"description": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438 [MK]"
},
{
"value": "mn_MN",
"description": "\u041c\u043e\u043d\u0433\u043e\u043b [MN]"
},
{
"value": "ru_RU",
"description": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439 [RU]"
},
{
"value": "sr_RS",
"description": "\u0421\u0440\u043f\u0441\u043a\u0438 [SR]"
},
{
"value": "uk_UA",
"description": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 [UA]"
},
{
"value": "he_IL",
"description": "\u05e2\u05d1\u05e8\u05d9\u05ea [IL]"
},
{
"value": "ar_EG",
"description": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u0645\u0635"
},
{
"value": "ar_SA",
"description": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629 [AR]"
},
{
"value": "ar_MA",
"description": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629 [MA]"
},
{
"value": "fa_IR",
"description": "\u067e\u0627\u0631\u0633\u06cc [IR]"
},
{
"value": "kok_IN",
"description": "\u0915\u094b\u0902\u0915\u0923\u0940 [IN]"
},
{
"value": "bn_IN",
"description": "\u09ac\u09be\u0982\u09b2\u09be[IN]"
},
{
"value": "gu_IN",
"description": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0[IN]"
},
{
"value": "ta_IN",
"description": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd [IN]"
},
{
"value": "kn_IN",
"description": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1 [IN]"
},
{
"value": "th_TH",
"description": "\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22 [TH]"
},
{
"value": "ka_GE",
"description": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8 [GE]"
},
{
"value": "km_KH",
"description": "\u1781\u17d2\u1798\u17c2\u179a [KH]"
},
{
"value": "zh_TW",
"description": "\u4e2d\u6587 (\u7e41\u9ad4) [TW]"
},
{
"value": "zh_HK",
"description": "\u4e2d\u6587 (\u9999\u6e2f) [HK]"
},
{
"value": "ja_JP",
"description": "\u65e5\u672c\u8a9e [JP]"
},
{
"value": "zh_CN",
"description": "\u7b80\u4f53\u4e2d\u6587 [CN]"
},
{
"value": "ko_KR",
"description": "\ud55c\uad6d\uc5b4 [KR]"
}
]
}
},
{
"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 Piwigo files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Piwigo 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": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": 30066,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "Piwigo Config Storage",
"description": "The path to store Piwigo Config.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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": "gallery",
"label": "Piwigo Gallery Storage",
"description": "The path to store Piwigo Gallery.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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": "mariadb_data",
"label": "Piwigo MariaDB Data Storage",
"description": "The path to store Piwigo MariaDB 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,
"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,
"hidden": true,
"default": "mariadb_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",
"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",
"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,
"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": "piwigo",
"description": "piwigo"
},
{
"value": "mariadb",
"description": "mariadb"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Piwigo.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Piwigo.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Piwigo</h1> <p><a href=\"https://piwigo.org/\">Piwigo</a> is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "15.6.0",
"capabilities": [
{
"description": "Piwigo is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Piwigo is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Piwigo is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Piwigo is able to bind to privileged ports (< 1024)",
"name": "NET_BIND_SERVICE"
},
{
"description": "Piwigo is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Piwigo is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://piwigo.org/forum/viewforum.php?id=23",
"date_added": "2024-09-19",
"description": "Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.",
"home": "https://piwigo.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/piwigo/icons/icon.svg",
"keywords": [
"photo",
"gallery"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "piwigo",
"run_as_context": [
{
"description": "Piwigo runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
},
{
"description": "MariaDB runs as non-root user.",
"gid": 999,
"group_name": "mariadb",
"uid": 999,
"user_name": "mariadb"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/piwigo/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/piwigo/screenshots/screenshot2.png"
],
"sources": [
"https://github.com/linuxserver/docker-piwigo"
],
"title": "Piwigo",
"train": "community",
"version": "1.2.10"
}
}
}
Planka

Get Started with Apps!
App Version: 1.26.3 (Changelog)
Keywords: kanban, project, task
Train: Community
Home Page: https://github.com/plankanban/planka
Added: 2024-09-10
Last Updated: 2025-09-04
Planka is an Elegant open source project tracking
Run as Context- Planka runs as non-root user.
Group: 1000 / planka
User: 1000 / planka - Postgres runs as non-root user.
Group: 999 / postgres
User: 999 / postgres

App Metadata (Raw File)
{
"1.3.10": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/planka/1.3.10",
"last_update": "2025-09-04 14:56:19",
"required_features": [],
"human_version": "1.26.3_1.3.10",
"version": "1.3.10",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.26.3",
"capabilities": [],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/plankanban/planka/releases",
"date_added": "2024-09-10",
"description": "Planka is an Elegant open source project tracking",
"home": "https://github.com/plankanban/planka",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/planka/icons/icon.png",
"keywords": [
"kanban",
"project",
"task"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "planka",
"run_as_context": [
{
"description": "Planka runs as non-root user.",
"gid": 1000,
"group_name": "planka",
"uid": 1000,
"user_name": "planka"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/planka/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/plankanban/planka"
],
"title": "Planka",
"train": "community",
"version": "1.3.10"
},
"schema": {
"groups": [
{
"name": "Planka Configuration",
"description": "Configure Planka"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Planka"
},
{
"name": "Network Configuration",
"description": "Configure Network for Planka"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Planka"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Planka"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Planka"
}
],
"questions": [
{
"variable": "planka",
"label": "",
"group": "Planka Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "postgres_image_selector",
"label": "Postgres Image (CAUTION)",
"description": "If you are changing this after the postgres directory has been initialized,</br>\nSTOP! and make sure you have a backup of your data.</br>\nChanging this will trigger an one way database upgrade.</br>\nYou can only select newer versions of postgres.</br>\nSelecting an older version will refuse to start.</br>\nIf something goes wrong, you will have to restore from backup.\n",
"schema": {
"type": "string",
"default": "postgres_17_image",
"required": true,
"enum": [
{
"value": "postgres_15_image",
"description": "Postgres 15"
},
{
"value": "postgres_17_image",
"description": "Postgres 17"
}
]
}
},
{
"variable": "db_password",
"label": "Database Password",
"description": "The password for Planka.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "secret_key",
"label": "Secret Key",
"description": "The secret key for Planka.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "default_admin_email",
"label": "Default Admin Email",
"description": "The default admin email for Planka.",
"schema": {
"type": "string",
"default": ""
}
},
{
"variable": "default_admin_name",
"label": "Default Admin Name",
"description": "The default admin name for Planka.",
"schema": {
"type": "string",
"default": "",
"show_if": [
[
"default_admin_email",
"!=",
""
]
],
"required": true
}
},
{
"variable": "default_admin_username",
"label": "Default Admin Username",
"description": "The default admin username for Planka.",
"schema": {
"type": "string",
"default": "",
"show_if": [
[
"default_admin_email",
"!=",
""
]
],
"required": true
}
},
{
"variable": "default_admin_password",
"label": "Default Admin Password",
"description": "The default admin password for Planka.",
"schema": {
"type": "string",
"default": "",
"show_if": [
[
"default_admin_email",
"!=",
""
]
],
"private": true,
"required": true
}
},
{
"variable": "base_url",
"label": "BaseURL",
"description": "The URL that Planka will be accessible from.</br>\nExample: </br>\nhttp://server.ip:30034</br>\nhttps://planka.example.com\n",
"schema": {
"type": "uri",
"default": "",
"required": true
}
},
{
"variable": "trust_proxy",
"label": "Trust Proxy",
"description": "Trust the reverse proxy when Planka is behind a reverse proxy.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"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": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 30034,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "avatars",
"label": "Planka Avatars Storage",
"description": "The path to store Planka Avatars.",
"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,
"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,
"hidden": true,
"default": "avatars"
}
},
{
"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": "background_images",
"label": "Planka Background Images Storage",
"description": "The path to store Planka Background Images.",
"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,
"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,
"hidden": true,
"default": "background-images"
}
},
{
"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": "attachments",
"label": "Planka Attachments Storage",
"description": "The path to store Planka Attachments.",
"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,
"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,
"hidden": true,
"default": "attachments"
}
},
{
"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": "postgres_data",
"label": "Planka Postgres Data Storage",
"description": "The path to store Planka Postgres 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,
"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,
"hidden": true,
"default": "postgres_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": "auto_permissions",
"label": "Automatic Permissions",
"description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
"schema": {
"type": "boolean",
"default": false,
"show_if": [
[
"acl_enable",
"=",
false
]
]
}
}
]
}
}
]
}
},
{
"variable": "additional_storage",
"label": "Additional Storage",
"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",
"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,
"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": "planka",
"description": "planka"
},
{
"value": "postgres",
"description": "postgres"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Planka.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Planka.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Planka</h1> <p><a href=\"https://github.com/plankanban/planka\">Planka</a> is an Elegant open source project tracking</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.26.3",
"capabilities": [],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/plankanban/planka/releases",
"date_added": "2024-09-10",
"description": "Planka is an Elegant open source project tracking",
"home": "https://github.com/plankanban/planka",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/planka/icons/icon.png",
"keywords": [
"kanban",
"project",
"task"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "planka",
"run_as_context": [
{
"description": "Planka runs as non-root user.",
"gid": 1000,
"group_name": "planka",
"uid": 1000,
"user_name": "planka"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/planka/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/plankanban/planka"
],
"title": "Planka",
"train": "community",
"version": "1.3.10"
}
}
}
Plex


Get Started with Apps!
App Version: 1.42.1.10060-4e8b05daf (Changelog)
Keywords: plex, media, entertainment, movies, series, tv, streaming
Train: Stable
Home Page: https://plex.tv
Added: 2024-06-04
Last Updated: 2025-09-02
Plex is a media server that allows you to stream your media to any Plex client.
Run as Context- Plex runs as root user.
Group: 0 / root
User: 0 / root


Security Capabilities
- Plex is able to change file ownership arbitrarily
- Plex is able to bypass file permission checks
- Plex is able to bypass permission checks for file operations
- Plex is able to send signals to any process
- Plex is able to change group ID of processes
- Plex is able to change user ID of processes
App Metadata (Raw File)
{
"1.2.10": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/stable/plex/1.2.10",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "1.42.1.10060-4e8b05daf_1.2.10",
"version": "1.2.10",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.42.1.10060-4e8b05daf",
"capabilities": [
{
"description": "Plex is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Plex is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Plex is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Plex is able to send signals to any process",
"name": "KILL"
},
{
"description": "Plex is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Plex is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://forums.plex.tv/t/plex-media-server/30447/",
"date_added": "2024-06-04",
"description": "Plex is a media server that allows you to stream your media to any Plex client.",
"home": "https://plex.tv",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/plex/icons/icon.png",
"keywords": [
"plex",
"media",
"entertainment",
"movies",
"series",
"tv",
"streaming"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "plex",
"run_as_context": [
{
"description": "Plex runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/plex/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/plex/screenshots/screenshot2.png"
],
"sources": [
"https://plex.tv",
"https://hub.docker.com/r/plexinc/pms-docker"
],
"title": "Plex",
"train": "stable",
"version": "1.2.10"
},
"schema": {
"groups": [
{
"name": "Plex Configuration",
"description": "Configure Plex"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Plex"
},
{
"name": "Network Configuration",
"description": "Configure Network for Plex"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Plex"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Plex"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Plex"
}
],
"questions": [
{
"variable": "TZ",
"group": "Plex Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "plex",
"label": "",
"group": "Plex Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "claim_token",
"label": "Claim Token",
"description": "The claim token for the server to obtain a real server token.\nIf not provided, server is will not be automatically logged in.\nIf server is already logged in, this parameter is ignored.\nYou can obtain a claim token to login your server to your plex account\nby visiting https://www.plex.tv/claim.\n",
"schema": {
"type": "string",
"default": "",
"private": true
}
},
{
"variable": "image_selector",
"label": "Image",
"description": "The image to use for Plex.\n",
"schema": {
"type": "string",
"default": "image",
"required": true,
"enum": [
{
"value": "image",
"description": "Plex Official Image"
},
{
"value": "plex_pass_image",
"description": "Plex Pass Image"
}
]
}
},
{
"variable": "allowed_networks",
"label": "Local Networks",
"description": "IP address or IP/netmask entries for networks that will be considered to be\non the local network when enforcing bandwidth restrictions. </br>\nIf set, all other IP addresses will be considered to be on the external\nnetwork and will be subject to external network bandwidth restrictions. </br>\nAdditionally, initial setup wizard will not be available on if your client is considered to be on the external network.</br>\nIf left blank, only the server's subnet is considered to be on the local network. </br>\n\"Server's subnet\" when host network is NOT enabled, is the docker's network. Therefore,\nall connections from other clients will be considered to be on the external network.\n",
"schema": {
"type": "list",
"default": [
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
],
"items": [
{
"variable": "network",
"label": "Network",
"schema": {
"type": "string",
"required": true
}
}
]
}
},
{
"variable": "devices",
"label": "Devices",
"description": "Devices to use for Plex. </br>\nExample: </br>\nHost Device: /dev/dvb </br>\nContainer Device: /dev/dvb\n",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "device",
"label": "Device",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "host_device",
"label": "Host Device",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "container_device",
"label": "Container Device",
"schema": {
"type": "string",
"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 Plex files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Plex 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": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"show_if": [
[
"host_network",
"=",
false
]
],
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": 32400,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"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": "dns_opts",
"label": "DNS Options",
"description": "DNS options for the container.</br>\nFormat: key:value</br>\nExample: attempts:3\n",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "option",
"label": "Option",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Plex Data Storage",
"description": "The path to store Plex 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,
"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,
"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": "config",
"label": "Plex Configuration Storage",
"description": "The path to store Plex Configuration.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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": "Plex Logs Storage",
"description": "The path to store Plex 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.</br>\nTemporary: Is a temporary directory that will be created on the disk as a docker volume.\ntmpfs: Is a temporary directory that will be created on the RAM.\n",
"schema": {
"type": "string",
"required": true,
"default": "temporary",
"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": "temporary",
"description": "Temporary (Temporary directory created on the disk)"
},
{
"value": "tmpfs",
"description": "tmpfs (Temporary directory created on the RAM)"
}
]
}
},
{
"variable": "tmpfs_config",
"label": "tmpfs Configuration",
"description": "The configuration for the tmpfs dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"tmpfs"
]
],
"attrs": [
{
"variable": "size",
"label": "Tmpfs Size Limit (in Mi)",
"description": "The maximum size (in Mi) of the temporary directory.</br>\nFor example: 500\n",
"schema": {
"type": "int",
"default": 500,
"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,
"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": "transcode",
"label": "Plex Transcode Storage",
"description": "The path to store Plex Transcode.",
"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.\nTemporary: Is a temporary directory that will be created on the disk as a docker volume.\ntmpfs: Is a temporary directory that will be created on the RAM.\n",
"schema": {
"type": "string",
"required": true,
"default": "temporary",
"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": "temporary",
"description": "Temporary (Temporary Directory created on the disk)"
},
{
"value": "tmpfs",
"description": "tmpfs (Temporary directory created on the RAM)"
}
]
}
},
{
"variable": "tmpfs_config",
"label": "tmpfs Configuration",
"description": "The configuration for the tmpfs dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"tmpfs"
]
],
"attrs": [
{
"variable": "size",
"label": "Tmpfs Size Limit (in Mi)",
"description": "The maximum size (in Mi) of the temporary directory.</br>\nFor example: 500\n",
"schema": {
"type": "int",
"default": 500,
"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,
"hidden": true,
"default": "transcode"
}
},
{
"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",
"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.</br>\nTemporary: Is a temporary directory that will be created on the disk as a docker volume.</br>\ntmpfs: Is a temporary directory that will be created on the RAM.</br>\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": "temporary",
"description": "Temporary (Temporary directory created on the disk)"
},
{
"value": "tmpfs",
"description": "Tmpfs (Temporary directory created on the RAM)"
}
]
}
},
{
"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": "tmpfs_config",
"label": "Tmpfs Configuration",
"description": "The configuration for the tmpfs dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"tmpfs"
]
],
"attrs": [
{
"variable": "size",
"label": "Tmpfs Size Limit (in Mi)",
"description": "The maximum size (in Mi) of the temporary directory.</br>\nFor example: 500\n",
"schema": {
"type": "int",
"default": 500,
"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": [],
"$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": "plex",
"description": "plex"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Plex.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Plex.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
},
{
"variable": "gpus",
"group": "Resources Configuration",
"label": "GPU Configuration",
"schema": {
"type": "dict",
"$ref": [
"definitions/gpu_configuration"
],
"attrs": []
}
}
]
}
}
]
},
"readme": "<h1>Plex</h1> <p><a href=\"https://plex.tv\">Plex</a> is a media server that allows you to stream your media to any Plex client.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.42.1.10060-4e8b05daf",
"capabilities": [
{
"description": "Plex is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Plex is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Plex is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Plex is able to send signals to any process",
"name": "KILL"
},
{
"description": "Plex is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Plex is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://forums.plex.tv/t/plex-media-server/30447/",
"date_added": "2024-06-04",
"description": "Plex is a media server that allows you to stream your media to any Plex client.",
"home": "https://plex.tv",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/plex/icons/icon.png",
"keywords": [
"plex",
"media",
"entertainment",
"movies",
"series",
"tv",
"streaming"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "plex",
"run_as_context": [
{
"description": "Plex runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/plex/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/plex/screenshots/screenshot2.png"
],
"sources": [
"https://plex.tv",
"https://hub.docker.com/r/plexinc/pms-docker"
],
"title": "Plex",
"train": "stable",
"version": "1.2.10"
}
}
}
Plex Auto Languages
Get Started with Apps!
Keywords: plex, languages
Train: Community
Home Page: https://github.com/JourneyDocker/Plex-Auto-Languages
Added: 2024-08-08
Last Updated: 2025-09-02
Plex Auto Languages offer automated language selection for Plex TV Shows
Run as Context- Plex Auto Languages runs as any non-root user.
Group: 568 / plex-auto-languages
User: 568 / plex-auto-languages
App Metadata (Raw File)
{
"1.3.6": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/plex-auto-languages/1.3.6",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "1.3.10_1.3.6",
"version": "1.3.6",
"app_metadata": {
"app_version": "1.3.10",
"capabilities": [],
"categories": [
"media"
],
"date_added": "2024-08-08",
"description": "Plex Auto Languages offer automated language selection for Plex TV Shows",
"home": "https://github.com/JourneyDocker/Plex-Auto-Languages",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/plex-auto-languages/icons/icon.svg",
"keywords": [
"plex",
"languages"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "plex-auto-languages",
"run_as_context": [
{
"description": "Plex Auto Languages runs as any non-root user.",
"gid": 568,
"group_name": "plex-auto-languages",
"uid": 568,
"user_name": "plex-auto-languages"
}
],
"screenshots": [],
"sources": [
"https://github.com/JourneyDocker/Plex-Auto-Languages"
],
"title": "Plex Auto Languages",
"train": "community",
"version": "1.3.6"
},
"schema": {
"groups": [
{
"name": "Plex Auto Languages Configuration",
"description": "Configure Plex Auto Languages"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Plex Auto Languages"
},
{
"name": "Network Configuration",
"description": "Configure Network for Plex Auto Languages"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Plex Auto Languages"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Plex Auto Languages"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Plex Auto Languages"
}
],
"questions": [
{
"variable": "TZ",
"group": "Plex Auto Languages Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "plex_auto_languages",
"label": "",
"group": "Plex Auto Languages Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "plex_url",
"label": "Plex URL",
"description": "The URL of your Plex server.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "plex_token",
"label": "Plex Token",
"description": "The token to your Plex server.</br>\nMore information on how to get your\ntoken can be found here https://github.com/RemiRigal/Plex-Auto-Languages#getting-started\n",
"schema": {
"type": "string",
"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 Plex Auto Languages files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Plex Auto Languages 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
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "Plex Auto Languages Config Storage",
"description": "The path to store Plex Auto Languages Config.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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",
"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",
"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,
"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": "plex-auto-languages",
"description": "plex-auto-languages"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Plex Auto Languages.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Plex Auto Languages.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Plex Auto Languages</h1> <p><a href=\"https://github.com/RemiRigal/Plex-Auto-Languages\">Plex Auto Languages</a> offer automated language selection for Plex TV Shows</p>",
"changelog": null,
"chart_metadata": {
"app_version": "1.3.10",
"capabilities": [],
"categories": [
"media"
],
"date_added": "2024-08-08",
"description": "Plex Auto Languages offer automated language selection for Plex TV Shows",
"home": "https://github.com/JourneyDocker/Plex-Auto-Languages",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/plex-auto-languages/icons/icon.svg",
"keywords": [
"plex",
"languages"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "plex-auto-languages",
"run_as_context": [
{
"description": "Plex Auto Languages runs as any non-root user.",
"gid": 568,
"group_name": "plex-auto-languages",
"uid": 568,
"user_name": "plex-auto-languages"
}
],
"screenshots": [],
"sources": [
"https://github.com/JourneyDocker/Plex-Auto-Languages"
],
"title": "Plex Auto Languages",
"train": "community",
"version": "1.3.6"
}
}
}
Plex Deployment
Support and documentation for applications within the Stable 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.
We welcome community contributions to keep this documentation current! Click Edit Page in the top right corner to propose changes to this article.
Plex is a media server that allows you to manage and stream your media (music, movies, live TV, etc.) to any Plex client.
Portainer


Get Started with Apps!
App Version: 2.33.1 (Changelog)
Keywords: docker, compose, container
Train: Community
Home Page: https://www.portainer.io
Added: 2024-08-07
Last Updated: 2025-09-02
Container management made easy
Run as Context- Portainer runs as root user.
Group: 0 / root
User: 0 / root


Host Mounts
- /var/run/docker.sock : Docker socket
Security Capabilities
- Portainer is able to change file ownership arbitrarily
- Portainer is able to bypass file permission checks
- Portainer is able to bypass permission checks for file operations
- Portainer is able to send signals to any process
- Portainer is able to set file capabilities on other files
- Portainer is able to change group ID of processes
- Portainer is able to transfer capabilities between processes
- Portainer is able to change user ID of processes
App Metadata (Raw File)
{
"1.4.16": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/portainer/1.4.16",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "2.33.1_1.4.16",
"version": "1.4.16",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.33.1",
"capabilities": [
{
"description": "Portainer is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Portainer is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Portainer is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Portainer is able to send signals to any process",
"name": "KILL"
},
{
"description": "Portainer is able to set file capabilities on other files",
"name": "SETFCAP"
},
{
"description": "Portainer is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Portainer is able to transfer capabilities between processes",
"name": "SETPCAP"
},
{
"description": "Portainer is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"management"
],
"changelog_url": "https://github.com/portainer/portainer/releases",
"date_added": "2024-08-07",
"description": "Container management made easy",
"home": "https://www.portainer.io",
"host_mounts": [
{
"description": "Docker socket",
"host_path": "/var/run/docker.sock"
}
],
"icon": "https://media.sys.truenas.net/apps/portainer/icons/icon.png",
"keywords": [
"docker",
"compose",
"container"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "portainer",
"run_as_context": [
{
"description": "Portainer runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/portainer/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/portainer/screenshots/screenshot2.png"
],
"sources": [
"https://www.portainer.io",
"https://github.com/portainer/portainer"
],
"title": "Portainer",
"train": "community",
"version": "1.4.16"
},
"schema": {
"groups": [
{
"name": "Portainer Configuration",
"description": "Configure Portainer"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Portainer"
},
{
"name": "Network Configuration",
"description": "Configure Network for Portainer"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Portainer"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Portainer"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Portainer"
}
],
"questions": [
{
"variable": "portainer",
"label": "",
"group": "Portainer Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "image_selector",
"label": "Image",
"description": "The image to use for Portainer.",
"schema": {
"type": "string",
"required": true,
"default": "image",
"enum": [
{
"value": "image",
"description": "Portainer Community Edition"
},
{
"value": "ee_image",
"description": "Portainer Enterprise Edition"
}
]
}
},
{
"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": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 31015,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"variable": "tunnel_port",
"label": "Tunnel Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 31016,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"variable": "http_port",
"label": "HTTP Port (Optional)",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 31017,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"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",
"description": "The certificate to use for Portainer.",
"schema": {
"type": "int",
"null": true,
"$ref": [
"definitions/certificate"
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Portainer Data Storage",
"description": "The path to store Portainer 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,
"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,
"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",
"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",
"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,
"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": "portainer",
"description": "portainer"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Portainer.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Portainer.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Portainer</h1> <p><a href=\"https://www.portainer.io\">Portainer</a> is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.33.1",
"capabilities": [
{
"description": "Portainer is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Portainer is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Portainer is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Portainer is able to send signals to any process",
"name": "KILL"
},
{
"description": "Portainer is able to set file capabilities on other files",
"name": "SETFCAP"
},
{
"description": "Portainer is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Portainer is able to transfer capabilities between processes",
"name": "SETPCAP"
},
{
"description": "Portainer is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"management"
],
"changelog_url": "https://github.com/portainer/portainer/releases",
"date_added": "2024-08-07",
"description": "Container management made easy",
"home": "https://www.portainer.io",
"host_mounts": [
{
"description": "Docker socket",
"host_path": "/var/run/docker.sock"
}
],
"icon": "https://media.sys.truenas.net/apps/portainer/icons/icon.png",
"keywords": [
"docker",
"compose",
"container"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "portainer",
"run_as_context": [
{
"description": "Portainer runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/portainer/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/portainer/screenshots/screenshot2.png"
],
"sources": [
"https://www.portainer.io",
"https://github.com/portainer/portainer"
],
"title": "Portainer",
"train": "community",
"version": "1.4.16"
}
}
}
Postgres


Get Started with Apps!
App Version: 17.6 (Changelog)
Keywords: database
Train: Community
Home Page: https://www.postgresql.org
Added: 2024-11-04
Last Updated: 2025-09-05
The PostgreSQL object-relational database system provides reliability and data integrity.
Run as Context- Postgres runs as non-root user.
Group: 999 / postgres
User: 999 / postgres
App Metadata (Raw File)
{
"1.1.8": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/postgres/1.1.8",
"last_update": "2025-09-05 14:25:56",
"required_features": [],
"human_version": "17.6_1.1.8",
"version": "1.1.8",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "17.6",
"capabilities": [],
"categories": [
"database"
],
"changelog_url": "https://www.postgresql.org/docs/release/",
"date_added": "2024-11-04",
"description": "The PostgreSQL object-relational database system provides reliability and data integrity.",
"home": "https://www.postgresql.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/postgres/icons/icon.png",
"keywords": [
"database"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "postgres",
"run_as_context": [
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [],
"sources": [
"https://hub.docker.com/_/postgres"
],
"title": "Postgres",
"train": "community",
"version": "1.1.8"
},
"schema": {
"groups": [
{
"name": "Postgres Configuration",
"description": "Configure Postgres"
},
{
"name": "Network Configuration",
"description": "Configure Network for Postgres"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Postgres"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Postgres"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Postgres"
}
],
"questions": [
{
"variable": "postgres",
"label": "",
"group": "Postgres Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "image_selector",
"label": "Image Selector",
"description": "The image to use for Postgres.</br>\nSelecting an image with pgvector will use a pgvector image (not the official postgres).\n",
"schema": {
"type": "string",
"default": "image",
"required": true,
"enum": [
{
"value": "image",
"description": "Postgres 17 Image"
},
{
"value": "v16_image",
"description": "Postgres 16 Image"
},
{
"value": "v15_image",
"description": "Postgres 15 Image"
},
{
"value": "v17_pgvector_image",
"description": "Postgres 17 Image with pgvector"
},
{
"value": "v16_pgvector_image",
"description": "Postgres 16 Image with pgvector"
},
{
"value": "v15_pgvector_image",
"description": "Postgres 15 Image with pgvector"
}
]
}
},
{
"variable": "user",
"label": "User",
"description": "The database user.",
"schema": {
"type": "string",
"default": "",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The database password.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "database",
"label": "Database",
"description": "The database name.",
"schema": {
"type": "string",
"default": "",
"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": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "tcp_port",
"label": "TCP Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 5432,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"variable": "host_network",
"label": "Host Network",
"description": "Bind to the host network. It's recommended to keep this disabled.",
"schema": {
"type": "boolean",
"default": false
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Postgres Data Storage",
"description": "The path to store Postgres 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,
"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,
"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",
"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",
"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,
"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": "postgres",
"description": "postgres"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Postgres.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Postgres.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Postgres</h1> <p><a href=\"https://www.postgresql.org\">Postgres</a> - Object-relational database system provides reliability and data integrity.</p> <p>The PostgreSQL object-relational database system provides reliability and data integrity.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "17.6",
"capabilities": [],
"categories": [
"database"
],
"changelog_url": "https://www.postgresql.org/docs/release/",
"date_added": "2024-11-04",
"description": "The PostgreSQL object-relational database system provides reliability and data integrity.",
"home": "https://www.postgresql.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/postgres/icons/icon.png",
"keywords": [
"database"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "postgres",
"run_as_context": [
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [],
"sources": [
"https://hub.docker.com/_/postgres"
],
"title": "Postgres",
"train": "community",
"version": "1.1.8"
}
}
}
Prometheus

Get Started with Apps!
App Version: v3.5.0 (Changelog)
Keywords: metrics, prometheus
Train: Stable
Home Page: https://prometheus.io
Added: 2024-08-02
Last Updated: 2025-09-02
The Prometheus monitoring system and time series database.
Run as Context- Prometheus runs as any non-root user.
Group: 568 / prometheus
User: 568 / prometheus

App Metadata (Raw File)
{
"1.3.8": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/stable/prometheus/1.3.8",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "v3.5.0_1.3.8",
"version": "1.3.8",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "v3.5.0",
"capabilities": [],
"categories": [
"monitoring"
],
"changelog_url": "https://github.com/prometheus/prometheus/releases/",
"date_added": "2024-08-02",
"description": "The Prometheus monitoring system and time series database.",
"home": "https://prometheus.io",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/prometheus/icons/icon.png",
"keywords": [
"metrics",
"prometheus"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "prometheus",
"run_as_context": [
{
"description": "Prometheus runs as any non-root user.",
"gid": 568,
"group_name": "prometheus",
"uid": 568,
"user_name": "prometheus"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/prometheus/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/prometheus/prometheus",
"https://prometheus.io"
],
"title": "Prometheus",
"train": "stable",
"version": "1.3.8"
},
"schema": {
"groups": [
{
"name": "Prometheus Configuration",
"description": "Configure Prometheus"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Prometheus"
},
{
"name": "Network Configuration",
"description": "Configure Network for Prometheus"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Prometheus"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Prometheus"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Prometheus"
}
],
"questions": [
{
"variable": "prometheus",
"label": "",
"group": "Prometheus Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "retention_time",
"label": "Retention Time",
"description": "The time to retain data for. Use the format 15d, 6w, 10y, etc.",
"schema": {
"type": "string",
"default": "1d",
"required": true
}
},
{
"variable": "retention_size",
"label": "Retention Size",
"description": "The size to retain data for. Use the format 100MB, 10GB, etc.",
"schema": {
"type": "string",
"default": ""
}
},
{
"variable": "wal_compression",
"label": "WAL Compression",
"description": "Compress the time series database write-ahead log.",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "additional_args",
"label": "Additional Arguments",
"description": "Additional arguments for Prometheus.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "arg",
"label": "Argument",
"schema": {
"type": "string",
"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 Prometheus files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Prometheus 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": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 30104,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"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": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "Prometheus Config Storage",
"description": "The path to store Prometheus Config.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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": "data",
"label": "Prometheus Data Storage",
"description": "The path to store Prometheus 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,
"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,
"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",
"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",
"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,
"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": "prometheus",
"description": "prometheus"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Prometheus.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Prometheus.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Prometheus</h1> <p><a href=\"https://prometheus.io/\">Prometheus</a> - Monitoring system and time series database.</p> <p>The configuration file is located at <code>/config/prometheus.yml</code> inside the container. Data is stored at <code>/data</code> inside the container.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "v3.5.0",
"capabilities": [],
"categories": [
"monitoring"
],
"changelog_url": "https://github.com/prometheus/prometheus/releases/",
"date_added": "2024-08-02",
"description": "The Prometheus monitoring system and time series database.",
"home": "https://prometheus.io",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/prometheus/icons/icon.png",
"keywords": [
"metrics",
"prometheus"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "prometheus",
"run_as_context": [
{
"description": "Prometheus runs as any non-root user.",
"gid": 568,
"group_name": "prometheus",
"uid": 568,
"user_name": "prometheus"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/prometheus/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/prometheus/prometheus",
"https://prometheus.io"
],
"title": "Prometheus",
"train": "stable",
"version": "1.3.8"
}
}
}
Prometheus Deployment
Support and documentation for applications within the Stable 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.
We welcome community contributions to keep this documentation current! Click Edit Page in the top right corner to propose changes to this article.
Prometheus is a monitoring platform that collects metrics from targets it monitors. Targets are system HTTP endpoints configured in the Prometheus web UI. Prometheus is itself an HTTP endpoint so it can monitor itself.
Prowlarr


Get Started with Apps!
App Version: 2.1.0.5180 (Changelog)
Keywords: indexer
Train: Community
Home Page: https://prowlarr.com
Added: 2024-07-31
Last Updated: 2025-09-08
Prowlarr is an indexer manager/proxy to integrate with your various PVR apps.
Run as Context- Prowlarr runs as any non-root user.
Group: 568 / prowlarr
User: 568 / prowlarr

App Metadata (Raw File)
{
"1.4.13": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/prowlarr/1.4.13",
"last_update": "2025-09-08 11:13:19",
"required_features": [],
"human_version": "2.1.0.5180_1.4.13",
"version": "1.4.13",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.1.0.5180",
"capabilities": [],
"categories": [
"media"
],
"changelog_url": "https://github.com/Prowlarr/Prowlarr/releases",
"date_added": "2024-07-31",
"description": "Prowlarr is an indexer manager/proxy to integrate with your various PVR apps.",
"home": "https://prowlarr.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/prowlarr/icons/icon.png",
"keywords": [
"indexer"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "prowlarr",
"run_as_context": [
{
"description": "Prowlarr runs as any non-root user.",
"gid": 568,
"group_name": "prowlarr",
"uid": 568,
"user_name": "prowlarr"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/prowlarr/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/home-operations/containers/tree/main/apps/prowlarr",
"https://prowlarr.com"
],
"title": "Prowlarr",
"train": "community",
"version": "1.4.13"
},
"schema": {
"groups": [
{
"name": "Prowlarr Configuration",
"description": "Configure Prowlarr"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Prowlarr"
},
{
"name": "Network Configuration",
"description": "Configure Network for Prowlarr"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Prowlarr"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Prowlarr"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Prowlarr"
}
],
"questions": [
{
"variable": "TZ",
"group": "Prowlarr Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "prowlarr",
"label": "",
"group": "Prowlarr Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "instance_name",
"label": "Instance Name",
"description": "The name of the Prowlarr instance.",
"schema": {
"type": "string",
"default": "Prowlarr",
"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 Prowlarr files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Prowlarr 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": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 30050,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"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": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "Prowlarr Config Storage",
"description": "The path to store Prowlarr Config.",
"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,
"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,
"hidden": true,
"default": "config"
}
},
{
"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",
"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",
"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,
"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": "prowlarr",
"description": "prowlarr"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Prowlarr.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Prowlarr.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Prowlarr</h1> <p><a href=\"https://github.com/Prowlarr/Prowlarr\">Prowlarr</a> is a music collection manager for Usenet and BitTorrent users.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.1.0.5180",
"capabilities": [],
"categories": [
"media"
],
"changelog_url": "https://github.com/Prowlarr/Prowlarr/releases",
"date_added": "2024-07-31",
"description": "Prowlarr is an indexer manager/proxy to integrate with your various PVR apps.",
"home": "https://prowlarr.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/prowlarr/icons/icon.png",
"keywords": [
"indexer"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "prowlarr",
"run_as_context": [
{
"description": "Prowlarr runs as any non-root user.",
"gid": 568,
"group_name": "prowlarr",
"uid": 568,
"user_name": "prowlarr"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/prowlarr/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/home-operations/containers/tree/main/apps/prowlarr",
"https://prowlarr.com"
],
"title": "Prowlarr",
"train": "community",
"version": "1.4.13"
}
}
}