diff --git a/blueprints/kavita/docker-compose.yml b/blueprints/kavita/docker-compose.yml new file mode 100644 index 00000000..cd16cfea --- /dev/null +++ b/blueprints/kavita/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.8" + +services: + kavita: + image: jvmilazz0/kavita:latest + restart: unless-stopped + expose: + - "5000" + environment: + - TZ=Etc/UTC + volumes: + - kavita-config:/kavita/config + - kavita-media:/manga + - kavita-books:/books + - kavita-comics:/comics + +volumes: + kavita-config: + kavita-media: + kavita-books: + kavita-comics: diff --git a/blueprints/kavita/kavita.svg b/blueprints/kavita/kavita.svg new file mode 100644 index 00000000..d2940227 --- /dev/null +++ b/blueprints/kavita/kavita.svg @@ -0,0 +1 @@ + diff --git a/blueprints/kavita/template.toml b/blueprints/kavita/template.toml new file mode 100644 index 00000000..b7c88ea0 --- /dev/null +++ b/blueprints/kavita/template.toml @@ -0,0 +1,5 @@ +[config] +[[config.domains]] +serviceName = "kavita" +port = 5000 +host = "${domain}" diff --git a/blueprints/miniflux/docker-compose.yml b/blueprints/miniflux/docker-compose.yml new file mode 100644 index 00000000..6ec4135d --- /dev/null +++ b/blueprints/miniflux/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.8" + +services: + miniflux: + image: miniflux/miniflux:latest + restart: unless-stopped + expose: + - "8080" + depends_on: + miniflux-db: + condition: service_healthy + environment: + - DATABASE_URL=postgres://miniflux:${MINIFLUX_DB_PASSWORD}@miniflux-db/miniflux?sslmode=disable + - RUN_MIGRATIONS=1 + - CREATE_ADMIN=1 + - ADMIN_USERNAME=${MINIFLUX_ADMIN_USERNAME} + - ADMIN_PASSWORD=${MINIFLUX_ADMIN_PASSWORD} + + miniflux-db: + image: postgres:17-alpine + restart: unless-stopped + environment: + - POSTGRES_USER=miniflux + - POSTGRES_PASSWORD=${MINIFLUX_DB_PASSWORD} + - POSTGRES_DB=miniflux + volumes: + - miniflux-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "miniflux"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + miniflux-db-data: diff --git a/blueprints/miniflux/miniflux.svg b/blueprints/miniflux/miniflux.svg new file mode 100644 index 00000000..5f4ec6f5 --- /dev/null +++ b/blueprints/miniflux/miniflux.svg @@ -0,0 +1 @@ + diff --git a/blueprints/miniflux/template.toml b/blueprints/miniflux/template.toml new file mode 100644 index 00000000..48291e85 --- /dev/null +++ b/blueprints/miniflux/template.toml @@ -0,0 +1,15 @@ +[variables] +admin_username = "admin" +admin_password = "${password}" +db_password = "${password}" + +[config] +[[config.domains]] +serviceName = "miniflux" +port = 8080 +host = "${domain}" + +[config.env] +MINIFLUX_ADMIN_USERNAME = "${admin_username}" +MINIFLUX_ADMIN_PASSWORD = "${admin_password}" +MINIFLUX_DB_PASSWORD = "${db_password}" diff --git a/blueprints/paperless-ngx/docker-compose.yml b/blueprints/paperless-ngx/docker-compose.yml new file mode 100644 index 00000000..fd010a82 --- /dev/null +++ b/blueprints/paperless-ngx/docker-compose.yml @@ -0,0 +1,58 @@ +version: "3.8" + +services: + paperless-ngx: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + expose: + - "8000" + depends_on: + paperless-db: + condition: service_healthy + paperless-redis: + condition: service_started + environment: + - PAPERLESS_REDIS=redis://paperless-redis:6379 + - PAPERLESS_DBHOST=paperless-db + - PAPERLESS_DBNAME=paperless + - PAPERLESS_DBUSER=paperless + - PAPERLESS_DBPASS=${PAPERLESS_DB_PASSWORD} + - PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY} + - PAPERLESS_URL=https://${PAPERLESS_DOMAIN} + - PAPERLESS_TIME_ZONE=${PAPERLESS_TIME_ZONE} + - PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER} + - PAPERLESS_ADMIN_PASSWORD=${PAPERLESS_ADMIN_PASSWORD} + 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-db: + image: postgres:17-alpine + restart: unless-stopped + environment: + - POSTGRES_DB=paperless + - POSTGRES_USER=paperless + - POSTGRES_PASSWORD=${PAPERLESS_DB_PASSWORD} + volumes: + - paperless-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "paperless"] + interval: 10s + timeout: 5s + retries: 5 + + paperless-redis: + image: redis:7-alpine + restart: unless-stopped + volumes: + - paperless-redis-data:/data + +volumes: + paperless-data: + paperless-media: + paperless-export: + paperless-consume: + paperless-db-data: + paperless-redis-data: diff --git a/blueprints/paperless-ngx/paperless-ngx.svg b/blueprints/paperless-ngx/paperless-ngx.svg new file mode 100644 index 00000000..2e571364 --- /dev/null +++ b/blueprints/paperless-ngx/paperless-ngx.svg @@ -0,0 +1 @@ + diff --git a/blueprints/paperless-ngx/template.toml b/blueprints/paperless-ngx/template.toml new file mode 100644 index 00000000..d02973ac --- /dev/null +++ b/blueprints/paperless-ngx/template.toml @@ -0,0 +1,21 @@ +[variables] +main_domain = "${domain}" +admin_user = "admin" +admin_password = "${password}" +db_password = "${password}" +secret_key = "${base64:48}" +timezone = "Etc/UTC" + +[config] +[[config.domains]] +serviceName = "paperless-ngx" +port = 8000 +host = "${main_domain}" + +[config.env] +PAPERLESS_DOMAIN = "${main_domain}" +PAPERLESS_ADMIN_USER = "${admin_user}" +PAPERLESS_ADMIN_PASSWORD = "${admin_password}" +PAPERLESS_DB_PASSWORD = "${db_password}" +PAPERLESS_SECRET_KEY = "${secret_key}" +PAPERLESS_TIME_ZONE = "${timezone}" diff --git a/meta.json b/meta.json index b5d4c2a5..8fb6356b 100644 --- a/meta.json +++ b/meta.json @@ -3455,6 +3455,24 @@ "productivity" ] }, + { + "id": "kavita", + "name": "Kavita", + "version": "latest", + "description": "Kavita is a self-hosted digital library server for reading manga, comics, and ebooks from any device.", + "logo": "kavita.svg", + "links": { + "github": "https://github.com/Kareadita/Kavita", + "website": "https://www.kavitareader.com/", + "docs": "https://wiki.kavitareader.com/installation/docker/" + }, + "tags": [ + "media", + "ebooks", + "comics", + "library" + ] + }, { "id": "kener", "name": "Kener", @@ -4176,6 +4194,24 @@ "docker" ] }, + { + "id": "miniflux", + "name": "Miniflux", + "version": "latest", + "description": "Miniflux is a minimalist and opinionated feed reader built for self-hosted RSS and Atom subscriptions.", + "logo": "miniflux.svg", + "links": { + "github": "https://github.com/miniflux/v2", + "website": "https://miniflux.app/", + "docs": "https://miniflux.app/docs/docker.html" + }, + "tags": [ + "rss", + "feed-reader", + "news", + "self-hosted" + ] + }, { "id": "minio", "name": "Minio", @@ -4960,6 +4996,24 @@ "open-source" ] }, + { + "id": "paperless-ngx", + "name": "Paperless-ngx", + "version": "latest", + "description": "Paperless-ngx is a self-hosted document management system that indexes, archives, and organizes scanned 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/setup/" + }, + "tags": [ + "documents", + "ocr", + "archive", + "productivity" + ] + }, { "id": "parseable", "name": "Parseable",