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/meta.json b/blueprints/gatus/meta.json new file mode 100644 index 00000000..6ab041de --- /dev/null +++ b/blueprints/gatus/meta.json @@ -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" + ] +} 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/blueprints/paperless-ngx/docker-compose.yml b/blueprints/paperless-ngx/docker-compose.yml new file mode 100644 index 00000000..fe09da34 --- /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 + 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/meta.json b/blueprints/paperless-ngx/meta.json new file mode 100644 index 00000000..ac712c4e --- /dev/null +++ b/blueprints/paperless-ngx/meta.json @@ -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" + ] +} 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..f7ec74cb --- /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 = "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}"