From 12411b5ff022a7b0439898d00657a835a323f044 Mon Sep 17 00:00:00 2001 From: BinkyTwin Date: Wed, 20 May 2026 21:15:44 +0200 Subject: [PATCH] feat: add Paperless-ngx template --- blueprints/paperless-ngx/docker-compose.yml | 62 +++++++++++++++++++++ blueprints/paperless-ngx/paperless-ngx.svg | 10 ++++ blueprints/paperless-ngx/template.toml | 20 +++++++ meta.json | 18 ++++++ 4 files changed, 110 insertions(+) create mode 100644 blueprints/paperless-ngx/docker-compose.yml create mode 100644 blueprints/paperless-ngx/paperless-ngx.svg create mode 100644 blueprints/paperless-ngx/template.toml diff --git a/blueprints/paperless-ngx/docker-compose.yml b/blueprints/paperless-ngx/docker-compose.yml new file mode 100644 index 00000000..701b6dfc --- /dev/null +++ b/blueprints/paperless-ngx/docker-compose.yml @@ -0,0 +1,62 @@ +version: "3.8" + +services: + paperless-ngx: + image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15 + restart: unless-stopped + depends_on: + paperless-ngx-db: + condition: service_healthy + paperless-ngx-broker: + condition: service_healthy + expose: + - 8000 + environment: + PAPERLESS_REDIS: redis://paperless-ngx-broker:6379 + PAPERLESS_DBHOST: paperless-ngx-db + PAPERLESS_DBNAME: paperless + PAPERLESS_DBUSER: paperless + PAPERLESS_DBPASS: ${POSTGRES_PASSWORD} + PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} + PAPERLESS_URL: ${PAPERLESS_URL} + PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE} + PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE} + volumes: + - paperless-data:/usr/src/paperless/data + - paperless-media:/usr/src/paperless/media + - paperless-export:/usr/src/paperless/export + - paperless-consume:/usr/src/paperless/consume + + paperless-ngx-db: + image: postgres:18-alpine + restart: unless-stopped + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - paperless-db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"] + interval: 10s + timeout: 5s + retries: 5 + + paperless-ngx-broker: + image: redis:8-alpine + restart: unless-stopped + volumes: + - paperless-redis:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + paperless-data: {} + paperless-media: {} + paperless-export: {} + paperless-consume: {} + paperless-db: {} + paperless-redis: {} diff --git a/blueprints/paperless-ngx/paperless-ngx.svg b/blueprints/paperless-ngx/paperless-ngx.svg new file mode 100644 index 00000000..d428a271 --- /dev/null +++ b/blueprints/paperless-ngx/paperless-ngx.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/blueprints/paperless-ngx/template.toml b/blueprints/paperless-ngx/template.toml new file mode 100644 index 00000000..d9630a0e --- /dev/null +++ b/blueprints/paperless-ngx/template.toml @@ -0,0 +1,20 @@ +[variables] +main_domain = "${domain}" +postgres_password = "${password:32}" +paperless_secret_key = "${password:64}" +paperless_url = "https://${main_domain}" +paperless_timezone = "UTC" +paperless_ocr_language = "eng" + +[config] +[[config.domains]] +serviceName = "paperless-ngx" +port = 8000 +host = "${main_domain}" + +[config.env] +POSTGRES_PASSWORD = "${postgres_password}" +PAPERLESS_SECRET_KEY = "${paperless_secret_key}" +PAPERLESS_URL = "${paperless_url}" +PAPERLESS_TIME_ZONE = "${paperless_timezone}" +PAPERLESS_OCR_LANGUAGE = "${paperless_ocr_language}" diff --git a/meta.json b/meta.json index 8be7825d..10d7df12 100644 --- a/meta.json +++ b/meta.json @@ -4852,6 +4852,24 @@ "open-source" ] }, + { + "id": "paperless-ngx", + "name": "Paperless-ngx", + "version": "2.20.15", + "description": "Paperless-ngx is a self-hosted document management system for scanning, indexing, and archiving documents.", + "logo": "paperless-ngx.svg", + "links": { + "github": "https://github.com/paperless-ngx/paperless-ngx", + "website": "https://paperless-ngx.com/", + "docs": "https://docs.paperless-ngx.com/" + }, + "tags": [ + "documents", + "ocr", + "productivity", + "self-hosted" + ] + }, { "id": "parseable", "name": "Parseable",