Paperless-ngx

Get Started with Apps!
Keywords: document, management
Train: Community
Home Page: https://docs.paperless-ngx.com
Added: 2024-09-10
Last Updated: 2025-04-23
Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
Run as Context- Paperless-ngx runs as root user.
Group: 0 / root
User: 0 / root - Postgres runs as non-root user.
Group: 999 / postgres
User: 999 / postgres - Redis runs as a non-root user and root group.
Group: 0 / root
User: 1001 / redis - Tika runs as a non-root user.
Group: 35002 / tika
User: 35002 / tika - Gotenberg runs as a non-root user.
Group: 1001 / gotenberg
User: 1001 / gotenberg








Security Capabilities
- Paperless-ngx is able to chown files.
- Paperless-ngx is able to bypass permission checks.
- Paperless-ngx is able bypass permission checks for it's sub-processes.
- Paperless-ngx is able to set group ID for it's sub-processes.
- Paperless-ngx is able to set user ID for it's sub-processes.
App Metadata (Raw File)
{
"1.2.38": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/paperless-ngx/1.2.38",
"last_update": "2025-04-23 17:40:39",
"required_features": [],
"human_version": "2.15.3_1.2.38",
"version": "1.2.38",
"app_metadata": {
"app_version": "2.15.3",
"capabilities": [
{
"description": "Paperless-ngx is able to chown files.",
"name": "CHOWN"
},
{
"description": "Paperless-ngx is able to bypass permission checks.",
"name": "DAC_OVERRIDE"
},
{
"description": "Paperless-ngx is able bypass permission checks for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Paperless-ngx is able to set group ID for it's sub-processes.",
"name": "SETGID"
},
{
"description": "Paperless-ngx is able to set user ID for it's sub-processes.",
"name": "SETUID"
}
],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/paperless-ngx/paperless-ngx/releases",
"date_added": "2024-09-10",
"description": "Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.",
"home": "https://docs.paperless-ngx.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/paperless-ngx/icons/icon.svg",
"keywords": [
"document",
"management"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "paperless-ngx",
"run_as_context": [
{
"description": "Paperless-ngx runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
},
{
"description": "Redis runs as a non-root user and root group.",
"gid": 0,
"group_name": "root",
"uid": 1001,
"user_name": "redis"
},
{
"description": "Tika runs as a non-root user.",
"gid": 35002,
"group_name": "tika",
"uid": 35002,
"user_name": "tika"
},
{
"description": "Gotenberg runs as a non-root user.",
"gid": 1001,
"group_name": "gotenberg",
"uid": 1001,
"user_name": "gotenberg"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot4.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot5.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot6.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot7.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot8.png"
],
"sources": [
"https://hub.docker.com/r/paperlessngx/paperless-ngx",
"https://github.com/paperless-ngx/paperless-ngx"
],
"title": "Paperless-ngx",
"train": "community",
"version": "1.2.38"
},
"schema": {
"groups": [
{
"name": "Paperless-ngx Configuration",
"description": "Configure Paperless-ngx"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Paperless-ngx"
},
{
"name": "Network Configuration",
"description": "Configure Network for Paperless-ngx"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Paperless-ngx"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Paperless-ngx"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Paperless-ngx"
}
],
"questions": [
{
"variable": "TZ",
"group": "Paperless-ngx Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "paperless",
"label": "",
"group": "Paperless-ngx 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_15_image",
"required": true,
"enum": [
{
"value": "postgres_15_image",
"description": "Postgres 15"
},
{
"value": "postgres_17_image",
"description": "Postgres 17"
}
]
}
},
{
"variable": "db_password",
"label": "Database Password",
"description": "The password for Paperless-ngx.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "redis_password",
"label": "Redis Password",
"description": "The password for Paperless-ngx.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "secret_key",
"label": "Secret Key",
"description": "The secret key for Paperless-ngx.",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true
}
},
{
"variable": "admin_user",
"label": "Admin User",
"description": "The admin user for Paperless-ngx.</br>\nIt is only used for the initial installation.\n",
"schema": {
"type": "string",
"default": "",
"required": true,
"immutable": true
}
},
{
"variable": "admin_mail",
"label": "Admin Mail",
"description": "The admin mail for Paperless-ngx.</br>\nIt is only used for the initial installation.\n",
"schema": {
"type": "string",
"default": "",
"required": true,
"immutable": true
}
},
{
"variable": "admin_password",
"label": "Admin Password",
"description": "The admin password for Paperless-ngx.</br>\nIt is only used for the initial installation.\n",
"schema": {
"type": "string",
"default": "",
"required": true,
"private": true,
"immutable": true
}
},
{
"variable": "enable_trash",
"label": "Enable Trash",
"description": "Enable the trash feature for Paperless-ngx.</br>\nWhen enabled, documents will be moved to the trash instead of being deleted.\n",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "enable_tika_gotenberg",
"label": "Enable Tika and Gotenberg",
"description": "Enable Tika and Gotenberg feature for Paperless-ngx.</br>\nWhen enabled, Paperless can parse \"Office\" documents and E-Mails (such as \".doc\", \".xlsx\", \".odt\" and \".eml\")\n",
"schema": {
"type": "boolean",
"default": true
}
},
{
"variable": "gotenberg_chromium_disable_javascript",
"label": "Gotenberg Chromium Disable Javascript",
"description": "Disable Javascript in Chromium.</br>\nWhen enabled, Gotenberg will not execute Javascript in Chromium.\n",
"schema": {
"show_if": [
[
"enable_tika_gotenberg",
"=",
true
]
],
"type": "boolean",
"default": true
}
},
{
"variable": "gotenberg_chromium_allow_list_regex",
"label": "Gotenberg Chromium Allow List Regex",
"description": "Allow List of URLs that Gotenberg will allow to be rendered.</br>\nWhen empty, Gotenberg will allow all URLs to be rendered.\n",
"schema": {
"show_if": [
[
"enable_tika_gotenberg",
"=",
true
]
],
"type": "string",
"default": "^file:///tmp/.*"
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for Paperless-ngx.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "env",
"label": "Environment Variable",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "run_as",
"label": "",
"group": "User and Group Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "user",
"label": "User ID",
"description": "The user id that Paperless-ngx files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Paperless-ngx 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 Paperless-ngx WebUI",
"schema": {
"type": "int",
"default": 30070,
"required": true,
"$ref": [
"definitions/port"
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Paperless-ngx Data Storage",
"description": "The path to store Paperless-ngx Data.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "data"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "media",
"label": "Paperless-ngx Media Storage",
"description": "The path to store Paperless-ngx Media.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "media"
}
},
{
"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": "consume",
"label": "Paperless-ngx Consume Storage",
"description": "The path to store Paperless-ngx Consume.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "consume"
}
},
{
"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": "trash",
"label": "Paperless-ngx Trash Storage",
"description": "The path to store Paperless-ngx Trash.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "trash"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "postgres_data",
"label": "Paperless-ngx Postgres Data Storage",
"description": "The path to store Paperless-ngx 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,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "postgres_data"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
},
{
"variable": "auto_permissions",
"label": "Automatic Permissions",
"description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
"schema": {
"type": "boolean",
"default": false,
"show_if": [
[
"acl_enable",
"=",
false
]
]
}
}
]
}
}
]
}
},
{
"variable": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for Paperless-ngx.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storageEntry",
"label": "Storage Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"immutable": true,
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
},
{
"value": "cifs",
"description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
}
]
}
},
{
"variable": "read_only",
"label": "Read Only",
"description": "Mount the volume as read only.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "mount_path",
"label": "Mount Path",
"description": "The path inside the container to mount the storage.",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "storage_entry"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
}
]
}
},
{
"variable": "cifs_config",
"label": "SMB Configuration",
"description": "The configuration for the SMB dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"cifs"
]
],
"attrs": [
{
"variable": "server",
"label": "Server",
"description": "The server to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "path",
"label": "Path",
"description": "The path to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "username",
"label": "Username",
"description": "The username to use for the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The password to use for the SMB share.",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "domain",
"label": "Domain",
"description": "The domain to use for the SMB share.",
"schema": {
"type": "string"
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "labels",
"label": "",
"group": "Labels Configuration",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "label",
"label": "Label",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "key",
"label": "Key",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "Containers where the label should be applied",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "paperless",
"description": "paperless"
},
{
"value": "postgres",
"description": "postgres"
},
{
"value": "redis",
"description": "redis"
},
{
"value": "tika",
"description": "tika"
},
{
"value": "gotenberg",
"description": "gotenberg"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"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 Paperless-ngx.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Paperless-ngx.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Paperless-ngx</h1> <p><a href=\"https://docs.paperless-ngx.com\">Paperless-ngx</a> is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.</p>",
"changelog": null,
"chart_metadata": {
"app_version": "2.15.3",
"capabilities": [
{
"description": "Paperless-ngx is able to chown files.",
"name": "CHOWN"
},
{
"description": "Paperless-ngx is able to bypass permission checks.",
"name": "DAC_OVERRIDE"
},
{
"description": "Paperless-ngx is able bypass permission checks for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Paperless-ngx is able to set group ID for it's sub-processes.",
"name": "SETGID"
},
{
"description": "Paperless-ngx is able to set user ID for it's sub-processes.",
"name": "SETUID"
}
],
"categories": [
"productivity"
],
"changelog_url": "https://github.com/paperless-ngx/paperless-ngx/releases",
"date_added": "2024-09-10",
"description": "Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.",
"home": "https://docs.paperless-ngx.com",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/paperless-ngx/icons/icon.svg",
"keywords": [
"document",
"management"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "paperless-ngx",
"run_as_context": [
{
"description": "Paperless-ngx runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
},
{
"description": "Postgres runs as non-root user.",
"gid": 999,
"group_name": "postgres",
"uid": 999,
"user_name": "postgres"
},
{
"description": "Redis runs as a non-root user and root group.",
"gid": 0,
"group_name": "root",
"uid": 1001,
"user_name": "redis"
},
{
"description": "Tika runs as a non-root user.",
"gid": 35002,
"group_name": "tika",
"uid": 35002,
"user_name": "tika"
},
{
"description": "Gotenberg runs as a non-root user.",
"gid": 1001,
"group_name": "gotenberg",
"uid": 1001,
"user_name": "gotenberg"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot1.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot2.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot3.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot4.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot5.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot6.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot7.png",
"https://media.sys.truenas.net/apps/paperless-ngx/screenshots/screenshot8.png"
],
"sources": [
"https://hub.docker.com/r/paperlessngx/paperless-ngx",
"https://github.com/paperless-ngx/paperless-ngx"
],
"title": "Paperless-ngx",
"train": "community",
"version": "1.2.38"
}
}
}
Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Portal hosts but does not validate or maintain any linked resources associated with this app.
There currently aren’t any resources available for this application!
Please help the TrueNAS community create content or discuss this application in the TrueNAS Community forum.