Briefkasten
Get Started with Apps!
App Version: latest
Keywords: bookmark
Train: Community
Home Page: https://github.com/ndom91/briefkasten
Added: 2024-08-02
Last Updated: 2025-09-02
Briefkasten is a self hosted bookmarking app
Run as Context- Briefkasten runs as non-root user.
Group: 1001 / briefkasten
User: 1001 / briefkasten - 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/briefkasten/1.3.10",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "latest_1.3.10",
"version": "1.3.10",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "latest",
"capabilities": [],
"categories": [
"productivity"
],
"date_added": "2024-08-02",
"description": "Briefkasten is a self hosted bookmarking app",
"home": "https://github.com/ndom91/briefkasten",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/briefkasten/icons/icon.svg",
"keywords": [
"bookmark"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "briefkasten",
"run_as_context": [
{
"description": "Briefkasten runs as non-root user.",
"gid": 1001,
"group_name": "briefkasten",
"uid": 1001,
"user_name": "briefkasten"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot4.png"
],
"sources": [
"https://github.com/ndom91/briefkasten",
"https://docs.briefkastenhq.com/"
],
"title": "Briefkasten",
"train": "community",
"version": "1.3.10"
},
"schema": {
"groups": [
{
"name": "Briefkasten Configuration",
"description": "Configure Briefkasten"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Briefkasten"
},
{
"name": "Network Configuration",
"description": "Configure Network for Briefkasten"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Briefkasten"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Briefkasten"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Briefkasten"
}
],
"questions": [
{
"variable": "TZ",
"group": "Briefkasten Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "briefkasten",
"label": "",
"group": "Briefkasten 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": "nextauth_secret",
"label": "NextAuth Secret",
"description": "The secret used to encrypt the JWT token.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "postgres_password",
"label": "Postgres Password",
"description": "The password for Postgres.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "nextauth_url",
"label": "NextAuth URL",
"description": "The URL that Briefkasten will be accessible from.</br>\nExample: </br>\nhttp://server.ip:30080</br>\nhttps://Briefkasten.example.com\n",
"schema": {
"type": "uri",
"default": "",
"required": true
}
},
{
"variable": "smtp",
"label": "SMTP Auth Provider",
"description": "Configure SMTP for Briefkasten.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "enabled",
"label": "Enabled",
"description": "Enable SMTP for auth.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "server",
"label": "SMTP Server",
"description": "The SMTP server to use.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "from",
"label": "SMTP From",
"description": "The SMTP from address to use.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
}
]
}
},
{
"variable": "github",
"label": "GitHub Auth Provider",
"description": "Configure GitHub for Briefkasten.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "enabled",
"label": "Enabled",
"description": "Enable GitHub for auth.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "id",
"label": "GitHub Client ID",
"description": "The GitHub Client ID.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "secret",
"label": "GitHub Client Secret",
"description": "The GitHub Client Secret.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"private": true,
"required": true
}
}
]
}
},
{
"variable": "google",
"label": "Google Auth Provider",
"description": "Configure Google for Briefkasten.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "enabled",
"label": "Enabled",
"description": "Enable Google for auth.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "id",
"label": "Google Client ID",
"description": "The Google Client ID.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "secret",
"label": "Google Client Secret",
"description": "The Google Client Secret.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"private": true,
"required": true
}
}
]
}
},
{
"variable": "keycloak",
"label": "Keycloak Auth Provider",
"description": "Configure Keycloak for Briefkasten.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "enabled",
"label": "Enabled",
"description": "Enable Keycloak for auth.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "name",
"label": "Keycloak Name",
"description": "The Keycloak Name.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "id",
"label": "Keycloak Client ID",
"description": "The Keycloak Client ID.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "secret",
"label": "Keycloak Client Secret",
"description": "The Keycloak Client Secret.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"private": true,
"required": true
}
},
{
"variable": "issuer",
"label": "Keycloak Issuer",
"description": "The Keycloak Issuer.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
}
]
}
},
{
"variable": "authentik",
"label": "Authentik Auth Provider",
"description": "Configure Authentik for Briefkasten.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "enabled",
"label": "Enabled",
"description": "Enable Authentik for auth.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "name",
"label": "Authentik Name",
"description": "The Authentik Name.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "id",
"label": "Authentik Client ID",
"description": "The Authentik Client ID.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"required": true
}
},
{
"variable": "secret",
"label": "Authentik Client Secret",
"description": "The Authentik Client Secret.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"default": "",
"private": true,
"required": true
}
},
{
"variable": "issuer",
"label": "Authentik Issuer",
"description": "The Authentik Issuer.",
"schema": {
"type": "string",
"show_if": [
[
"enabled",
"=",
true
]
],
"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": "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": 30080,
"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": "postgres_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": "pg_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": []
}
}
]
}
},
{
"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": "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": "briefkasten",
"description": "briefkasten"
},
{
"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 Briefkasten.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Briefkasten.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Briefkasten</h1> <p><a href=\"https://github.com/ndom91/briefkasten\">Briefkasten</a> is a self hosted bookmarking app</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "latest",
"capabilities": [],
"categories": [
"productivity"
],
"date_added": "2024-08-02",
"description": "Briefkasten is a self hosted bookmarking app",
"home": "https://github.com/ndom91/briefkasten",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/briefkasten/icons/icon.svg",
"keywords": [
"bookmark"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "briefkasten",
"run_as_context": [
{
"description": "Briefkasten runs as non-root user.",
"gid": 1001,
"group_name": "briefkasten",
"uid": 1001,
"user_name": "briefkasten"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/briefkasten/screenshots/screenshot4.png"
],
"sources": [
"https://github.com/ndom91/briefkasten",
"https://docs.briefkastenhq.com/"
],
"title": "Briefkasten",
"train": "community",
"version": "1.3.10"
}
}
}
Calibre


Get Started with Apps!
App Version: 8.9.0 (Changelog)
Keywords: media, ebooks
Train: Community
Home Page: https://calibre-ebook.com/
Added: 2024-11-19
Last Updated: 2025-09-02
Calibre is the one stop solution for all your e-book needs.
Run as Context- Calibre runs as root user.
Group: 0 / root
User: 0 / root






Security Capabilities
- Calibre is able to change file ownership arbitrarily
- Calibre is able to bypass file permission checks
- Calibre is able to bypass permission checks for file operations
- Calibre is able to change group ID of processes
- Calibre is able to change user ID of processes
App Metadata (Raw File)
{
"1.1.11": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/calibre/1.1.11",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "8.9.0_1.1.11",
"version": "1.1.11",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "8.9.0",
"capabilities": [
{
"description": "Calibre is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Calibre is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Calibre is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Calibre is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Calibre is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://calibre-ebook.com/whats-new",
"date_added": "2024-11-19",
"description": "Calibre is the one stop solution for all your e-book needs.",
"home": "https://calibre-ebook.com/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/calibre/icons/icon.png",
"keywords": [
"media",
"ebooks"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "calibre",
"run_as_context": [
{
"description": "Calibre runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot4.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot5.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot6.png"
],
"sources": [
"https://github.com/linuxserver/docker-calibre",
"https://github.com/kovidgoyal/calibre",
"https://calibre-ebook.com/"
],
"title": "Calibre",
"train": "community",
"version": "1.1.11"
},
"schema": {
"groups": [
{
"name": "Calibre Configuration",
"description": "Configure Calibre"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Calibre"
},
{
"name": "Network Configuration",
"description": "Configure Network for Calibre"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Calibre"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Calibre"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Calibre"
}
],
"questions": [
{
"variable": "TZ",
"group": "Calibre Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "calibre",
"label": "",
"group": "Calibre Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "username",
"label": "Username",
"description": "The username for Calibre.",
"schema": {
"type": "string",
"default": ""
}
},
{
"variable": "password",
"label": "Password",
"description": "The password for Calibre.",
"schema": {
"type": "string",
"show_if": [
[
"username",
"!=",
""
]
],
"private": true,
"required": true,
"default": ""
}
},
{
"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 Calibre files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Calibre 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",
"description": "The port for Calibre Content Server WebUI",
"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": 32014,
"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",
"description": "The port for Calibre HTTP (Desktop GUI)",
"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": 32015,
"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": "https_port",
"label": "HTTPS Port",
"description": "The port for Calibre HTTPS (Desktop GUI)",
"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": 32016,
"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": "Calibre Config Storage",
"description": "The path to store Calibre Config/User Database.",
"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": []
}
}
]
}
},
{
"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": "calibre",
"description": "calibre"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Calibre.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Calibre.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Calibre</h1> <p><a href=\"https://calibre-ebook.com/\">Calibre</a> is the one stop solution for all your e-book needs.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "8.9.0",
"capabilities": [
{
"description": "Calibre is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Calibre is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Calibre is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Calibre is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Calibre is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://calibre-ebook.com/whats-new",
"date_added": "2024-11-19",
"description": "Calibre is the one stop solution for all your e-book needs.",
"home": "https://calibre-ebook.com/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/calibre/icons/icon.png",
"keywords": [
"media",
"ebooks"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "calibre",
"run_as_context": [
{
"description": "Calibre runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot4.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot5.png",
"https://media.sys.truenas.net/apps/calibre/screenshots/screenshot6.png"
],
"sources": [
"https://github.com/linuxserver/docker-calibre",
"https://github.com/kovidgoyal/calibre",
"https://calibre-ebook.com/"
],
"title": "Calibre",
"train": "community",
"version": "1.1.11"
}
}
}
Calibre Web

Get Started with Apps!
Keywords: media, ebooks
Train: Community
Home Page: https://github.com/janeczku/calibre-web
Added: 2024-11-13
Last Updated: 2025-09-02
Calibre Web is a web app for browsing, reading and downloading eBooks stored in a Calibre database
Run as Context- Calibre Web runs as root user.
Group: 0 / root
User: 0 / root

Security Capabilities
- Calibre Web is able to change file ownership arbitrarily
- Calibre Web is able to bypass file permission checks
- Calibre Web is able to bypass permission checks for file operations
- Calibre Web is able to change group ID of processes
- Calibre Web is able to change user ID of processes
App Metadata (Raw File)
{
"2.0.16": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/calibre-web/2.0.16",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "0.6.25_2.0.16",
"version": "2.0.16",
"app_metadata": {
"app_version": "0.6.25",
"capabilities": [
{
"description": "Calibre Web is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Calibre Web is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Calibre Web is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Calibre Web is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Calibre Web is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://github.com/janeczku/calibre-web/releases",
"date_added": "2024-11-13",
"description": "Calibre Web is a web app for browsing, reading and downloading eBooks stored in a Calibre database",
"home": "https://github.com/janeczku/calibre-web",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/calibre-web/icons/icon.svg",
"keywords": [
"media",
"ebooks"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "calibre-web",
"run_as_context": [
{
"description": "Calibre Web runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/calibre-web/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/linuxserver/docker-calibre-web",
"https://github.com/janeczku/calibre-web"
],
"title": "Calibre Web",
"train": "community",
"version": "2.0.16"
},
"schema": {
"groups": [
{
"name": "Calibre Web Configuration",
"description": "Configure Calibre Web"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Calibre Web"
},
{
"name": "Network Configuration",
"description": "Configure Network for Calibre Web"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Calibre Web"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Calibre Web"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Calibre Web"
}
],
"questions": [
{
"variable": "TZ",
"group": "Calibre Web Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "calibre_web",
"label": "",
"group": "Calibre Web Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"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 Calibre Web files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Calibre Web 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": 31067,
"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": "Calibre Web Config Storage",
"description": "The path to store Calibre Web 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": "books",
"label": "Calibre Web Books Storage",
"description": "The path to store Calibre Web Books.",
"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": "books"
}
},
{
"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": "calibre-web",
"description": "calibre-web"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Calibre Web.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Calibre Web.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Calibre Web</h1> <p><a href=\"https://github.com/janeczku/calibre-web\">Calibre Web</a> is a web app for browsing, reading and downloading eBooks stored in a Calibre database</p>",
"changelog": null,
"chart_metadata": {
"app_version": "0.6.25",
"capabilities": [
{
"description": "Calibre Web is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Calibre Web is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Calibre Web is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Calibre Web is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Calibre Web is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://github.com/janeczku/calibre-web/releases",
"date_added": "2024-11-13",
"description": "Calibre Web is a web app for browsing, reading and downloading eBooks stored in a Calibre database",
"home": "https://github.com/janeczku/calibre-web",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/calibre-web/icons/icon.svg",
"keywords": [
"media",
"ebooks"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "calibre-web",
"run_as_context": [
{
"description": "Calibre Web runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/calibre-web/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/linuxserver/docker-calibre-web",
"https://github.com/janeczku/calibre-web"
],
"title": "Calibre Web",
"train": "community",
"version": "2.0.16"
}
}
}
Castopod
Get Started with Apps!
App Version: 1.13.5 (Changelog)
Keywords: podcast
Train: Community
Home Page: https://castopod.org
Added: 2024-09-19
Last Updated: 2025-09-02
Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.
Run as Context- Castopod runs as root user.
Group: 0 / root
User: 0 / root - MariaDB runs as non-root user.
Group: 999 / mariadb
User: 999 / mariadb - Redis runs as any non-root user.
Group: 568 / redis
User: 568 / redis

Security Capabilities
- Castopod, Castopod Web are able to change file ownership arbitrarily
- Castopod is able to bypass file permission checks
- Castopod is able to bypass permission checks for file operations
- Castopod, Castopod Web are able to change group ID of processes
- Castopod, Castopod Web are able to change user ID of processes
App Metadata (Raw File)
{
"1.2.13": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/castopod/1.2.13",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "1.13.5_1.2.13",
"version": "1.2.13",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.13.5",
"capabilities": [
{
"description": "Castopod, Castopod Web are able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Castopod is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Castopod is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Castopod, Castopod Web are able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Castopod, Castopod Web are able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://code.castopod.org/adaures/castopod/-/releases",
"date_added": "2024-09-19",
"description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.",
"home": "https://castopod.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/castopod/icons/icon.svg",
"keywords": [
"podcast"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "castopod",
"run_as_context": [
{
"description": "Castopod 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"
},
{
"description": "Redis runs as any non-root user.",
"gid": 568,
"group_name": "redis",
"uid": 568,
"user_name": "redis"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/castopod/screenshots/screenshot1.png"
],
"sources": [
"https://hub.docker.com/r/castopod/castopod",
"https://code.castopod.org/adaures/castopod"
],
"title": "Castopod",
"train": "community",
"version": "1.2.13"
},
"schema": {
"groups": [
{
"name": "Castopod Configuration",
"description": "Configure Castopod"
},
{
"name": "Network Configuration",
"description": "Configure Network for Castopod"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Castopod"
},
{
"name": "Labels Configuration",
"description": "Configure labels for Castopod"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Castopod"
}
],
"questions": [
{
"variable": "castopod",
"label": "",
"group": "Castopod Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "db_password",
"label": "Database Password",
"description": "The database password for Castopod.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "db_root_password",
"label": "Root Database Password",
"description": "The root database password for Castopod.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "redis_password",
"label": "Redis Password",
"description": "The redis password for Castopod.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "analytics_salt",
"label": "Analytics Salt",
"description": "The analytics salt for Castopod.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "base_url",
"label": "Base URL",
"description": "The base URL for Castopod.</br>\nExample: http://your.server.ip:30085\n",
"schema": {
"type": "uri",
"required": true,
"default": ""
}
},
{
"variable": "web_timeout",
"label": "Web Timeout",
"description": "The timeout for Castopod requests in seconds.",
"schema": {
"type": "int",
"required": true,
"default": 900,
"min": 1
}
},
{
"variable": "web_max_body_size",
"label": "Web Max Body Size",
"description": "The maximum body size for Castopod requests in megabytes.",
"schema": {
"type": "int",
"required": true,
"default": 512,
"min": 1
}
},
{
"variable": "php_memory_limit",
"label": "PHP Memory Limit",
"description": "The PHP memory limit for Castopod.",
"schema": {
"type": "int",
"required": true,
"default": 512,
"min": 1
}
},
{
"variable": "enable_2fa",
"label": "Enable 2FA",
"description": "Enable 2FA for Castopod.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "disable_https_redirect",
"label": "Disable HTTPS Redirect",
"description": "Disable HTTPS redirect for Castopod. </br>\nThis is useful if you are using a reverse proxy with HTTPS.\n",
"schema": {
"type": "boolean",
"default": 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": "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": 30085,
"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": "data",
"label": "Castopod Data Storage",
"description": "The path to store Castopod 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": "mariadb_data",
"label": "Castopod MariaDB Data Storage",
"description": "The path to store Castopod 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": "castopod",
"description": "castopod"
},
{
"value": "castopod-web",
"description": "castopod-web"
},
{
"value": "mariadb",
"description": "mariadb"
},
{
"value": "redis",
"description": "redis"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Castopod.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Castopod.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Castopod</h1> <p><a href=\"https://castopod.org\">Castopod</a> is an open-source hosting platform made for podcasters who want engage and interact with their audience.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.13.5",
"capabilities": [
{
"description": "Castopod, Castopod Web are able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Castopod is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Castopod is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Castopod, Castopod Web are able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Castopod, Castopod Web are able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"media"
],
"changelog_url": "https://code.castopod.org/adaures/castopod/-/releases",
"date_added": "2024-09-19",
"description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.",
"home": "https://castopod.org",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/castopod/icons/icon.svg",
"keywords": [
"podcast"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "castopod",
"run_as_context": [
{
"description": "Castopod 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"
},
{
"description": "Redis runs as any non-root user.",
"gid": 568,
"group_name": "redis",
"uid": 568,
"user_name": "redis"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/castopod/screenshots/screenshot1.png"
],
"sources": [
"https://hub.docker.com/r/castopod/castopod",
"https://code.castopod.org/adaures/castopod"
],
"title": "Castopod",
"train": "community",
"version": "1.2.13"
}
}
}
Chia
Get Started with Apps!
App Version: 2.5.5 (Changelog)
Keywords: blockchain, hard-drive, chia
Train: Community
Home Page: https://www.chia.net/
Added: 2024-08-21
Last Updated: 2025-09-02
Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.
Run as Context- Chia runs as root user.
Group: 0 / root
User: 0 / root
App Metadata (Raw File)
{
"1.2.6": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/chia/1.2.6",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "2.5.5_1.2.6",
"version": "1.2.6",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.5.5",
"capabilities": [],
"categories": [
"financial"
],
"changelog_url": "https://github.com/Chia-Network/chia-blockchain/releases",
"date_added": "2024-08-21",
"description": "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.",
"home": "https://www.chia.net/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/chia/icons/icon.svg",
"keywords": [
"blockchain",
"hard-drive",
"chia"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "chia",
"run_as_context": [
{
"description": "Chia runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://github.com/Chia-Network/chia-docker",
"https://www.chia.net/"
],
"title": "Chia",
"train": "community",
"version": "1.2.6"
},
"schema": {
"groups": [
{
"name": "Chia Configuration",
"description": "Configure Chia"
},
{
"name": "Network Configuration",
"description": "Configure Network for Chia"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Chia"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Chia"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Chia"
}
],
"questions": [
{
"variable": "TZ",
"group": "Chia Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "chia",
"label": "",
"group": "Chia Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "service",
"label": "Service",
"description": "The service to run.",
"schema": {
"type": "string",
"default": "",
"enum": [
{
"value": "farmer-only",
"description": "Farmer only"
},
{
"value": "harverster",
"description": "Harvester"
},
{
"value": "",
"description": "Full node"
}
]
}
},
{
"variable": "farmer_address",
"label": "Farmer Address",
"schema": {
"type": "string",
"show_if": [
[
"service",
"=",
"harvester"
]
],
"required": true,
"default": ""
}
},
{
"variable": "farmer_port",
"label": "Farmer Port",
"schema": {
"type": "int",
"show_if": [
[
"service",
"=",
"harvester"
]
],
"default": 8447,
"required": true
}
},
{
"variable": "ca",
"label": "CA",
"schema": {
"type": "string",
"show_if": [
[
"service",
"=",
"harvester"
]
],
"required": true,
"default": ""
}
},
{
"variable": "full_node_peer",
"label": "Full Node Peer",
"schema": {
"type": "string",
"default": ""
}
},
{
"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": "chia_port",
"label": "Chia Port",
"description": "The port for Chia",
"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": 8444,
"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": "farmer_port",
"label": "Farmer Port",
"description": "The port for Farmer",
"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": 8447,
"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": "data",
"label": "Chia Data Storage",
"description": "The path to store Chia 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": "plots",
"label": "Chia Plots Storage",
"description": "The path to store Chia Plots.",
"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": "plots"
}
},
{
"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": "is_plot_dir",
"label": "Directory for Plots",
"description": "If this is checked, it will append the directory to <plots_dir> variable <br>\nKeep this unchecked if you want to mount a directory for anything else.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"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": "chia",
"description": "chia"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Chia.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Chia.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Chia</h1> <p><a href=\"https://www.chia.net/\">Chia</a> is a modern cryptocurrency built from scratch, designed to be efficient,decentralized, and secure.</p> <p>Key file is stored in <code>/plots/keyfile</code> and is generated automatically, if the file does not exist. If you want to use your own <code>keyfile</code>, you can create a file called <code>keyfile</code> in the <code>/plots</code> directory and it will be used instead.</p> <p>When set on harvester mode keys variable is set to none and no generation is performed.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2.5.5",
"capabilities": [],
"categories": [
"financial"
],
"changelog_url": "https://github.com/Chia-Network/chia-blockchain/releases",
"date_added": "2024-08-21",
"description": "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.",
"home": "https://www.chia.net/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/chia/icons/icon.svg",
"keywords": [
"blockchain",
"hard-drive",
"chia"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "chia",
"run_as_context": [
{
"description": "Chia runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://github.com/Chia-Network/chia-docker",
"https://www.chia.net/"
],
"title": "Chia",
"train": "community",
"version": "1.2.6"
}
}
}
Chia Deployment Notes
Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Market hosts but does not validate or maintain any linked resources associated with this app.
We welcome community contributions to keep this documentation current! Click Edit Page in the top right corner to propose changes to this article.
The TrueNAS Chia app installs the Chia Blockchain architecture in a Kubernetes container. Chia Blockchain is a cryptocurrency ecosystem that uses Proof of Space and Time, and allows users to work with digital money and interact with their assets and resources. Instead of using expensive hardware that consumes exorbitant amounts of electricity to mine crypto, it leverages existing empty hard disk space on your computer(s) to farm crypto with minimal resources.
ClamAV


Get Started with Apps!
App Version: 1.1.2-2 (Changelog)
Keywords: anti-virus, clamav
Train: Community
Home Page: https://www.clamav.net/
Added: 2024-08-01
Last Updated: 2025-09-02
ClamAV is an open source (GPLv2) anti-virus toolkit.
Run as Context- ClamAV runs as root user.
Group: 0 / root
User: 0 / root
Security Capabilities
- ClamAV is able to change file ownership arbitrarily
- ClamAV is able to bypass file permission checks
- ClamAV is able to bypass permission checks for file operations
- ClamAV is able to change group ID of processes
- ClamAV is able to change user ID of processes
App Metadata (Raw File)
{
"1.3.5": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/clamav/1.3.5",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "1.1.2-2_1.3.5",
"version": "1.3.5",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.1.2-2",
"capabilities": [
{
"description": "ClamAV is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "ClamAV is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "ClamAV is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "ClamAV is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "ClamAV is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"security"
],
"changelog_url": "https://github.com/Cisco-Talos/clamav/releases",
"date_added": "2024-08-01",
"description": "ClamAV is an open source (GPLv2) anti-virus toolkit.",
"home": "https://www.clamav.net/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/clamav/icons/icon.png",
"keywords": [
"anti-virus",
"clamav"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "clamav",
"run_as_context": [
{
"description": "ClamAV runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://docs.clamav.net/",
"https://www.clamav.net/"
],
"title": "ClamAV",
"train": "community",
"version": "1.3.5"
},
"schema": {
"groups": [
{
"name": "ClamAV Configuration",
"description": "Configure ClamAV"
},
{
"name": "Network Configuration",
"description": "Configure Network for ClamAV"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for ClamAV"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for ClamAV"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for ClamAV"
}
],
"questions": [
{
"variable": "clamav",
"label": "",
"group": "ClamAV Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "disable_clamd",
"label": "Disable Clamd",
"description": "Disable Clamd",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "disable_freshclamd",
"label": "Disable Freshclamd",
"description": "Disable Freshclamd",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "disable_milterd",
"label": "Disable Milterd",
"description": "Disable Milterd",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "clamd_startup_timeout",
"label": "Clamd Startup Timeout",
"description": "Clamd Startup Timeout",
"schema": {
"type": "int",
"default": 1800,
"required": true
}
},
{
"variable": "freshclamd_checks",
"label": "Freshclamd Checks",
"description": "Freshclamd Checks",
"schema": {
"type": "int",
"default": 1,
"min": 1,
"max": 50,
"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": "clamd_port",
"label": "Clamd 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": 30005,
"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": "milterd_port",
"label": "Milterd 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": 30006,
"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": "sigdb",
"label": "ClamAV Signature Database Storage",
"description": "The path to store ClamAV Signature Database.",
"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": "sigdb"
}
},
{
"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": "scandir",
"label": "ClamAV Scan Directory Storage",
"description": "The path to store ClamAV Scan Directory.",
"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": "scandir"
}
},
{
"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": "clamav",
"description": "clamav"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 ClamAV.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for ClamAV.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>ClamAV</h1> <p><a href=\"https://www.clamav.net/\">ClamAV</a> - ClamAV\u00ae is an open-source antivirus engine for detecting trojans, viruses, malware & other malicious threats.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "1.1.2-2",
"capabilities": [
{
"description": "ClamAV is able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "ClamAV is able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "ClamAV is able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "ClamAV is able to change group ID of processes",
"name": "SETGID"
},
{
"description": "ClamAV is able to change user ID of processes",
"name": "SETUID"
}
],
"categories": [
"security"
],
"changelog_url": "https://github.com/Cisco-Talos/clamav/releases",
"date_added": "2024-08-01",
"description": "ClamAV is an open source (GPLv2) anti-virus toolkit.",
"home": "https://www.clamav.net/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/clamav/icons/icon.png",
"keywords": [
"anti-virus",
"clamav"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "clamav",
"run_as_context": [
{
"description": "ClamAV runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [],
"sources": [
"https://docs.clamav.net/",
"https://www.clamav.net/"
],
"title": "ClamAV",
"train": "community",
"version": "1.3.5"
}
}
}
Cloudflared


Get Started with Apps!
App Version: 2025.8.1 (Changelog)
Keywords: network, cloudflare, tunnel
Train: Community
Home Page: https://github.com/cloudflare/cloudflared
Added: 2024-08-02
Last Updated: 2025-09-02
Cloudflared is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge.
Run as Context- Cloudflared runs as any non-root user.
Group: 568 / cloudflared
User: 568 / cloudflared
App Metadata (Raw File)
{
"1.3.11": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/cloudflared/1.3.11",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "2025.8.1_1.3.11",
"version": "1.3.11",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2025.8.1",
"capabilities": [],
"categories": [
"networking"
],
"changelog_url": "https://github.com/cloudflare/cloudflared/blob/master/RELEASE_NOTES",
"date_added": "2024-08-02",
"description": "Cloudflared is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge.",
"home": "https://github.com/cloudflare/cloudflared",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/cloudflared/icons/icon.png",
"keywords": [
"network",
"cloudflare",
"tunnel"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "cloudflared",
"run_as_context": [
{
"description": "Cloudflared runs as any non-root user.",
"gid": 568,
"group_name": "cloudflared",
"uid": 568,
"user_name": "cloudflared"
}
],
"screenshots": [],
"sources": [
"https://github.com/cloudflare/cloudflared",
"https://hub.docker.com/r/cloudflare/cloudflared"
],
"title": "Cloudflared",
"train": "community",
"version": "1.3.11"
},
"schema": {
"groups": [
{
"name": "Cloudflared Configuration",
"description": "Configure Cloudflared"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Cloudflared"
},
{
"name": "Network Configuration",
"description": "Configure Network for Cloudflared"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Cloudflared"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Cloudflared"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Cloudflared"
}
],
"questions": [
{
"variable": "cloudflared",
"label": "",
"group": "Cloudflared Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "mode",
"label": "Mode",
"description": "The mode to use for Cloudflared.",
"schema": {
"type": "string",
"default": "tunnel",
"enum": [
{
"value": "tunnel",
"description": "Tunnel"
},
{
"value": "proxy-dns",
"description": "Proxy DNS"
}
]
}
},
{
"variable": "tunnel_token",
"label": "Tunnel Token",
"description": "The Tunnel Token to use for Cloudflared.",
"schema": {
"type": "string",
"show_if": [
[
"mode",
"=",
"tunnel"
]
],
"required": true
}
},
{
"variable": "tunnel_dns_upstream",
"label": "Tunnel DNS Upstreams",
"description": "Upstream DNS servers to use for DNS over Cloudflare Tunnel.",
"schema": {
"type": "list",
"show_if": [
[
"mode",
"=",
"proxy-dns"
]
],
"default": [
"https://1.1.1.1/dns-query",
"https://1.0.0.1/dns-query"
],
"items": [
{
"variable": "upstream",
"label": "Upstream",
"schema": {
"type": "string",
"required": true
}
}
]
}
},
{
"variable": "additional_args",
"label": "Additional Arguments",
"description": "Configure additional arguments for Cloudflared.",
"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 Cloudflared files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Cloudflared 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": "tunnel_dns_port",
"label": "Tunnel DNS Port",
"description": "Configure the port for DNS over Cloudflare Tunnel.",
"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": 8053,
"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": "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": "cloudflared",
"description": "cloudflared"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Cloudflared.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Cloudflared.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Cloudflared</h1> <p><a href=\"https://github.com/cloudflare/cloudflared\">Cloudflared</a> is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge.</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "2025.8.1",
"capabilities": [],
"categories": [
"networking"
],
"changelog_url": "https://github.com/cloudflare/cloudflared/blob/master/RELEASE_NOTES",
"date_added": "2024-08-02",
"description": "Cloudflared is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge.",
"home": "https://github.com/cloudflare/cloudflared",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/cloudflared/icons/icon.png",
"keywords": [
"network",
"cloudflare",
"tunnel"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "cloudflared",
"run_as_context": [
{
"description": "Cloudflared runs as any non-root user.",
"gid": 568,
"group_name": "cloudflared",
"uid": 568,
"user_name": "cloudflared"
}
],
"screenshots": [],
"sources": [
"https://github.com/cloudflare/cloudflared",
"https://hub.docker.com/r/cloudflare/cloudflared"
],
"title": "Cloudflared",
"train": "community",
"version": "1.3.11"
}
}
}
Collabora


Get Started with Apps!
App Version: 25.04.5.1.1 (Changelog)
Keywords: office, documents, productivity
Train: Stable
Home Page: https://www.collaboraoffice.com/
Added: 2024-08-02
Last Updated: 2025-09-02
Collabora is a collaborative online office suite based on LibreOffice technology
Run as Context- Collabora runs as non-root user.
Group: 101 / cool
User: 100 / cool - Nginx runs as root user.
Group: 0 / root
User: 0 / root

Security Capabilities
- Collabora, Nginx are able to change file ownership arbitrarily
- Collabora, Nginx are able to bypass file permission checks
- Collabora, Nginx are able to bypass permission checks for file operations
- Collabora is able to create special files using mknod()
- Collabora is able to set file capabilities on other files
- Collabora, Nginx are able to change group ID of processes
- Collabora, Nginx are able to change user ID of processes
- Collabora is able to use chroot() system call
App Metadata (Raw File)
{
"1.3.14": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/stable/collabora/1.3.14",
"last_update": "2025-09-02 11:33:24",
"required_features": [],
"human_version": "25.04.5.1.1_1.3.14",
"version": "1.3.14",
"app_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "25.04.5.1.1",
"capabilities": [
{
"description": "Collabora, Nginx are able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Collabora, Nginx are able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Collabora, Nginx are able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Collabora is able to create special files using mknod()",
"name": "MKNOD"
},
{
"description": "Collabora is able to set file capabilities on other files",
"name": "SETFCAP"
},
{
"description": "Collabora, Nginx are able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Collabora, Nginx are able to change user ID of processes",
"name": "SETUID"
},
{
"description": "Collabora is able to use chroot() system call",
"name": "SYS_CHROOT"
}
],
"categories": [
"productivity"
],
"changelog_url": "https://www.collaboraonline.com/collabora-online-24-04-release-notes/",
"date_added": "2024-08-02",
"description": "Collabora is a collaborative online office suite based on LibreOffice technology",
"home": "https://www.collaboraoffice.com/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/collabora/icons/icon.png",
"keywords": [
"office",
"documents",
"productivity"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "collabora",
"run_as_context": [
{
"description": "Collabora runs as non-root user.",
"gid": 101,
"group_name": "cool",
"uid": 100,
"user_name": "cool"
},
{
"description": "Nginx runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/collabora/screenshots/screenshot1.png"
],
"sources": [
"https://www.collaboraoffice.com/",
"https://github.com/CollaboraOnline/online",
"https://hub.docker.com/r/collabora/code"
],
"title": "Collabora",
"train": "stable",
"version": "1.3.14"
},
"schema": {
"groups": [
{
"name": "Collabora Configuration",
"description": "Configure Collabora"
},
{
"name": "Network Configuration",
"description": "Configure Network for Collabora"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Collabora"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Collabora"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Collabora"
}
],
"questions": [
{
"variable": "TZ",
"group": "Collabora Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "collabora",
"label": "",
"group": "Collabora Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "server_name",
"label": "Server Name",
"description": "The server name for Collabora.",
"schema": {
"type": "string",
"default": "",
"$ref": [
"definitions/nodeIP"
]
}
},
{
"variable": "enable_webui",
"label": "Enable WebUI",
"description": "Enable WebUI for Collabora.",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "username",
"label": "Username",
"description": "The username for Collabora.",
"schema": {
"type": "string",
"show_if": [
[
"enable_webui",
"=",
true
]
],
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The password for Collabora.",
"schema": {
"type": "string",
"show_if": [
[
"enable_webui",
"=",
true
]
],
"valid_chars": "^[a-zA-Z0-9!@#$%^&*?]{8,}$|^$",
"valid_chars_error": "Password must be at least 8 characters long and contain at least one of the following:</br>\n- Uppercase letter</br>\n- Lowercase letter</br>\n- Number</br>\n- Special character (!@#$%^&*?)</br>\n- **Only** the above characters are allowed\n",
"required": true,
"private": true
}
},
{
"variable": "aliasgroup1",
"label": "Alias Group 1",
"description": "List of domains that will be allowed to access the Collabora server\nType one domain per line\n",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "alias",
"label": "Alias",
"schema": {
"type": "string"
}
}
]
}
},
{
"variable": "dictionaries",
"label": "Dictionaries",
"description": "Dictionaries to be used by Collabora.",
"schema": {
"type": "list",
"default": [
"de_DE",
"en_GB",
"en_US",
"es_ES",
"fr_FR",
"it",
"nl",
"pt_BR",
"pt_PT",
"ru"
],
"items": [
{
"variable": "dictionary",
"label": "Dictionary",
"schema": {
"type": "string",
"default": "",
"required": true
}
}
]
}
},
{
"variable": "extra_params",
"label": "Extra Parameters",
"description": "Extra parameters to be passed to Collabora.",
"schema": {
"type": "list",
"default": [
"--o:welcome.enable=false",
"--o:user_interface.mode=notebookbar",
"--o:ssl.termination=true",
"--o:ssl.enable=false",
"--o:net.proto=IPv4",
"--o:logging.level=warning",
"--o:logging.level_startup=warning",
"--o:mount_jail_tree=false"
],
"items": [
{
"variable": "extraParam",
"label": "Extra Parameter",
"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": "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": 9980,
"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": "certificate_id",
"label": "Certificate ID",
"description": "The certificate ID to use for Elastic Search.",
"schema": {
"type": "int",
"null": true,
"$ref": [
"definitions/certificate"
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"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": "collabora",
"description": "collabora"
},
{
"value": "nginx",
"description": "nginx"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Collabora.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Collabora.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Collabora</h1> <p><a href=\"https://www.collaboraoffice.com/\">Collabora</a> is a collaborative online office suite based on LibreOffice technology</p>",
"changelog": null,
"chart_metadata": {
"annotations": {
"min_scale_version": "24.10.2.2"
},
"app_version": "25.04.5.1.1",
"capabilities": [
{
"description": "Collabora, Nginx are able to change file ownership arbitrarily",
"name": "CHOWN"
},
{
"description": "Collabora, Nginx are able to bypass file permission checks",
"name": "DAC_OVERRIDE"
},
{
"description": "Collabora, Nginx are able to bypass permission checks for file operations",
"name": "FOWNER"
},
{
"description": "Collabora is able to create special files using mknod()",
"name": "MKNOD"
},
{
"description": "Collabora is able to set file capabilities on other files",
"name": "SETFCAP"
},
{
"description": "Collabora, Nginx are able to change group ID of processes",
"name": "SETGID"
},
{
"description": "Collabora, Nginx are able to change user ID of processes",
"name": "SETUID"
},
{
"description": "Collabora is able to use chroot() system call",
"name": "SYS_CHROOT"
}
],
"categories": [
"productivity"
],
"changelog_url": "https://www.collaboraonline.com/collabora-online-24-04-release-notes/",
"date_added": "2024-08-02",
"description": "Collabora is a collaborative online office suite based on LibreOffice technology",
"home": "https://www.collaboraoffice.com/",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/collabora/icons/icon.png",
"keywords": [
"office",
"documents",
"productivity"
],
"lib_version": "2.1.49",
"lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "collabora",
"run_as_context": [
{
"description": "Collabora runs as non-root user.",
"gid": 101,
"group_name": "cool",
"uid": 100,
"user_name": "cool"
},
{
"description": "Nginx runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/collabora/screenshots/screenshot1.png"
],
"sources": [
"https://www.collaboraoffice.com/",
"https://github.com/CollaboraOnline/online",
"https://hub.docker.com/r/collabora/code"
],
"title": "Collabora",
"train": "stable",
"version": "1.3.14"
}
}
}
Collabora Deployment Notes
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.
The TrueNAS Collabora app offers an efficient solution for deploying and managing a powerful online office suite. TrueNAS installs the Collabora app in a Docker container using Docker Compose. Once deployed, you can access the Collabora Online interface through TrueNAS, enabling seamless document editing and collaboration. Collabora supports popular file formats like DOCX, XLSX, and PPTX, ensuring compatibility with Microsoft Office documents. With real-time collaboration, robust editing tools, and integration with platforms like Nextcloud, the Collabora app provides a reliable and feature-rich environment for your productivity needs.