From 32e54beda1f7063c18352453df8f52a90cd87a15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jainil=20Prajapati=20=F0=9F=AA=90?= <86187588+enough-jainil@users.noreply.github.com> Date: Wed, 25 Jun 2025 09:29:20 +0530 Subject: [PATCH] =?UTF-8?q?Enhance=20meta.json:=20format=20tag=20lists=20f?= =?UTF-8?q?or=20consistency,=20add=20new=20entries=20=E2=80=A6=20(#194)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Enhance meta.json: format tag lists for consistency, add new entries for KaraKeep, FreshRSS, and Movary with detailed descriptions and links. * Update blueprints/freshrss/docker-compose.yml * Update blueprints/karakeep/docker-compose.yml * Update blueprints/karakeep/docker-compose.yml * Update blueprints/karakeep/docker-compose.yml * Update blueprints/karakeep/docker-compose.yml * Update blueprints/movary/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- blueprints/freshrss/docker-compose.yml | 30 +++++++++ blueprints/freshrss/freshrss.svg | 23 +++++++ blueprints/freshrss/template.toml | 19 ++++++ blueprints/karakeep/docker-compose.yml | 54 +++++++++++++++ blueprints/karakeep/karakeep.svg | 15 +++++ blueprints/karakeep/template.toml | 25 +++++++ blueprints/movary/docker-compose.yml | 41 ++++++++++++ blueprints/movary/movary.png | Bin 0 -> 5649 bytes blueprints/movary/template.toml | 22 +++++++ meta.json | 87 ++++++++++++++++++++++--- 10 files changed, 307 insertions(+), 9 deletions(-) create mode 100644 blueprints/freshrss/docker-compose.yml create mode 100644 blueprints/freshrss/freshrss.svg create mode 100644 blueprints/freshrss/template.toml create mode 100644 blueprints/karakeep/docker-compose.yml create mode 100644 blueprints/karakeep/karakeep.svg create mode 100644 blueprints/karakeep/template.toml create mode 100644 blueprints/movary/docker-compose.yml create mode 100644 blueprints/movary/movary.png create mode 100644 blueprints/movary/template.toml diff --git a/blueprints/freshrss/docker-compose.yml b/blueprints/freshrss/docker-compose.yml new file mode 100644 index 00000000..8965edc4 --- /dev/null +++ b/blueprints/freshrss/docker-compose.yml @@ -0,0 +1,30 @@ +services: + freshrss: + image: freshrss/freshrss:${FRESHRSS_VERSION:-latest} + restart: unless-stopped + volumes: + # FreshRSS persistent data such as configuration and SQLite databases + - freshrss_data:/var/www/FreshRSS/data + # Optional volume for storing third-party extensions + - freshrss_extensions:/var/www/FreshRSS/extensions + ports: + - "80" + environment: + # Server timezone + TZ: ${TZ:-UTC} + # Cron job to refresh feeds at specified minutes + CRON_MIN: ${CRON_MIN:-13,43} + # Production or development mode + FRESHRSS_ENV: ${FRESHRSS_ENV:-production} + # Copy logs to syslog + COPY_LOG_TO_SYSLOG: ${COPY_LOG_TO_SYSLOG:-On} + # Copy syslog to stderr for docker logs + COPY_SYSLOG_TO_STDERR: ${COPY_SYSLOG_TO_STDERR:-On} + # Optional auto-install parameters + FRESHRSS_INSTALL: ${FRESHRSS_INSTALL:-} + # Optional auto-create user parameters + FRESHRSS_USER: ${FRESHRSS_USER:-} + +volumes: + freshrss_data: + freshrss_extensions: diff --git a/blueprints/freshrss/freshrss.svg b/blueprints/freshrss/freshrss.svg new file mode 100644 index 00000000..a3c8bf75 --- /dev/null +++ b/blueprints/freshrss/freshrss.svg @@ -0,0 +1,23 @@ + + Logo FreshRSS + + + + + + + + + + + FreshRSS + + + + + + + + + + diff --git a/blueprints/freshrss/template.toml b/blueprints/freshrss/template.toml new file mode 100644 index 00000000..e4f61942 --- /dev/null +++ b/blueprints/freshrss/template.toml @@ -0,0 +1,19 @@ +[variables] +main_domain = "${domain}" +timezone = "UTC" + +[config.env] +FRESHRSS_VERSION = "latest" +TZ = "${timezone}" +CRON_MIN = "13,43" +FRESHRSS_ENV = "production" +COPY_LOG_TO_SYSLOG = "On" +COPY_SYSLOG_TO_STDERR = "On" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "freshrss" +port = 80 +host = "${main_domain}" \ No newline at end of file diff --git a/blueprints/karakeep/docker-compose.yml b/blueprints/karakeep/docker-compose.yml new file mode 100644 index 00000000..dd79e704 --- /dev/null +++ b/blueprints/karakeep/docker-compose.yml @@ -0,0 +1,54 @@ +services: + web: + image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release} + restart: unless-stopped + volumes: + # By default, the data is stored in a docker volume called "karakeep_data". + # If you want to mount a custom directory, change the volume mapping to: + # - /path/to/your/directory:/data + - karakeep_data:/data + ports: + - "3000" + environment: + DATA_DIR: ${DATA_DIR:-/data} + DISABLE_SIGNUPS: ${DISABLE_SIGNUPS:-false} + NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} + NEXTAUTH_URL: ${NEXTAUTH_URL} + # Meilisearch config + MEILI_ADDR: ${MEILI_ADDR:-http://meilisearch:7700} + MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} + # Chrome config + BROWSER_WEB_URL: ${BROWSER_WEB_URL:-ws://chrome:3000} + BROWSER_CONNECT_ONDEMAND: ${BROWSER_CONNECT_ONDEMAND:-true} + depends_on: + - chrome + - meilisearch + + chrome: + image: browserless/chrome:1-chrome-stable + restart: unless-stopped + ports: + - "3000" + environment: + - DEBUG=browserless* + - MAX_CONCURRENT_SESSIONS=10 + - CONNECTION_TIMEOUT=60000 + - MAX_QUEUE_LENGTH=10 + - PORT=3000 + - CHROME_REFRESH_TIME=2147483647 + + meilisearch: + image: getmeili/meilisearch:v1.10 + restart: unless-stopped + ports: + - "7700" + environment: + MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} + MEILI_NO_ANALYTICS: true + MEILI_ENV: production + volumes: + - meilisearch_data:/meili_data + +volumes: + karakeep_data: + meilisearch_data: diff --git a/blueprints/karakeep/karakeep.svg b/blueprints/karakeep/karakeep.svg new file mode 100644 index 00000000..caabdbe1 --- /dev/null +++ b/blueprints/karakeep/karakeep.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/blueprints/karakeep/template.toml b/blueprints/karakeep/template.toml new file mode 100644 index 00000000..751cf8ec --- /dev/null +++ b/blueprints/karakeep/template.toml @@ -0,0 +1,25 @@ +[variables] +main_domain = "${domain}" +nextauth_secret = "${password:64}" +meili_master_key = "${password:32}" + +[config.env] +KARAKEEP_VERSION = "release" +NEXTAUTH_SECRET = "${nextauth_secret}" +MEILI_MASTER_KEY = "${meili_master_key}" +NEXTAUTH_URL = "http://${main_domain}" +DATA_DIR = "/data" +DISABLE_SIGNUPS = "false" +# Meilisearch config +MEILI_ADDR = "http://meilisearch:7700" +# Chrome config +BROWSER_WEB_URL = "ws://chrome:9222" +BROWSER_CONNECT_ONDEMAND = "true" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "web" +port = 3000 +host = "${main_domain}" \ No newline at end of file diff --git a/blueprints/movary/docker-compose.yml b/blueprints/movary/docker-compose.yml new file mode 100644 index 00000000..f84ff9e5 --- /dev/null +++ b/blueprints/movary/docker-compose.yml @@ -0,0 +1,41 @@ +services: + movary: + image: leepeuker/movary:${MOVARY_VERSION:-latest} + restart: unless-stopped + ports: + - "8080" + environment: + # TMDB API configuration + TMDB_API_KEY: ${TMDB_API_KEY} + # Database configuration + DATABASE_MODE: "mysql" + DATABASE_MYSQL_HOST: "mysql" + DATABASE_MYSQL_NAME: "movary" + DATABASE_MYSQL_USER: "movary_user" + DATABASE_MYSQL_PASSWORD: ${MYSQL_PASSWORD} + # Application settings + APP_URL: ${APP_URL:-http://localhost:8080} + APP_ENV: ${APP_ENV:-production} + volumes: + - movary_storage:/app/storage + depends_on: + - mysql + + mysql: + image: mysql:${MYSQL_VERSION:-8.0} + restart: unless-stopped + environment: + MYSQL_DATABASE: "movary" + MYSQL_USER: "movary_user" + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + # MySQL optimization + MYSQL_INNODB_BUFFER_POOL_SIZE: "128M" + MYSQL_INNODB_LOG_FILE_SIZE: "64M" + volumes: + - movary_db:/var/lib/mysql + command: --default-authentication-plugin=mysql_native_password + +volumes: + movary_db: + movary_storage: diff --git a/blueprints/movary/movary.png b/blueprints/movary/movary.png new file mode 100644 index 0000000000000000000000000000000000000000..779401a0c6581d32348990f576885a6229065048 GIT binary patch literal 5649 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 literal 0 HcmV?d00001 diff --git a/blueprints/movary/template.toml b/blueprints/movary/template.toml new file mode 100644 index 00000000..e2714d9e --- /dev/null +++ b/blueprints/movary/template.toml @@ -0,0 +1,22 @@ +[variables] +main_domain = "${domain}" +tmdb_api_key = "" +mysql_password = "${password:32}" +mysql_root_password = "${password:32}" + +[config.env] +MOVARY_VERSION = "latest" +MYSQL_VERSION = "8.0" +TMDB_API_KEY = "${tmdb_api_key}" +MYSQL_PASSWORD = "${mysql_password}" +MYSQL_ROOT_PASSWORD = "${mysql_root_password}" +APP_URL = "http://${main_domain}" +APP_ENV = "production" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "movary" +port = 8080 +host = "${main_domain}" \ No newline at end of file diff --git a/meta.json b/meta.json index 6846780f..ed6a0a1f 100644 --- a/meta.json +++ b/meta.json @@ -155,7 +155,15 @@ "website": "https://stalw.art/", "docs": "https://stalw.art/docs/" }, - "tags": ["email", "smtp", "jmap", "imap4", "pop3", "self-hosted", "mail-server"] + "tags": [ + "email", + "smtp", + "jmap", + "imap4", + "pop3", + "self-hosted", + "mail-server" + ] }, { "id": "datalens", @@ -633,14 +641,10 @@ "logo": "typecho.png", "links": { "github": "https://github.com/typecho/typecho", - "website": "https://typecho.org/", + "website": "https://typecho.org/", "docs": "http://docs.typecho.org" }, - "tags": [ - "blog", - "cms", - "php" - ] + "tags": ["blog", "cms", "php"] }, { "id": "gitea", @@ -2508,10 +2512,75 @@ "website": "https://palmr.kyantech.com.br/", "docs": "https://palmr.kyantech.com.br/docs/3.0-beta" }, + "tags": ["file-sharing", "self-hosted", "open-source"] + }, + { + "id": "karakeep", + "name": "KaraKeep", + "version": "0.25.0", + "description": "A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search. Previously known as Hoarder.", + "logo": "karakeep.svg", + "links": { + "github": "https://github.com/karakeep-app/karakeep", + "website": "https://karakeep.app/", + "docs": "https://github.com/karakeep-app/karakeep/tree/main/docs" + }, "tags": [ - "file-sharing", + "bookmarks", + "bookmark-manager", "self-hosted", - "open-source" + "ai", + "search", + "notes", + "productivity" + ] + }, + { + "id": "freshrss", + "name": "FreshRSS", + "version": "latest", + "description": "A free, self-hostable RSS and Atom feed aggregator. Lightweight, easy to work with, powerful, and customizable with themes and extensions.", + "logo": "freshrss.svg", + "links": { + "github": "https://github.com/FreshRSS/FreshRSS", + "website": "https://freshrss.org/", + "docs": "https://freshrss.github.io/FreshRSS/" + }, + "tags": [ + "rss", + "feed-reader", + "news", + "self-hosted", + "aggregator", + "reader" + ] + }, + { + "id": "movary", + "name": "Movary", + "version": "0.66.2", + "description": "Self-hosted web app to track, rate and explore your movie watch history. Offers detailed statistics, third-party integrations for platforms like Trakt, Letterboxd, Netflix, and automated play tracking for Plex, Jellyfin, Emby or Kodi.", + "logo": "movary.png", + "links": { + "github": "https://github.com/leepeuker/movary", + "website": "https://movary.org/", + "docs": "https://movary.org/docs/", + "demo": "https://demo.movary.org/" + }, + "tags": [ + "movies", + "movie-tracker", + "self-hosted", + "plex", + "jellyfin", + "emby", + "kodi", + "trakt", + "letterboxd", + "netflix", + "tmdb", + "statistics", + "rating" ] }, {