From 12411b5ff022a7b0439898d00657a835a323f044 Mon Sep 17 00:00:00 2001 From: BinkyTwin Date: Wed, 20 May 2026 21:15:44 +0200 Subject: [PATCH 1/4] 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", From 0c3d1ccd20af796693feead328c896d3a397de05 Mon Sep 17 00:00:00 2001 From: BinkyTwin Date: Wed, 20 May 2026 21:22:23 +0200 Subject: [PATCH 2/4] fix: align Paperless URL scheme default --- blueprints/paperless-ngx/template.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/paperless-ngx/template.toml b/blueprints/paperless-ngx/template.toml index d9630a0e..f7ec74cb 100644 --- a/blueprints/paperless-ngx/template.toml +++ b/blueprints/paperless-ngx/template.toml @@ -2,7 +2,7 @@ main_domain = "${domain}" postgres_password = "${password:32}" paperless_secret_key = "${password:64}" -paperless_url = "https://${main_domain}" +paperless_url = "http://${main_domain}" paperless_timezone = "UTC" paperless_ocr_language = "eng" From 7e5691b847d97a4175c4b913d234889eae011a00 Mon Sep 17 00:00:00 2001 From: BinkyTwin Date: Wed, 20 May 2026 21:26:07 +0200 Subject: [PATCH 3/4] feat: add Gatus template --- blueprints/gatus/docker-compose.yml | 14 +++++++++++++ blueprints/gatus/gatus.svg | 8 ++++++++ blueprints/gatus/template.toml | 31 +++++++++++++++++++++++++++++ meta.json | 18 +++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 blueprints/gatus/docker-compose.yml create mode 100644 blueprints/gatus/gatus.svg create mode 100644 blueprints/gatus/template.toml diff --git a/blueprints/gatus/docker-compose.yml b/blueprints/gatus/docker-compose.yml new file mode 100644 index 00000000..062db80b --- /dev/null +++ b/blueprints/gatus/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.8" + +services: + gatus: + image: ghcr.io/twin/gatus:v5.36.0 + restart: unless-stopped + expose: + - 8080 + volumes: + - gatus-data:/data + - ../files/config.yaml:/config/config.yaml:ro + +volumes: + gatus-data: {} diff --git a/blueprints/gatus/gatus.svg b/blueprints/gatus/gatus.svg new file mode 100644 index 00000000..e095c099 --- /dev/null +++ b/blueprints/gatus/gatus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/blueprints/gatus/template.toml b/blueprints/gatus/template.toml new file mode 100644 index 00000000..cd2fbd2e --- /dev/null +++ b/blueprints/gatus/template.toml @@ -0,0 +1,31 @@ +[variables] +main_domain = "${domain}" +monitor_name = "Example website" +monitor_url = "https://example.org/" + +[config] +[[config.domains]] +serviceName = "gatus" +port = 8080 +host = "${main_domain}" + +[[config.mounts]] +filePath = "config.yaml" +content = """ +storage: + type: sqlite + path: /data/data.db + +ui: + title: Gatus + header: Gatus + +endpoints: + - name: ${monitor_name} + group: external + url: "${monitor_url}" + interval: 5m + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" +""" diff --git a/meta.json b/meta.json index 10d7df12..31941bb8 100644 --- a/meta.json +++ b/meta.json @@ -2634,6 +2634,24 @@ "object-storage" ] }, + { + "id": "gatus", + "name": "Gatus", + "version": "v5.36.0", + "description": "Gatus is an automated service health dashboard for monitoring HTTP, DNS, TCP, ICMP, and other endpoints.", + "logo": "gatus.svg", + "links": { + "github": "https://github.com/TwiN/gatus", + "website": "https://gatus.io/", + "docs": "https://github.com/TwiN/gatus#configuration" + }, + "tags": [ + "monitoring", + "status-page", + "uptime", + "observability" + ] + }, { "id": "ghost", "name": "Ghost", From 0999407513301d0f2972fd2a7d8dfcf66c14772e Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Wed, 8 Jul 2026 01:55:26 -0600 Subject: [PATCH 4/4] fix: mount postgres 18 data volume at /var/lib/postgresql The postgres:18 image moved its data directory from /var/lib/postgresql/data to /var/lib/postgresql, and its entrypoint now fails hard when a volume is mounted at the old path. This made paperless-ngx-db restart-loop and never reach healthy, so the deploy errored with 'dependency paperless-ngx-db failed to start'. Co-Authored-By: Claude Fable 5 --- blueprints/paperless-ngx/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/paperless-ngx/docker-compose.yml b/blueprints/paperless-ngx/docker-compose.yml index 701b6dfc..fe09da34 100644 --- a/blueprints/paperless-ngx/docker-compose.yml +++ b/blueprints/paperless-ngx/docker-compose.yml @@ -35,7 +35,7 @@ services: POSTGRES_USER: paperless POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - - paperless-db:/var/lib/postgresql/data + - paperless-db:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"] interval: 10s