Merge pull request #884 from BinkyTwin/codex/add-paperless-ngx-template

feat: add Paperless-ngx and Gatus templates
This commit is contained in:
Mauricio Siu
2026-07-08 10:25:02 -06:00
committed by GitHub
8 changed files with 181 additions and 0 deletions

View File

@@ -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: {}

View File

@@ -0,0 +1,8 @@
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="128" height="128" rx="24" fill="#102A43"/>
<path d="M28 80C34 56 49 42 64 42C79 42 94 56 100 80" stroke="#62D2A2" stroke-width="10" stroke-linecap="round"/>
<path d="M42 80C47 67 55 60 64 60C73 60 81 67 86 80" stroke="#F8F9FA" stroke-width="10" stroke-linecap="round"/>
<circle cx="64" cy="84" r="12" fill="#62D2A2"/>
<path d="M64 84L81 55" stroke="#102A43" stroke-width="6" stroke-linecap="round"/>
<path d="M30 96H98" stroke="#F8F9FA" stroke-width="8" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 611 B

View File

@@ -0,0 +1,18 @@
{
"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"
]
}

View File

@@ -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"
"""

View File

@@ -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
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: {}

View File

@@ -0,0 +1,18 @@
{
"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"
]
}

View File

@@ -0,0 +1,10 @@
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="128" height="128" rx="24" fill="#F3FAF7"/>
<path d="M38 18H78L100 40V104C100 109.523 95.5228 114 90 114H38C32.4772 114 28 109.523 28 104V28C28 22.4772 32.4772 18 38 18Z" fill="#FFFFFF" stroke="#1F7A5C" stroke-width="6"/>
<path d="M78 18V36C78 41.5228 82.4772 46 88 46H100" stroke="#1F7A5C" stroke-width="6" stroke-linejoin="round"/>
<path d="M46 62H82" stroke="#35A77C" stroke-width="6" stroke-linecap="round"/>
<path d="M46 78H82" stroke="#35A77C" stroke-width="6" stroke-linecap="round"/>
<path d="M46 94H68" stroke="#35A77C" stroke-width="6" stroke-linecap="round"/>
<circle cx="91" cy="91" r="19" fill="#1F7A5C"/>
<path d="M83 91L89 97L101 84" stroke="#FFFFFF" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 867 B

View File

@@ -0,0 +1,20 @@
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
paperless_secret_key = "${password:64}"
paperless_url = "http://${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}"