From bf4d1d6605a8ecc3bde22c3e5243af18c295dca6 Mon Sep 17 00:00:00 2001 From: Manuel Schneider Date: Sun, 19 Apr 2026 21:56:47 +0200 Subject: [PATCH] add duplicati --- blueprints/duplicati/docker-compose.yml | 28 + blueprints/duplicati/logo.png | Bin 0 -> 91510 bytes blueprints/duplicati/template.toml | 13 + meta.json | 2187 ++++------------------- 4 files changed, 406 insertions(+), 1822 deletions(-) create mode 100644 blueprints/duplicati/docker-compose.yml create mode 100644 blueprints/duplicati/logo.png create mode 100644 blueprints/duplicati/template.toml diff --git a/blueprints/duplicati/docker-compose.yml b/blueprints/duplicati/docker-compose.yml new file mode 100644 index 00000000..b731a6a1 --- /dev/null +++ b/blueprints/duplicati/docker-compose.yml @@ -0,0 +1,28 @@ +services: + duplicati: + image: 'lscr.io/linuxserver/duplicati:latest' + environment: + - SERVICE_URL_DUPLICATI_8200 + - PUID=0 + - PGID=0 + - 'TZ=${TZ:-Europe/London}' + - 'SETTINGS_ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPT}' + - 'DUPLICATI__WEBSERVICE_PASSWORD=${SERVICE_PASSWORD_WEB}' + volumes: + - 'duplicati-config:/config' + - '/path/to/backups:/backups' + - '/path/to/source:/source' + - '/path/to/restore:/restore' + + healthcheck: + test: + - CMD + - curl + - '-f' + - 'http://127.0.0.1:8200' + interval: 2s + timeout: 10s + retries: 15 + +volumes: + duplicati-config: {} diff --git a/blueprints/duplicati/logo.png b/blueprints/duplicati/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..739cab9cdd665b4b80f4f7302b62008b2db7dc1b GIT binary patch literal 91510 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 bI^%bN_z9ukEx@_Qkt? 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 z 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 literal 0 HcmV?d00001 diff --git a/blueprints/duplicati/template.toml b/blueprints/duplicati/template.toml new file mode 100644 index 00000000..42b90ece --- /dev/null +++ b/blueprints/duplicati/template.toml @@ -0,0 +1,13 @@ +[variables] +main_domain = "${domain}" + +[config] +[[config.domains]] +serviceName = "duplicati" +port = 8200 +host = "${main_domain}" + +[config.env] +TZ = "Europe/Vienna" +SETTINGS_ENCRYPTION_KEY = "${password:32}" +DUPLICATI__WEBSERVICE_PASSWORD = "${password:16}" diff --git a/meta.json b/meta.json index 3ae0cb5e..04a298a3 100644 --- a/meta.json +++ b/meta.json @@ -10,10 +10,7 @@ "website": "https://ackee.electerious.com/", "docs": "https://docs.ackee.electerious.com/" }, - "tags": [ - "analytics", - "self-hosted" - ] + "tags": ["analytics", "self-hosted"] }, { "id": "activepieces", @@ -26,11 +23,7 @@ "website": "https://www.activepieces.com/", "docs": "https://www.activepieces.com/docs" }, - "tags": [ - "automation", - "workflow", - "no-code" - ] + "tags": ["automation", "workflow", "no-code"] }, { "id": "actualbudget", @@ -43,11 +36,7 @@ "website": "https://actualbudget.org", "docs": "https://actualbudget.org/docs" }, - "tags": [ - "budgeting", - "finance", - "money" - ] + "tags": ["budgeting", "finance", "money"] }, { "id": "adguardhome", @@ -60,12 +49,7 @@ "website": "https://adguard.com", "docs": "https://github.com/AdguardTeam/AdGuardHome/wiki" }, - "tags": [ - "privacy", - "security", - "dns", - "ad-blocking" - ] + "tags": ["privacy", "security", "dns", "ad-blocking"] }, { "id": "adminer", @@ -78,12 +62,7 @@ "website": "https://www.adminer.org/", "docs": "https://www.adminer.org/en/plugins/" }, - "tags": [ - "databases", - "developer-tools", - "mysql", - "postgresql" - ] + "tags": ["databases", "developer-tools", "mysql", "postgresql"] }, { "id": "adventurelog", @@ -96,13 +75,7 @@ "website": "https://adventurelog.app/", "docs": "https://adventurelog.app/docs/" }, - "tags": [ - "activity", - "maps", - "django", - "react", - "postgres" - ] + "tags": ["activity", "maps", "django", "react", "postgres"] }, { "id": "affinepro", @@ -133,14 +106,7 @@ "website": "https://www.ispyconnect.com/", "docs": "https://www.ispyconnect.com/userguide-agent-dvr.aspx" }, - "tags": [ - "surveillance", - "security", - "video", - "monitoring", - "dvr", - "camera" - ] + "tags": ["surveillance", "security", "video", "monitoring", "dvr", "camera"] }, { "id": "akaunting", @@ -153,13 +119,7 @@ "website": "https://akaunting.com", "docs": "https://akaunting.com/docs" }, - "tags": [ - "finance", - "accounting", - "php", - "mariadb", - "self-hosted" - ] + "tags": ["finance", "accounting", "php", "mariadb", "self-hosted"] }, { "id": "alist", @@ -172,11 +132,7 @@ "website": "https://alistgo.com/", "docs": "https://alistgo.com/guide/install/docker.html" }, - "tags": [ - "file", - "webdav", - "storage" - ] + "tags": ["file", "webdav", "storage"] }, { "id": "alltube", @@ -189,11 +145,7 @@ "website": "https://github.com/Rudloff/alltube", "docs": "https://github.com/Rudloff/alltube/wiki" }, - "tags": [ - "media", - "video", - "downloader" - ] + "tags": ["media", "video", "downloader"] }, { "id": "ampache", @@ -206,11 +158,7 @@ "website": "http://ampache.org/", "docs": "https://github.com/ampache/ampache/wiki" }, - "tags": [ - "media", - "music", - "streaming" - ] + "tags": ["media", "music", "streaming"] }, { "id": "anonupload", @@ -223,10 +171,7 @@ "docs": "https://github.com/Supernova3339/anonupload/blob/main/env.md", "website": "https://anonupload.com/" }, - "tags": [ - "file-sharing", - "privacy" - ] + "tags": ["file-sharing", "privacy"] }, { "id": "anse", @@ -239,12 +184,7 @@ "website": "https://anse.app/", "docs": "https://github.com/ddiu8081/anse#readme" }, - "tags": [ - "ai", - "chatbot", - "openai", - "ui" - ] + "tags": ["ai", "chatbot", "openai", "ui"] }, { "id": "answer", @@ -257,10 +197,7 @@ "website": "https://answer.apache.org/", "docs": "https://answer.apache.org/docs" }, - "tags": [ - "q&a", - "self-hosted" - ] + "tags": ["q&a", "self-hosted"] }, { "id": "anubis", @@ -273,10 +210,7 @@ "website": "https://anubis.techaro.lol", "docs": "https://anubis.techaro.lol/docs/" }, - "tags": [ - "self-hosted", - "bot-protection" - ] + "tags": ["self-hosted", "bot-protection"] }, { "id": "anythingllm", @@ -289,11 +223,7 @@ "website": "https://useanything.com", "docs": "https://github.com/Mintplex-Labs/anything-llm/tree/master/docs" }, - "tags": [ - "ai", - "llm", - "chatbot" - ] + "tags": ["ai", "llm", "chatbot"] }, { "id": "anytype", @@ -306,11 +236,7 @@ "docs": "https://doc.anytype.io/anytype-docs", "website": "https://anytype.io/" }, - "tags": [ - "note-taking", - "local-first", - "peer-to-peer" - ] + "tags": ["note-taking", "local-first", "peer-to-peer"] }, { "id": "appflowy", @@ -342,10 +268,7 @@ "website": "https://github.com/caronc/apprise-api", "docs": "https://github.com/caronc/apprise-api/wiki" }, - "tags": [ - "notifications", - "api" - ] + "tags": ["notifications", "api"] }, { "id": "appsmith", @@ -358,9 +281,7 @@ "website": "https://appsmith.com/", "docs": "https://docs.appsmith.com/" }, - "tags": [ - "cms" - ] + "tags": ["cms"] }, { "id": "appwrite", @@ -373,13 +294,7 @@ "docs": "https://appwrite.io/docs" }, "logo": "appwrite.svg", - "tags": [ - "database", - "firebase", - "mariadb", - "hosting", - "self-hosted" - ] + "tags": ["database", "firebase", "mariadb", "hosting", "self-hosted"] }, { "id": "aptabase", @@ -392,10 +307,7 @@ "website": "https://aptabase.com/", "docs": "https://github.com/aptabase/aptabase/blob/main/README.md" }, - "tags": [ - "analytics", - "self-hosted" - ] + "tags": ["analytics", "self-hosted"] }, { "id": "arangodb", @@ -408,11 +320,7 @@ "website": "https://www.arangodb.com/", "docs": "https://www.arangodb.com/docs/" }, - "tags": [ - "database", - "graph-database", - "nosql" - ] + "tags": ["database", "graph-database", "nosql"] }, { "id": "argilla", @@ -425,11 +333,7 @@ "website": "https://www.argilla.io/", "docs": "https://docs.argilla.io/" }, - "tags": [ - "machine-learning", - "data-labeling", - "ai" - ] + "tags": ["machine-learning", "data-labeling", "ai"] }, { "id": "audiobookshelf", @@ -442,11 +346,7 @@ "website": "https://www.audiobookshelf.org", "docs": "https://www.audiobookshelf.org/docs" }, - "tags": [ - "media", - "audiobooks", - "podcasts" - ] + "tags": ["media", "audiobooks", "podcasts"] }, { "id": "authelia", @@ -501,11 +401,7 @@ "website": "https://authorizer.dev", "docs": "https://docs.authorizer.dev/" }, - "tags": [ - "authentication", - "authorization", - "security" - ] + "tags": ["authentication", "authorization", "security"] }, { "id": "autobase", @@ -518,13 +414,7 @@ "docs": "https://autobase.tech/docs" }, "logo": "autobase.svg", - "tags": [ - "database", - "postgres", - "automation", - "self-hosted", - "dbaas" - ] + "tags": ["database", "postgres", "automation", "self-hosted", "dbaas"] }, { "id": "automatisch", @@ -537,11 +427,7 @@ "website": "https://automatisch.io/docs", "docs": "https://automatisch.io/docs" }, - "tags": [ - "automation", - "workflow", - "integration" - ] + "tags": ["automation", "workflow", "integration"] }, { "id": "azuracast", @@ -574,11 +460,7 @@ "website": "https://babybuddy.app", "docs": "https://docs.babybuddy.app" }, - "tags": [ - "parenting", - "tracking", - "family" - ] + "tags": ["parenting", "tracking", "family"] }, { "id": "backrest", @@ -591,9 +473,7 @@ "docs": "https://garethgeorge.github.io/backrest/introduction/getting-started" }, "logo": "backrest.svg", - "tags": [ - "backup" - ] + "tags": ["backup"] }, { "id": "baikal", @@ -606,12 +486,7 @@ "github": "https://sabre.io/baikal/", "docs": "https://sabre.io/baikal/install/" }, - "tags": [ - "calendar", - "contacts", - "caldav", - "carddav" - ] + "tags": ["calendar", "contacts", "caldav", "carddav"] }, { "id": "barrage", @@ -624,11 +499,7 @@ "website": "https://github.com/maulik9898/barrage", "docs": "https://github.com/maulik9898/barrage/blob/main/README.md" }, - "tags": [ - "torrents", - "deluge", - "mobile" - ] + "tags": ["torrents", "deluge", "mobile"] }, { "id": "baserow", @@ -641,9 +512,7 @@ "website": "https://baserow.io/", "docs": "https://baserow.io/docs/index" }, - "tags": [ - "database" - ] + "tags": ["database"] }, { "id": "bazarr", @@ -656,11 +525,7 @@ "website": "https://www.bazarr.media/", "docs": "https://www.bazarr.media/docs" }, - "tags": [ - "subtitles", - "sonarr", - "radarr" - ] + "tags": ["subtitles", "sonarr", "radarr"] }, { "id": "bentopdf", @@ -673,12 +538,7 @@ "website": "https://bentopdf.com/", "docs": "https://github.com/bentopdf/bentopdf#readme" }, - "tags": [ - "pdf", - "converter", - "api", - "utility" - ] + "tags": ["pdf", "converter", "api", "utility"] }, { "id": "beszel", @@ -691,11 +551,7 @@ "website": "https://beszel.dev", "docs": "https://beszel.dev/guide/getting-started" }, - "tags": [ - "monitoring", - "docker", - "alerts" - ] + "tags": ["monitoring", "docker", "alerts"] }, { "id": "bigcapital", @@ -728,11 +584,7 @@ "website": "https://www.blender.org/", "docs": "https://docs.blender.org/" }, - "tags": [ - "3d", - "rendering", - "animation" - ] + "tags": ["3d", "rendering", "animation"] }, { "id": "blinko", @@ -745,12 +597,7 @@ "website": "https://blinko.space/", "docs": "https://docs.blinko.space/" }, - "tags": [ - "productivity", - "organization", - "workflow", - "nextjs" - ] + "tags": ["productivity", "organization", "workflow", "nextjs"] }, { "id": "bluesky-pds", @@ -763,12 +610,7 @@ "website": "https://bsky.social/about", "docs": "https://github.com/bluesky-social/pds" }, - "tags": [ - "bluesky", - "pds", - "data", - "server" - ] + "tags": ["bluesky", "pds", "data", "server"] }, { "id": "bolt.diy", @@ -781,14 +623,7 @@ "website": "https://stackblitz-labs.github.io/bolt.diy/", "docs": "https://stackblitz-labs.github.io/bolt.diy/" }, - "tags": [ - "ai", - "self-hosted", - "development", - "chatbot", - "ide", - "llm" - ] + "tags": ["ai", "self-hosted", "development", "chatbot", "ide", "llm"] }, { "id": "booklore", @@ -801,12 +636,7 @@ "website": "https://github.com/booklore-app/BookLore", "docs": "https://github.com/booklore-app/BookLore/tree/develop/docs" }, - "tags": [ - "books", - "library", - "database", - "mariadb" - ] + "tags": ["books", "library", "database", "mariadb"] }, { "id": "bookstack", @@ -819,10 +649,7 @@ "website": "https://www.bookstackapp.com", "docs": "https://www.bookstackapp.com/docs" }, - "tags": [ - "documentation", - "self-hosted" - ] + "tags": ["documentation", "self-hosted"] }, { "id": "borgitory", @@ -835,12 +662,7 @@ "website": "https://github.com/mlapaglia/borgitory", "docs": "https://github.com/mlapaglia/borgitory" }, - "tags": [ - "backup", - "borg", - "archive", - "self-hosted" - ] + "tags": ["backup", "borg", "archive", "self-hosted"] }, { "id": "botpress", @@ -853,10 +675,7 @@ "website": "https://botpress.com", "docs": "https://botpress.com/docs" }, - "tags": [ - "ai", - "self-hosted" - ] + "tags": ["ai", "self-hosted"] }, { "id": "browserless", @@ -869,10 +688,7 @@ "website": "https://www.browserless.io/", "docs": "https://docs.browserless.io/" }, - "tags": [ - "browser", - "automation" - ] + "tags": ["browser", "automation"] }, { "id": "budget-board", @@ -885,13 +701,7 @@ "website": "https://budgetboard.net/", "docs": "https://budgetboard.net/" }, - "tags": [ - "finance", - "postgres", - "self-hosted", - "docker", - "compose" - ] + "tags": ["finance", "postgres", "self-hosted", "docker", "compose"] }, { "id": "budibase", @@ -904,12 +714,7 @@ "website": "https://budibase.com/", "docs": "https://docs.budibase.com/docs/" }, - "tags": [ - "database", - "low-code", - "nocode", - "applications" - ] + "tags": ["database", "low-code", "nocode", "applications"] }, { "id": "bugsink", @@ -922,11 +727,7 @@ "website": "https://www.bugsink.com/", "docs": "https://www.bugsink.com/docs/" }, - "tags": [ - "hosting", - "self-hosted", - "development" - ] + "tags": ["hosting", "self-hosted", "development"] }, { "id": "bytebase", @@ -939,10 +740,7 @@ "website": "https://www.bytebase.com", "docs": "https://www.bytebase.com/docs" }, - "tags": [ - "database", - "self-hosted" - ] + "tags": ["database", "self-hosted"] }, { "id": "bytestash", @@ -955,10 +753,7 @@ "website": "https://github.com/jordan-dalby/ByteStash", "docs": "https://github.com/jordan-dalby/ByteStash" }, - "tags": [ - "file-storage", - "self-hosted" - ] + "tags": ["file-storage", "self-hosted"] }, { "id": "calcom", @@ -971,10 +766,7 @@ "docs": "https://cal.com/docs" }, "logo": "calcom.jpg", - "tags": [ - "scheduling", - "booking" - ] + "tags": ["scheduling", "booking"] }, { "id": "calibre", @@ -987,10 +779,7 @@ "website": "https://calibre-ebook.com/", "docs": "https://manual.calibre-ebook.com/" }, - "tags": [ - "Documents", - "E-Commerce" - ] + "tags": ["Documents", "E-Commerce"] }, { "id": "calibre-web", @@ -1003,12 +792,7 @@ "website": "https://github.com/janeczku/calibre-web", "docs": "https://github.com/janeczku/calibre-web/wiki" }, - "tags": [ - "ebooks", - "media", - "library", - "self-hosted" - ] + "tags": ["ebooks", "media", "library", "self-hosted"] }, { "id": "capso", @@ -1021,13 +805,7 @@ "docs": "https://cap.so/docs/" }, "logo": "capso.png", - "tags": [ - "web", - "s3", - "mysql", - "development", - "self-hosted" - ] + "tags": ["web", "s3", "mysql", "development", "self-hosted"] }, { "id": "carbone", @@ -1040,12 +818,7 @@ "website": "https://carbone.io/", "docs": "https://carbone.io/documentation/design/overview/getting-started.html" }, - "tags": [ - "Document Generation", - "Automation", - "Reporting", - "Productivity" - ] + "tags": ["Document Generation", "Automation", "Reporting", "Productivity"] }, { "id": "casdoor", @@ -1081,11 +854,7 @@ "website": "https://changedetection.io", "docs": "https://github.com/dgtlmoon/changedetection.io/wiki" }, - "tags": [ - "Monitoring", - "Data", - "Notifications" - ] + "tags": ["Monitoring", "Data", "Notifications"] }, { "id": "chatwoot", @@ -1098,11 +867,7 @@ "website": "https://www.chatwoot.com", "docs": "https://www.chatwoot.com/docs" }, - "tags": [ - "support", - "chat", - "customer-service" - ] + "tags": ["support", "chat", "customer-service"] }, { "id": "checkcle", @@ -1115,11 +880,7 @@ "website": "https://operacle.com/", "docs": "https://github.com/Operacle/checkcle#readme" }, - "tags": [ - "security", - "compliance", - "monitoring" - ] + "tags": ["security", "compliance", "monitoring"] }, { "id": "checkmate", @@ -1132,11 +893,7 @@ "website": "https://checkmate.so/", "docs": "https://docs.checkmate.so" }, - "tags": [ - "self-hosted", - "monitoring", - "uptime" - ] + "tags": ["self-hosted", "monitoring", "uptime"] }, { "id": "chevereto", @@ -1168,11 +925,7 @@ "website": "https://chibisafe.app", "docs": "https://chibisafe.app/docs/intro" }, - "tags": [ - "media system", - "storage", - "file-sharing" - ] + "tags": ["media system", "storage", "file-sharing"] }, { "id": "chiefonboarding", @@ -1204,13 +957,7 @@ "website": "https://www.chirpstack.io/", "docs": "https://www.chirpstack.io/docs/" }, - "tags": [ - "iot", - "lorawan", - "network-server", - "gateway", - "monitoring" - ] + "tags": ["iot", "lorawan", "network-server", "gateway", "monitoring"] }, { "id": "chromium", @@ -1223,11 +970,7 @@ "docs": "https://docs.linuxserver.io/images/docker-chromium", "website": "https://docs.linuxserver.io/images/docker-chromium" }, - "tags": [ - "browser", - "development", - "web" - ] + "tags": ["browser", "development", "web"] }, { "id": "classicpress", @@ -1240,11 +983,7 @@ "website": "https://www.classicpress.net/", "docs": "https://docs.classicpress.net/" }, - "tags": [ - "cms", - "wordpress", - "content-management" - ] + "tags": ["cms", "wordpress", "content-management"] }, { "id": "clickhouse", @@ -1257,13 +996,7 @@ "website": "https://clickhouse.com/", "docs": "https://clickhouse.com/docs" }, - "tags": [ - "self-hosted", - "open-source", - "database", - "olap", - "analytics" - ] + "tags": ["self-hosted", "open-source", "database", "olap", "analytics"] }, { "id": "cloud9", @@ -1276,11 +1009,7 @@ "website": "https://aws.amazon.com/cloud9/", "docs": "https://docs.aws.amazon.com/cloud9/" }, - "tags": [ - "ide", - "development", - "cloud" - ] + "tags": ["ide", "development", "cloud"] }, { "id": "cloudcommander", @@ -1293,11 +1022,7 @@ "website": "https://cloudcmd.io", "docs": "https://cloudcmd.io/#install" }, - "tags": [ - "file-manager", - "web-based", - "console" - ] + "tags": ["file-manager", "web-based", "console"] }, { "id": "cloudflare-ddns", @@ -1310,11 +1035,7 @@ "website": "https://github.com/favonia/cloudflare-ddns", "docs": "https://github.com/favonia/cloudflare-ddns" }, - "tags": [ - "cloud", - "networking", - "ddns" - ] + "tags": ["cloud", "networking", "ddns"] }, { "id": "cloudflared", @@ -1327,12 +1048,7 @@ "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/", "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/" }, - "tags": [ - "cloud", - "networking", - "security", - "tunnel" - ] + "tags": ["cloud", "networking", "security", "tunnel"] }, { "id": "cloudreve", @@ -1345,12 +1061,7 @@ "website": "https://cloudreve.org", "docs": "https://docs.cloudreve.org" }, - "tags": [ - "storage", - "file-sharing", - "cloud", - "self-hosted" - ] + "tags": ["storage", "file-sharing", "cloud", "self-hosted"] }, { "id": "cockpit", @@ -1363,11 +1074,7 @@ "website": "https://getcockpit.com", "docs": "https://getcockpit.com/documentation" }, - "tags": [ - "cms", - "content-management", - "api" - ] + "tags": ["cms", "content-management", "api"] }, { "id": "coder", @@ -1380,11 +1087,7 @@ "website": "https://coder.com/", "docs": "https://coder.com/docs" }, - "tags": [ - "self-hosted", - "open-source", - "builder" - ] + "tags": ["self-hosted", "open-source", "builder"] }, { "id": "codex-docs", @@ -1397,11 +1100,7 @@ "website": "https://codex.so", "docs": "https://docs.codex.so" }, - "tags": [ - "documentation", - "development", - "collaboration" - ] + "tags": ["documentation", "development", "collaboration"] }, { "id": "colanode", @@ -1414,11 +1113,7 @@ "website": "https://colanode.com", "docs": "https://colanode.com/docs/" }, - "tags": [ - "documentation", - "knowledge-base", - "collaboration" - ] + "tags": ["documentation", "knowledge-base", "collaboration"] }, { "id": "collabora-office", @@ -1431,11 +1126,7 @@ "website": "https://collaboraonline.com", "docs": "https://sdk.collaboraonline.com/docs" }, - "tags": [ - "office", - "documents", - "collaboration" - ] + "tags": ["office", "documents", "collaboration"] }, { "id": "commafeed", @@ -1448,11 +1139,7 @@ "website": "https://www.commafeed.com/", "docs": "https://github.com/Athou/commafeed/wiki" }, - "tags": [ - "feed-reader", - "news-aggregator", - "rss" - ] + "tags": ["feed-reader", "news-aggregator", "rss"] }, { "id": "commento", @@ -1465,11 +1152,7 @@ "github": "https://github.com/souramoo/commentoplusplus" }, "logo": "logo.png", - "tags": [ - "comments", - "discussion", - "website" - ] + "tags": ["comments", "discussion", "website"] }, { "id": "commentoplusplus", @@ -1482,11 +1165,7 @@ "github": "https://github.com/souramoo/commentoplusplus" }, "logo": "logo.png", - "tags": [ - "comments", - "website", - "open-source" - ] + "tags": ["comments", "website", "open-source"] }, { "id": "conduit", @@ -1499,10 +1178,7 @@ "website": "https://conduit.rs/", "docs": "https://docs.conduit.rs/" }, - "tags": [ - "matrix", - "communication" - ] + "tags": ["matrix", "communication"] }, { "id": "conduwuit", @@ -1515,13 +1191,7 @@ "website": "https://conduwuit.puppyirl.gay", "docs": "https://conduwuit.puppyirl.gay/configuration.html" }, - "tags": [ - "backend", - "chat", - "communication", - "matrix", - "server" - ] + "tags": ["backend", "chat", "communication", "matrix", "server"] }, { "id": "confluence", @@ -1552,11 +1222,7 @@ "website": "https://github.com/c4illin/ConvertX", "docs": "https://github.com/c4illin/ConvertX#environment-variables" }, - "tags": [ - "media", - "converter", - "ffmpeg" - ] + "tags": ["media", "converter", "ffmpeg"] }, { "id": "convex", @@ -1569,11 +1235,7 @@ "website": "https://www.convex.dev/", "docs": "https://www.convex.dev/docs" }, - "tags": [ - "backend", - "database", - "api" - ] + "tags": ["backend", "database", "api"] }, { "id": "cookie-cloud", @@ -1586,12 +1248,7 @@ "website": "https://github.com/easychen/cookiecloud", "docs": "https://github.com/easychen/cookiecloud#readme" }, - "tags": [ - "cookies", - "sync", - "selfhosted", - "privacy" - ] + "tags": ["cookies", "sync", "selfhosted", "privacy"] }, { "id": "coralproject", @@ -1604,11 +1261,7 @@ "github": "https://github.com/coralproject/talk" }, "logo": "logo.png", - "tags": [ - "communication", - "community", - "privacy" - ] + "tags": ["communication", "community", "privacy"] }, { "id": "couchdb", @@ -1621,10 +1274,7 @@ "website": "https://couchdb.apache.org/", "docs": "https://docs.couchdb.org/en/stable/" }, - "tags": [ - "database", - "storage" - ] + "tags": ["database", "storage"] }, { "id": "crawl4ai", @@ -1637,13 +1287,7 @@ "website": "https://crawl4ai.com", "docs": "https://github.com/unclecode/crawl4ai#readme" }, - "tags": [ - "crawler", - "scraping", - "AI", - "LLM", - "API" - ] + "tags": ["crawler", "scraping", "AI", "LLM", "API"] }, { "id": "crowdsec", @@ -1656,10 +1300,7 @@ "website": "https://crowdsec.net/", "docs": "https://docs.crowdsec.net" }, - "tags": [ - "security", - "firewall" - ] + "tags": ["security", "firewall"] }, { "id": "cup", @@ -1672,13 +1313,7 @@ "website": "https://cup.sh", "docs": "https://github.com/sergi0g/cup" }, - "tags": [ - "docker", - "container", - "management", - "ui", - "self-hosted" - ] + "tags": ["docker", "container", "management", "ui", "self-hosted"] }, { "id": "cyberchef", @@ -1691,11 +1326,7 @@ "website": "https://gchq.github.io/CyberChef/", "docs": "https://github.com/gchq/CyberChef/wiki" }, - "tags": [ - "security", - "encryption", - "data-analysis" - ] + "tags": ["security", "encryption", "data-analysis"] }, { "id": "dashy", @@ -1708,12 +1339,7 @@ "website": "https://dashy.to/", "docs": "https://github.com/Lissy93/dashy/tree/master/docs" }, - "tags": [ - "dashboard", - "monitoring", - "self-hosted", - "homelab" - ] + "tags": ["dashboard", "monitoring", "self-hosted", "homelab"] }, { "id": "datalens", @@ -1726,12 +1352,7 @@ "website": "https://datalens.tech/", "docs": "https://datalens.tech/docs/" }, - "tags": [ - "analytics", - "self-hosted", - "bi", - "monitoring" - ] + "tags": ["analytics", "self-hosted", "bi", "monitoring"] }, { "id": "directory-lister", @@ -1744,11 +1365,7 @@ "website": "https://www.directorylister.com/", "docs": "https://docs.directorylister.com/" }, - "tags": [ - "file-manager", - "directory-listing", - "php" - ] + "tags": ["file-manager", "directory-listing", "php"] }, { "id": "directus", @@ -1761,9 +1378,7 @@ "website": "https://directus.io/", "docs": "https://docs.directus.io/" }, - "tags": [ - "cms" - ] + "tags": ["cms"] }, { "id": "discord-tickets", @@ -1776,11 +1391,7 @@ "website": "https://discordtickets.app", "docs": "https://discordtickets.app/self-hosting/installation/docker/" }, - "tags": [ - "discord", - "tickets", - "support" - ] + "tags": ["discord", "tickets", "support"] }, { "id": "discourse", @@ -1793,11 +1404,7 @@ "website": "https://www.discourse.org/", "docs": "https://meta.discourse.org/" }, - "tags": [ - "forum", - "community", - "discussion" - ] + "tags": ["forum", "community", "discussion"] }, { "id": "docling-serve", @@ -1811,14 +1418,7 @@ "docs": "https://docling-project.github.io/docling-serve/", "dockerhub": "https://quay.io/repository/docling-project/docling-serve" }, - "tags": [ - "document-processing", - "api", - "ai", - "conversion", - "pdf", - "office" - ] + "tags": ["document-processing", "api", "ai", "conversion", "pdf", "office"] }, { "id": "docmost", @@ -1831,11 +1431,7 @@ "website": "https://docmost.com/", "docs": "https://docmost.com/docs/" }, - "tags": [ - "self-hosted", - "open-source", - "manager" - ] + "tags": ["self-hosted", "open-source", "manager"] }, { "id": "documenso", @@ -1848,9 +1444,7 @@ "docs": "https://documenso.com/docs" }, "logo": "documenso.png", - "tags": [ - "document-signing" - ] + "tags": ["document-signing"] }, { "id": "docuseal", @@ -1863,9 +1457,7 @@ "website": "https://www.docuseal.com/", "docs": "https://www.docuseal.com/" }, - "tags": [ - "document-signing" - ] + "tags": ["document-signing"] }, { "id": "dokploy-prom-monitoring-extension", @@ -1898,13 +1490,7 @@ "website": "https://www.dolibarr.org/", "docs": "https://wiki.dolibarr.org/" }, - "tags": [ - "erp", - "crm", - "business", - "management", - "invoicing" - ] + "tags": ["erp", "crm", "business", "management", "invoicing"] }, { "id": "domain-locker", @@ -1917,12 +1503,7 @@ "website": "https://domain-locker.com/", "docs": "https://github.com/Lissy93/domain-locker#readme" }, - "tags": [ - "domains", - "monitoring", - "utilities", - "postgres" - ] + "tags": ["domains", "monitoring", "utilities", "postgres"] }, { "id": "doublezero", @@ -1935,9 +1516,7 @@ "website": "https://www.double-zero.cloud/", "docs": "https://github.com/technomancy-dev/00" }, - "tags": [ - "email" - ] + "tags": ["email"] }, { "id": "dozzle", @@ -1950,11 +1529,7 @@ "website": "https://dozzle.dev", "docs": "https://dozzle.dev/docs" }, - "tags": [ - "monitoring", - "logs", - "docker" - ] + "tags": ["monitoring", "logs", "docker"] }, { "id": "dragonfly-db", @@ -1967,10 +1542,7 @@ "website": "https://www.dragonflydb.io/", "docs": "https://www.dragonflydb.io/docs" }, - "tags": [ - "database", - "redis" - ] + "tags": ["database", "redis"] }, { "id": "drawio", @@ -1983,10 +1555,7 @@ "website": "https://draw.io/", "docs": "https://www.drawio.com/doc/" }, - "tags": [ - "drawing", - "diagrams" - ] + "tags": ["drawing", "diagrams"] }, { "id": "drawnix", @@ -1999,10 +1568,7 @@ "website": "https://hub.docker.com/r/pubuzhixing/drawnix", "docs": "https://hub.docker.com/r/pubuzhixing/drawnix" }, - "tags": [ - "visualization", - "content-generation" - ] + "tags": ["visualization", "content-generation"] }, { "id": "drizzle-gateway", @@ -2015,10 +1581,7 @@ "website": "https://drizzle-team.github.io/", "docs": "https://drizzle-team.github.io/docs" }, - "tags": [ - "database", - "gateway" - ] + "tags": ["database", "gateway"] }, { "id": "dumbassets", @@ -2031,11 +1594,7 @@ "website": "https://www.dumbware.io/software/DumbAssets/", "docs": "https://github.com/dumbwareio/dumbassets" }, - "tags": [ - "asset-tracking", - "self-hosted", - "simple" - ] + "tags": ["asset-tracking", "self-hosted", "simple"] }, { "id": "dumbbudget", @@ -2048,12 +1607,7 @@ "website": "https://www.dumbware.io/software/DumbBudget/", "docs": "https://github.com/dumbwareio/dumbbudget" }, - "tags": [ - "budget", - "finance", - "self-hosted", - "simple" - ] + "tags": ["budget", "finance", "self-hosted", "simple"] }, { "id": "dumbdrop", @@ -2066,11 +1620,7 @@ "website": "https://www.dumbware.io/software/DumbDrop/", "docs": "https://github.com/dumbwareio/dumbdrop" }, - "tags": [ - "file-sharing", - "self-hosted", - "simple" - ] + "tags": ["file-sharing", "self-hosted", "simple"] }, { "id": "dumbpad", @@ -2083,11 +1633,20 @@ "website": "https://www.dumbware.io/software/DumbPad/", "docs": "https://github.com/dumbwareio/dumbpad" }, - "tags": [ - "notepad", - "self-hosted", - "simple" - ] + "tags": ["notepad", "self-hosted", "simple"] + }, + { + "id": "duplicati", + "name": "Duplicati", + "version": "latest", + "description": "Duplicati is a free, open-source backup solution that offers zero-trust, fully encrypted backups for your data", + "logo": "logo.png", + "links": { + "github": "https://github.com/duplicati/duplicati", + "website": "https://duplicati.com/", + "docs": "https://docs.duplicati.com/" + }, + "tags": ["backup", "self-hosted", "simple"] }, { "id": "easyappointments", @@ -2100,11 +1659,7 @@ "website": "https://easyappointments.org", "docs": "https://easyappointments.org/docs" }, - "tags": [ - "scheduling", - "appointments", - "booking" - ] + "tags": ["scheduling", "appointments", "booking"] }, { "id": "elastic-search", @@ -2117,10 +1672,7 @@ "website": "https://www.elastic.co/elasticsearch/", "docs": "https://docs.elastic.co/elasticsearch/" }, - "tags": [ - "search", - "analytics" - ] + "tags": ["search", "analytics"] }, { "id": "emby", @@ -2133,10 +1685,7 @@ "website": "https://emby.media/", "docs": "https://emby.media/support/articles/Home.html" }, - "tags": [ - "media", - "media system" - ] + "tags": ["media", "media system"] }, { "id": "emqx", @@ -2149,11 +1698,7 @@ "website": "https://www.emqx.com", "docs": "https://docs.emqx.com" }, - "tags": [ - "broker", - "iot", - "mqtt" - ] + "tags": ["broker", "iot", "mqtt"] }, { "id": "enshrouded", @@ -2166,9 +1711,7 @@ "website": "", "docs": "" }, - "tags": [ - "gaming" - ] + "tags": ["gaming"] }, { "id": "erpnext", @@ -2202,11 +1745,7 @@ "website": "https://etherpad.org/", "docs": "https://github.com/ether/etherpad-lite/wiki" }, - "tags": [ - "collaboration", - "text-editor", - "real-time" - ] + "tags": ["collaboration", "text-editor", "real-time"] }, { "id": "evershop", @@ -2219,10 +1758,7 @@ "website": "https://evershop.io/", "docs": "https://evershop.io/docs/development/getting-started/introduction" }, - "tags": [ - "E-Commerce", - "shopping" - ] + "tags": ["E-Commerce", "shopping"] }, { "id": "evolutionapi", @@ -2235,11 +1771,7 @@ "docs": "https://doc.evolution-api.com/v2/en/get-started/introduction", "website": "https://evolution-api.com/opensource-whatsapp-api/" }, - "tags": [ - "api", - "whatsapp", - "messaging" - ] + "tags": ["api", "whatsapp", "messaging"] }, { "id": "excalidraw", @@ -2252,9 +1784,7 @@ "website": "https://excalidraw.com/", "docs": "https://docs.excalidraw.com/" }, - "tags": [ - "drawing" - ] + "tags": ["drawing"] }, { "id": "ezbookkeeping", @@ -2287,10 +1817,7 @@ "website": "https://filebrowser.org/", "docs": "https://filebrowser.org/" }, - "tags": [ - "file-manager", - "storage" - ] + "tags": ["file-manager", "storage"] }, { "id": "filestash", @@ -2303,11 +1830,7 @@ "website": "https://www.filestash.app/", "docs": "https://www.filestash.app/docs/" }, - "tags": [ - "file-manager", - "document-editor", - "self-hosted" - ] + "tags": ["file-manager", "document-editor", "self-hosted"] }, { "id": "firecrawl", @@ -2320,13 +1843,7 @@ "website": "https://firecrawl.dev", "docs": "https://github.com/firecrawl/firecrawl" }, - "tags": [ - "api", - "crawler", - "scraping", - "data-extraction", - "llm" - ] + "tags": ["api", "crawler", "scraping", "data-extraction", "llm"] }, { "id": "fivem", @@ -2339,12 +1856,7 @@ "website": "https://fivem.net/", "docs": "https://docs.fivem.net/docs/server-manual/" }, - "tags": [ - "gaming", - "gta", - "multiplayer", - "server" - ] + "tags": ["gaming", "gta", "multiplayer", "server"] }, { "id": "flagsmith", @@ -2375,12 +1887,7 @@ "website": "https://github.com/FlareSolverr/FlareSolverr", "docs": "https://github.com/FlareSolverr/FlareSolverr" }, - "tags": [ - "proxy", - "cloudflare", - "bypass", - "ddos-guard" - ] + "tags": ["proxy", "cloudflare", "bypass", "ddos-guard"] }, { "id": "flatnotes", @@ -2393,12 +1900,7 @@ "website": "https://flatnotes.io", "docs": "https://github.com/dullage/flatnotes" }, - "tags": [ - "notes", - "productivity", - "markdown", - "self-hosted" - ] + "tags": ["notes", "productivity", "markdown", "self-hosted"] }, { "id": "flatnotes-totp", @@ -2411,14 +1913,7 @@ "website": "https://flatnotes.io", "docs": "https://github.com/dullage/flatnotes" }, - "tags": [ - "notes", - "productivity", - "markdown", - "self-hosted", - "totp", - "2fa" - ] + "tags": ["notes", "productivity", "markdown", "self-hosted", "totp", "2fa"] }, { "id": "flowise", @@ -2431,12 +1926,7 @@ "website": "https://flowiseai.com/", "docs": "https://docs.flowiseai.com/" }, - "tags": [ - "AI", - "LLM", - "workflow", - "automation" - ] + "tags": ["AI", "LLM", "workflow", "automation"] }, { "id": "fmd-server", @@ -2449,12 +1939,7 @@ "website": "https://fmd-foss.org", "docs": "https://fmd-foss.org/docs/fmd-server/overview" }, - "tags": [ - "phone", - "security", - "gps", - "location" - ] + "tags": ["phone", "security", "gps", "location"] }, { "id": "focalboard", @@ -2467,9 +1952,7 @@ "website": "https://focalboard.com", "docs": "https://www.focalboard.com/docs/" }, - "tags": [ - "kanban" - ] + "tags": ["kanban"] }, { "id": "fonoster", @@ -2482,14 +1965,7 @@ "website": "https://fonoster.com/", "docs": "https://docs.fonoster.com/" }, - "tags": [ - "telephony", - "voip", - "sip", - "webrtc", - "pstn", - "communication" - ] + "tags": ["telephony", "voip", "sip", "webrtc", "pstn", "communication"] }, { "id": "forgejo", @@ -2502,10 +1978,7 @@ "website": "https://forgejo.org/", "docs": "https://forgejo.org/docs/latest/" }, - "tags": [ - "self-hosted", - "storage" - ] + "tags": ["self-hosted", "storage"] }, { "id": "formbricks", @@ -2518,10 +1991,7 @@ "website": "https://formbricks.com/", "docs": "https://formbricks.com/docs" }, - "tags": [ - "forms", - "analytics" - ] + "tags": ["forms", "analytics"] }, { "id": "frappe-hr", @@ -2554,13 +2024,7 @@ "docs": "https://github.com/freescout-helpdesk/freescout/wiki/Installation-Guide" }, "logo": "freescout.svg", - "tags": [ - "helpdesk", - "support", - "email", - "customer-service", - "self-hosted" - ] + "tags": ["helpdesk", "support", "email", "customer-service", "self-hosted"] }, { "id": "freshrss", @@ -2593,10 +2057,7 @@ "website": "https://garagehq.deuxfleurs.fr", "docs": "https://garagehq.deuxfleurs.fr/documentation/quick-start/" }, - "tags": [ - "storage", - "object-storage" - ] + "tags": ["storage", "object-storage"] }, { "id": "garage-with-ui", @@ -2609,10 +2070,7 @@ "website": "https://garagehq.deuxfleurs.fr", "docs": "https://garagehq.deuxfleurs.fr/documentation/quick-start/" }, - "tags": [ - "storage", - "object-storage" - ] + "tags": ["storage", "object-storage"] }, { "id": "ghost", @@ -2625,9 +2083,7 @@ "website": "https://ghost.org/", "docs": "https://ghost.org/docs/" }, - "tags": [ - "cms" - ] + "tags": ["cms"] }, { "id": "gitea-mirror", @@ -2640,14 +2096,7 @@ "website": "https://github.com/arunavo4/gitea-mirror", "docs": "https://github.com/arunavo4/gitea-mirror#readme" }, - "tags": [ - "git", - "mirror", - "github", - "gitea", - "self-hosted", - "automation" - ] + "tags": ["git", "mirror", "github", "gitea", "self-hosted", "automation"] }, { "id": "gitea-mysql", @@ -2660,13 +2109,7 @@ "website": "https://gitea.io/", "docs": "https://docs.gitea.com/" }, - "tags": [ - "git", - "scm", - "mysql", - "developer-tools", - "self-hosted" - ] + "tags": ["git", "scm", "mysql", "developer-tools", "self-hosted"] }, { "id": "gitea-postgres", @@ -2679,13 +2122,7 @@ "website": "https://gitea.io/", "docs": "https://docs.gitea.com/" }, - "tags": [ - "git", - "scm", - "postgres", - "developer-tools", - "self-hosted" - ] + "tags": ["git", "scm", "postgres", "developer-tools", "self-hosted"] }, { "id": "gitea-sqlite", @@ -2698,12 +2135,7 @@ "website": "https://gitea.io/", "docs": "https://docs.gitea.com/" }, - "tags": [ - "git", - "scm", - "developer-tools", - "self-hosted" - ] + "tags": ["git", "scm", "developer-tools", "self-hosted"] }, { "id": "gitingest", @@ -2716,13 +2148,7 @@ "website": "https://gitingest.com", "docs": "https://github.com/coderamp-labs/gitingest#readme" }, - "tags": [ - "analytics", - "s3", - "monitoring", - "sentry", - "metrics" - ] + "tags": ["analytics", "s3", "monitoring", "sentry", "metrics"] }, { "id": "gitlab-ce", @@ -2735,12 +2161,7 @@ "website": "https://gitlab.com/", "docs": "https://docs.gitlab.com/ee/" }, - "tags": [ - "git", - "ci-cd", - "version-control", - "project-management" - ] + "tags": ["git", "ci-cd", "version-control", "project-management"] }, { "id": "glance", @@ -2753,12 +2174,7 @@ "docs": "https://github.com/glanceapp/glance/blob/main/docs/configuration.md", "website": "https://glance.app/" }, - "tags": [ - "dashboard", - "monitoring", - "widgets", - "rss" - ] + "tags": ["dashboard", "monitoring", "widgets", "rss"] }, { "id": "glitchtip", @@ -2771,9 +2187,7 @@ "website": "https://glitchtip.com/", "docs": "https://glitchtip.com/documentation" }, - "tags": [ - "hosting" - ] + "tags": ["hosting"] }, { "id": "glpi", @@ -2786,11 +2200,7 @@ "website": "https://glpi-project.org/", "docs": "https://glpi-project.org/documentation/" }, - "tags": [ - "self-hosted", - "project-management", - "management" - ] + "tags": ["self-hosted", "project-management", "management"] }, { "id": "go-whatsapp-web-multidevice", @@ -2803,12 +2213,7 @@ "website": "https://github.com/aldinokemal/go-whatsapp-web-multidevice", "docs": "https://github.com/aldinokemal/go-whatsapp-web-multidevice" }, - "tags": [ - "whatsapp", - "self-hosted", - "open-source", - "api" - ] + "tags": ["whatsapp", "self-hosted", "open-source", "api"] }, { "id": "gotenberg", @@ -2821,12 +2226,7 @@ "website": "https://gotenberg.dev", "docs": "https://gotenberg.dev/docs/getting-started/introduction" }, - "tags": [ - "api", - "backend", - "pdf", - "tools" - ] + "tags": ["api", "backend", "pdf", "tools"] }, { "id": "grafana", @@ -2839,9 +2239,7 @@ "website": "https://grafana.com/", "docs": "https://grafana.com/docs/" }, - "tags": [ - "monitoring" - ] + "tags": ["monitoring"] }, { "id": "grimoire", @@ -2854,11 +2252,7 @@ "website": "https://github.com/goniszewski/grimoire", "docs": "https://github.com/goniszewski/grimoire" }, - "tags": [ - "bookmarks", - "self-hosted", - "knowledge-management" - ] + "tags": ["bookmarks", "self-hosted", "knowledge-management"] }, { "id": "grist", @@ -2890,12 +2284,7 @@ "website": "https://habitica.com/", "docs": "https://habitica.fandom.com/wiki/Setting_up_Habitica_Locally" }, - "tags": [ - "productivity", - "gamification", - "habits", - "self-hosted" - ] + "tags": ["productivity", "gamification", "habits", "self-hosted"] }, { "id": "heyform", @@ -2908,13 +2297,7 @@ "website": "https://heyform.net", "docs": "https://docs.heyform.net" }, - "tags": [ - "form", - "builder", - "questionnaire", - "quiz", - "survey" - ] + "tags": ["form", "builder", "questionnaire", "quiz", "survey"] }, { "id": "hi-events", @@ -2927,11 +2310,7 @@ "website": "https://hi.events/", "docs": "https://hi.events/docs" }, - "tags": [ - "self-hosted", - "open-source", - "manager" - ] + "tags": ["self-hosted", "open-source", "manager"] }, { "id": "hoarder", @@ -2944,11 +2323,7 @@ "website": "https://hoarder.app/", "docs": "https://docs.hoarder.app/" }, - "tags": [ - "self-hosted", - "bookmarks", - "link-sharing" - ] + "tags": ["self-hosted", "bookmarks", "link-sharing"] }, { "id": "homarr", @@ -2961,10 +2336,7 @@ "docs": "https://homarr.dev/docs/getting-started/installation/docker", "website": "https://homarr.dev/" }, - "tags": [ - "dashboard", - "monitoring" - ] + "tags": ["dashboard", "monitoring"] }, { "id": "homeassistant", @@ -2996,13 +2368,7 @@ "website": "https://homebridge.io/", "docs": "https://github.com/homebridge/homebridge/wiki" }, - "tags": [ - "iot", - "homekit", - "internet-of-things", - "self-hosted", - "server" - ] + "tags": ["iot", "homekit", "internet-of-things", "self-hosted", "server"] }, { "id": "hoppscotch", @@ -3010,13 +2376,7 @@ "version": "latest", "description": "Hoppscotch Community Edition (All-in-One) with automatic database migrations. Includes backend, frontend, and admin under unified subpath routing.", "logo": "image.png", - "tags": [ - "api", - "testing", - "development", - "postman-alternative", - "graphql" - ], + "tags": ["api", "testing", "development", "postman-alternative", "graphql"], "links": { "website": "https://hoppscotch.io/", "github": "https://github.com/hoppscotch/hoppscotch", @@ -3035,13 +2395,7 @@ "docs": "https://github.com/danielbrendel/hortusfox-web#readme", "discord": "https://discord.gg/kc6xGmjzVS" }, - "tags": [ - "productivity", - "photo", - "task-management", - "php", - "mariadb" - ] + "tags": ["productivity", "photo", "task-management", "php", "mariadb"] }, { "id": "huly", @@ -3054,11 +2408,7 @@ "website": "https://huly.io/", "docs": "https://docs.huly.io/" }, - "tags": [ - "project-management", - "community", - "discussion" - ] + "tags": ["project-management", "community", "discussion"] }, { "id": "i18n-blog", @@ -3071,13 +2421,7 @@ "website": "https://qut.edu.kg/", "docs": "https://github.com/xuemian168/kuno#readme" }, - "tags": [ - "blog", - "i18n", - "nextjs", - "go", - "web" - ] + "tags": ["blog", "i18n", "nextjs", "go", "web"] }, { "id": "ihatemoney", @@ -3110,13 +2454,7 @@ "website": "https://imgproxy.net/", "docs": "https://docs.imgproxy.net/" }, - "tags": [ - "images", - "media", - "proxy", - "cdn", - "caching" - ] + "tags": ["images", "media", "proxy", "cdn", "caching"] }, { "id": "immich", @@ -3129,12 +2467,7 @@ "website": "https://immich.app/", "docs": "https://immich.app/docs/overview/introduction" }, - "tags": [ - "photos", - "videos", - "backup", - "media" - ] + "tags": ["photos", "videos", "backup", "media"] }, { "id": "infisical", @@ -3147,10 +2480,7 @@ "website": "https://infisical.com/", "docs": "https://infisical.com/docs/documentation/getting-started/introduction" }, - "tags": [ - "self-hosted", - "open-source" - ] + "tags": ["self-hosted", "open-source"] }, { "id": "influxdb", @@ -3163,12 +2493,7 @@ "website": "https://www.influxdata.com/", "docs": "https://docs.influxdata.com/influxdb/v2/" }, - "tags": [ - "self-hosted", - "open-source", - "storage", - "database" - ] + "tags": ["self-hosted", "open-source", "storage", "database"] }, { "id": "inngest", @@ -3181,13 +2506,7 @@ "website": "https://www.inngest.com/", "docs": "https://www.inngest.com/docs/self-hosting" }, - "tags": [ - "workflow", - "automation", - "self-hosted", - "serverless", - "events" - ] + "tags": ["workflow", "automation", "self-hosted", "serverless", "events"] }, { "id": "instantdb", @@ -3200,11 +2519,7 @@ "website": "https://github.com/instantdb/instant", "docs": "https://github.com/instantdb/instant" }, - "tags": [ - "database", - "real-time", - "self-hosted" - ] + "tags": ["database", "real-time", "self-hosted"] }, { "id": "invoiceshelf", @@ -3217,11 +2532,7 @@ "website": "https://invoiceshelf.com", "docs": "https://github.com/InvoiceShelf/invoiceshelf#readme" }, - "tags": [ - "invoice", - "business", - "finance" - ] + "tags": ["invoice", "business", "finance"] }, { "id": "ipfs", @@ -3234,12 +2545,7 @@ "website": "https://ipfs.tech/", "docs": "https://docs.ipfs.tech/" }, - "tags": [ - "storage", - "decentralized", - "p2p", - "self-hosted" - ] + "tags": ["storage", "decentralized", "p2p", "self-hosted"] }, { "id": "it-tools", @@ -3252,10 +2558,7 @@ "website": "https://it-tools.tech", "docs": "https://it-tools.tech/docs" }, - "tags": [ - "developer", - "tools" - ] + "tags": ["developer", "tools"] }, { "id": "java", @@ -3268,12 +2571,7 @@ "website": "https://java.com/", "docs": "https://docs.oracle.com/en/java/" }, - "tags": [ - "java", - "minecraft", - "runtime", - "pterodactyl" - ] + "tags": ["java", "minecraft", "runtime", "pterodactyl"] }, { "id": "jellyfin", @@ -3286,9 +2584,7 @@ "website": "https://jellyfin.org/", "docs": "https://jellyfin.org/docs/" }, - "tags": [ - "media system" - ] + "tags": ["media system"] }, { "id": "jenkins", @@ -3301,13 +2597,7 @@ "website": "https://www.jenkins.io/", "docs": "https://www.jenkins.io/doc/" }, - "tags": [ - "ci-cd", - "devops", - "automation", - "pipelines", - "open-source" - ] + "tags": ["ci-cd", "devops", "automation", "pipelines", "open-source"] }, { "id": "kaneo", @@ -3320,9 +2610,7 @@ "website": "https://kaneo.app/", "docs": "https://kaneo.app/docs/" }, - "tags": [ - "Task Tracking" - ] + "tags": ["Task Tracking"] }, { "id": "karakeep", @@ -3356,12 +2644,7 @@ "website": "https://kener.ing/", "docs": "https://kener.ing/docs/" }, - "tags": [ - "monitoring", - "status-page", - "alerting", - "self-hosted" - ] + "tags": ["monitoring", "status-page", "alerting", "self-hosted"] }, { "id": "kestra", @@ -3374,9 +2657,7 @@ "website": "https://kestra.io", "docs": "https://kestra.io/docs" }, - "tags": [ - "automation" - ] + "tags": ["automation"] }, { "id": "keycloak", @@ -3389,13 +2670,7 @@ "website": "https://www.keycloak.org/", "docs": "https://www.keycloak.org/documentation" }, - "tags": [ - "authentication", - "identity", - "sso", - "oauth2", - "openid-connect" - ] + "tags": ["authentication", "identity", "sso", "oauth2", "openid-connect"] }, { "id": "kimai", @@ -3408,11 +2683,7 @@ "website": "https://www.kimai.org", "docs": "https://www.kimai.org/documentation" }, - "tags": [ - "invoice", - "business", - "finance" - ] + "tags": ["invoice", "business", "finance"] }, { "id": "kitchenowl", @@ -3425,12 +2696,7 @@ "website": "https://kitchenowl.org/", "docs": "https://github.com/TomBursch/kitchenowl/wiki" }, - "tags": [ - "self-hosted", - "recipes", - "grocery", - "personal" - ] + "tags": ["self-hosted", "recipes", "grocery", "personal"] }, { "id": "kokoro-tts", @@ -3443,13 +2709,7 @@ "website": "https://github.com/remsky/Kokoro-FastAPI", "docs": "https://github.com/remsky/Kokoro-FastAPI#readme" }, - "tags": [ - "text-to-speech", - "ai", - "voice", - "fastapi", - "openai-compatible" - ] + "tags": ["text-to-speech", "ai", "voice", "fastapi", "openai-compatible"] }, { "id": "kokoro-web", @@ -3462,12 +2722,7 @@ "website": "https://github.com/eduardolat/kokoro-web", "docs": "https://github.com/eduardolat/kokoro-web#readme" }, - "tags": [ - "text-to-speech", - "ai", - "voice", - "web" - ] + "tags": ["text-to-speech", "ai", "voice", "web"] }, { "id": "komari-monitor", @@ -3480,10 +2735,7 @@ "website": "https://github.com/komari-monitor/komari", "docs": "https://github.com/komari-monitor/komari#readme" }, - "tags": [ - "monitoring", - "self-hosted" - ] + "tags": ["monitoring", "self-hosted"] }, { "id": "kutt", @@ -3496,10 +2748,7 @@ "website": "https://kutt.it", "docs": "https://github.com/thedevs-network/kutt#kuttit" }, - "tags": [ - "link-shortener", - "link-sharing" - ] + "tags": ["link-shortener", "link-sharing"] }, { "id": "langflow", @@ -3512,9 +2761,7 @@ "website": "https://www.langflow.org/", "docs": "https://docs.langflow.org/" }, - "tags": [ - "ai" - ] + "tags": ["ai"] }, { "id": "lavalink", @@ -3527,10 +2774,7 @@ "website": "https://lavalink.dev/", "docs": "https://lavalink.dev/getting-started/index.html" }, - "tags": [ - "voice", - "discord" - ] + "tags": ["voice", "discord"] }, { "id": "letterfeed", @@ -3543,11 +2787,7 @@ "website": "https://github.com/leonmuscoden/letterfeed", "docs": "https://github.com/leonmuscoden/letterfeed" }, - "tags": [ - "email", - "self-hosted", - "productivity" - ] + "tags": ["email", "self-hosted", "productivity"] }, { "id": "librechat", @@ -3560,14 +2800,7 @@ "website": "https://librechat.ai", "docs": "https://docs.librechat.ai" }, - "tags": [ - "ai", - "chatbot", - "llm", - "MIT-license", - "BYOK", - "generative-ai" - ] + "tags": ["ai", "chatbot", "llm", "MIT-license", "BYOK", "generative-ai"] }, { "id": "libredesk", @@ -3580,10 +2813,7 @@ "website": "https://libredesk.io", "docs": "https://docs.libredesk.io/introduction" }, - "tags": [ - "storage", - "object-storage" - ] + "tags": ["storage", "object-storage"] }, { "id": "libretranslate", @@ -3596,12 +2826,7 @@ "website": "https://libretranslate.com/", "docs": "https://docs.libretranslate.com/" }, - "tags": [ - "translation", - "api", - "nlp", - "language" - ] + "tags": ["translation", "api", "nlp", "language"] }, { "id": "linkding", @@ -3614,10 +2839,7 @@ "website": "https://linkding.link/", "docs": "https://github.com/sissbruecker/linkding/tree/master/docs" }, - "tags": [ - "bookmark-manager", - "self-hosted" - ] + "tags": ["bookmark-manager", "self-hosted"] }, { "id": "linkstack", @@ -3630,12 +2852,7 @@ "website": "https://linkstack.org/", "docs": "https://docs.linkstack.org/" }, - "tags": [ - "bio", - "personal", - "cms", - "php" - ] + "tags": ["bio", "personal", "cms", "php"] }, { "id": "linkwarden", @@ -3648,10 +2865,7 @@ "website": "https://linkwarden.app/", "docs": "https://docs.linkwarden.app/" }, - "tags": [ - "bookmarks", - "link-sharing" - ] + "tags": ["bookmarks", "link-sharing"] }, { "id": "listmonk", @@ -3664,11 +2878,7 @@ "website": "https://listmonk.app/", "docs": "https://listmonk.app/docs/" }, - "tags": [ - "email", - "newsletter", - "mailing-list" - ] + "tags": ["email", "newsletter", "mailing-list"] }, { "id": "litellm", @@ -3681,13 +2891,7 @@ "website": "https://docs.litellm.ai", "docs": "https://docs.litellm.ai/docs/proxy/quick_start" }, - "tags": [ - "ai", - "proxy", - "llm", - "openai-compatible", - "monitoring" - ] + "tags": ["ai", "proxy", "llm", "openai-compatible", "monitoring"] }, { "id": "livekit", @@ -3700,13 +2904,7 @@ "website": "https://livekit.io/", "docs": "https://docs.livekit.io/" }, - "tags": [ - "Video", - "Audio", - "Real-time", - "Streaming", - "Webrtc" - ] + "tags": ["Video", "Audio", "Real-time", "Streaming", "Webrtc"] }, { "id": "lobe-chat", @@ -3719,10 +2917,7 @@ "website": "https://chat-preview.lobehub.com/", "docs": "https://lobehub.com/docs/self-hosting/platform/docker-compose" }, - "tags": [ - "IA", - "chat" - ] + "tags": ["IA", "chat"] }, { "id": "lodestone", @@ -3735,11 +2930,7 @@ "website": "https://lodestone.cc", "docs": "https://github.com/Lodestone-Team/lodestone/wiki" }, - "tags": [ - "minecraft", - "hosting", - "server" - ] + "tags": ["minecraft", "hosting", "server"] }, { "id": "logto", @@ -3752,10 +2943,7 @@ "website": "https://logto.io/", "docs": "https://docs.logto.io/introduction" }, - "tags": [ - "identity", - "auth" - ] + "tags": ["identity", "auth"] }, { "id": "lowcoder", @@ -3768,11 +2956,7 @@ "website": "https://www.lowcoder.cloud/", "docs": "https://docs.lowcoder.cloud/lowcoder-documentation" }, - "tags": [ - "low-code", - "no-code", - "development" - ] + "tags": ["low-code", "no-code", "development"] }, { "id": "macos", @@ -3785,11 +2969,7 @@ "website": "", "docs": "https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-use-it" }, - "tags": [ - "self-hosted", - "open-source", - "os" - ] + "tags": ["self-hosted", "open-source", "os"] }, { "id": "mage-ai", @@ -3802,12 +2982,7 @@ "website": "https://mage.ai", "docs": "https://docs.mage.ai" }, - "tags": [ - "data", - "dbt", - "etl", - "pipelines" - ] + "tags": ["data", "dbt", "etl", "pipelines"] }, { "id": "mailpit", @@ -3820,10 +2995,7 @@ "website": "https://mailpit.axllent.org/", "docs": "https://mailpit.axllent.org/docs/" }, - "tags": [ - "email", - "smtp" - ] + "tags": ["email", "smtp"] }, { "id": "mattermost", @@ -3836,10 +3008,7 @@ "website": "https://mattermost.com/", "docs": "https://docs.mattermost.com/" }, - "tags": [ - "chat", - "self-hosted" - ] + "tags": ["chat", "self-hosted"] }, { "id": "mautic", @@ -3852,12 +3021,7 @@ "website": "https://www.mautic.org/", "docs": "https://docs.mautic.org/en" }, - "tags": [ - "marketing", - "automation", - "email", - "crm" - ] + "tags": ["marketing", "automation", "email", "crm"] }, { "id": "maybe", @@ -3870,10 +3034,7 @@ "website": "https://maybe.finance/", "docs": "https://docs.maybe.finance/" }, - "tags": [ - "finance", - "self-hosted" - ] + "tags": ["finance", "self-hosted"] }, { "id": "mazanoke", @@ -3886,13 +3047,7 @@ "website": "https://github.com/civilblur/mazanoke", "docs": "https://github.com/civilblur/mazanoke" }, - "tags": [ - "image-hosting", - "file-sharing", - "self-hosted", - "media", - "gallery" - ] + "tags": ["image-hosting", "file-sharing", "self-hosted", "media", "gallery"] }, { "id": "mcsmanager", @@ -3905,12 +3060,7 @@ "website": "https://github.com/MCSManager/MCSManager", "docs": "https://github.com/MCSManager/MCSManager#readme" }, - "tags": [ - "minecraft", - "game-server", - "management", - "dashboard" - ] + "tags": ["minecraft", "game-server", "management", "dashboard"] }, { "id": "mealie", @@ -3923,11 +3073,7 @@ "website": "https://mealie.io/", "docs": "https://docs.mealie.io/" }, - "tags": [ - "recipes", - "shopping-list", - "meal-planning" - ] + "tags": ["recipes", "shopping-list", "meal-planning"] }, { "id": "mediacms", @@ -3940,13 +3086,7 @@ "website": "https://mediacms.io/", "docs": "https://docs.mediacms.io/" }, - "tags": [ - "media", - "video", - "cms", - "streaming", - "self-hosted" - ] + "tags": ["media", "video", "cms", "streaming", "self-hosted"] }, { "id": "mediafetch", @@ -3959,11 +3099,7 @@ "website": "https://www.lukedunsmore.com/mediafetch", "docs": "https://docs.lukedunsmore.com/docs/self-hosted/mediafetch/" }, - "tags": [ - "utilities", - "media", - "downloader" - ] + "tags": ["utilities", "media", "downloader"] }, { "id": "meilisearch", @@ -3976,9 +3112,7 @@ "website": "https://www.meilisearch.com/", "docs": "https://docs.meilisearch.com/" }, - "tags": [ - "search" - ] + "tags": ["search"] }, { "id": "memos", @@ -3991,11 +3125,7 @@ "website": "https://www.usememos.com/", "docs": "https://www.usememos.com/docs" }, - "tags": [ - "productivity", - "notes", - "bookmarks" - ] + "tags": ["productivity", "notes", "bookmarks"] }, { "id": "metabase", @@ -4008,10 +3138,7 @@ "website": "https://www.metabase.com/", "docs": "https://www.metabase.com/docs/" }, - "tags": [ - "database", - "dashboard" - ] + "tags": ["database", "dashboard"] }, { "id": "metube", @@ -4024,11 +3151,7 @@ "website": "https://github.com/alexta69/metube", "docs": "https://github.com/alexta69/metube/wiki" }, - "tags": [ - "downloader", - "youtube", - "media" - ] + "tags": ["downloader", "youtube", "media"] }, { "id": "minepanel", @@ -4041,12 +3164,7 @@ "website": "https://minepanel.ketbome.lat", "docs": "https://minepanel.ketbome.lat" }, - "tags": [ - "gaming", - "minecraft", - "server-management", - "docker" - ] + "tags": ["gaming", "minecraft", "server-management", "docker"] }, { "id": "minio", @@ -4059,9 +3177,7 @@ "website": "https://minio.io/", "docs": "https://docs.minio.io/" }, - "tags": [ - "storage" - ] + "tags": ["storage"] }, { "id": "misaka-danmu-server", @@ -4074,11 +3190,7 @@ "website": "https://github.com/l429609201/misaka_danmu_server", "docs": "https://github.com/l429609201/misaka_danmu_server#readme" }, - "tags": [ - "streaming", - "danmaku", - "live" - ] + "tags": ["streaming", "danmaku", "live"] }, { "id": "mixpost", @@ -4091,11 +3203,7 @@ "website": "https://mixpost.app/", "docs": "https://docs.mixpost.app/" }, - "tags": [ - "social-media", - "management", - "scheduling" - ] + "tags": ["social-media", "management", "scheduling"] }, { "id": "moltbot", @@ -4129,11 +3237,7 @@ "website": "https://github.com/danvergara/morphos-server", "docs": "https://github.com/danvergara/morphos-server#readme" }, - "tags": [ - "server", - "orchestration", - "lightweight" - ] + "tags": ["server", "orchestration", "lightweight"] }, { "id": "movary", @@ -4174,13 +3278,7 @@ "website": "https://www.mulesoft.com/", "docs": "https://docs.mulesoft.com/" }, - "tags": [ - "integration", - "api", - "esb", - "enterprise", - "java" - ] + "tags": ["integration", "api", "esb", "enterprise", "java"] }, { "id": "mumble", @@ -4193,12 +3291,7 @@ "website": "https://www.mumble.info/", "docs": "https://wiki.mumble.info/" }, - "tags": [ - "voice-chat", - "communication", - "gaming", - "voip" - ] + "tags": ["voice-chat", "communication", "gaming", "voip"] }, { "id": "n8n", @@ -4211,9 +3304,7 @@ "website": "https://n8n.io/", "docs": "https://docs.n8n.io/" }, - "tags": [ - "automation" - ] + "tags": ["automation"] }, { "id": "n8n-runner-postgres-ollama", @@ -4226,14 +3317,7 @@ "website": "https://n8n.io/", "docs": "https://docs.n8n.io/" }, - "tags": [ - "ai", - "automation", - "workflow", - "low-code", - "postgres", - "ollama" - ] + "tags": ["ai", "automation", "workflow", "low-code", "postgres", "ollama"] }, { "id": "n8n-with-postgres", @@ -4246,12 +3330,7 @@ "website": "https://n8n.io/", "docs": "https://docs.n8n.io/" }, - "tags": [ - "automation", - "workflow", - "low-code", - "postgres" - ] + "tags": ["automation", "workflow", "low-code", "postgres"] }, { "id": "navidrome", @@ -4284,12 +3363,7 @@ "website": "https://github.com/m1k1o/neko", "docs": "https://github.com/m1k1o/neko" }, - "tags": [ - "browser", - "virtual", - "sharing", - "remote" - ] + "tags": ["browser", "virtual", "sharing", "remote"] }, { "id": "netdata", @@ -4321,12 +3395,7 @@ "website": "https://github.com/lissy93/networking", "docs": "https://github.com/lissy93/networking#readme" }, - "tags": [ - "networking", - "tools", - "utilities", - "web" - ] + "tags": ["networking", "tools", "utilities", "web"] }, { "id": "nextcloud-aio", @@ -4339,10 +3408,7 @@ "website": "https://nextcloud.com/", "docs": "https://docs.nextcloud.com/" }, - "tags": [ - "file-manager", - "sync" - ] + "tags": ["file-manager", "sync"] }, { "id": "nginx", @@ -4355,9 +3421,7 @@ "website": "https://nginx.org/", "docs": "https://nginx.org/en/docs/" }, - "tags": [ - "webserver" - ] + "tags": ["webserver"] }, { "id": "nocodb", @@ -4370,12 +3434,7 @@ "docs": "https://docs.nocodb.com/" }, "logo": "nocodb.png", - "tags": [ - "database", - "spreadsheet", - "low-code", - "nocode" - ] + "tags": ["database", "spreadsheet", "low-code", "nocode"] }, { "id": "notifuse", @@ -4388,12 +3447,7 @@ "website": "https://notifuse.com/", "docs": "https://docs.notifuse.com/" }, - "tags": [ - "newsletter", - "email", - "communication", - "notifications" - ] + "tags": ["newsletter", "email", "communication", "notifications"] }, { "id": "ntfy", @@ -4406,13 +3460,7 @@ "website": "https://ntfy.sh/", "docs": "https://docs.ntfy.sh/" }, - "tags": [ - "alerting", - "alerts", - "api", - "notifications", - "self-hosted" - ] + "tags": ["alerting", "alerts", "api", "notifications", "self-hosted"] }, { "id": "obsidian-livesync", @@ -4425,11 +3473,7 @@ "website": "https://obsidian.md/sync", "docs": "https://docs.couchdb.apache.org/" }, - "tags": [ - "database", - "sync", - "obsidian" - ] + "tags": ["database", "sync", "obsidian"] }, { "id": "odoo_17", @@ -4442,9 +3486,7 @@ "website": "https://odoo.com/", "docs": "https://www.odoo.com/documentation/" }, - "tags": [ - "erp" - ] + "tags": ["erp"] }, { "id": "odoo_18", @@ -4457,9 +3499,7 @@ "website": "https://odoo.com/", "docs": "https://www.odoo.com/documentation/" }, - "tags": [ - "erp" - ] + "tags": ["erp"] }, { "id": "odoo_19", @@ -4472,9 +3512,7 @@ "website": "https://odoo.com/", "docs": "https://www.odoo.com/documentation/" }, - "tags": [ - "erp" - ] + "tags": ["erp"] }, { "id": "ojs", @@ -4487,12 +3525,7 @@ "website": "https://pkp.sfu.ca/ojs/", "docs": "https://pkp.sfu.ca/ojs/docs/" }, - "tags": [ - "publishing", - "journal", - "research", - "academic" - ] + "tags": ["publishing", "journal", "research", "academic"] }, { "id": "omni-tools", @@ -4505,12 +3538,7 @@ "website": "https://github.com/iib0011/omni-tools", "docs": "https://github.com/iib0011/omni-tools" }, - "tags": [ - "tools", - "utilities", - "collection", - "self-hosted" - ] + "tags": ["tools", "utilities", "collection", "self-hosted"] }, { "id": "onedev", @@ -4523,10 +3551,7 @@ "website": "https://onedev.io/", "docs": "https://docs.onedev.io/" }, - "tags": [ - "self-hosted", - "development" - ] + "tags": ["self-hosted", "development"] }, { "id": "onetimesecret", @@ -4539,12 +3564,7 @@ "website": "https://onetimesecret.com", "docs": "https://docs.onetimesecret.com" }, - "tags": [ - "auth", - "password", - "secret", - "secure" - ] + "tags": ["auth", "password", "secret", "secure"] }, { "id": "ontime", @@ -4557,9 +3577,7 @@ "website": "https://getontime.no", "docs": "https://docs.getontime.no" }, - "tags": [ - "event" - ] + "tags": ["event"] }, { "id": "open-fiesta", @@ -4572,12 +3590,7 @@ "website": "https://github.com/jaainil/open-fiesta", "docs": "https://github.com/jaainil/open-fiesta#readme" }, - "tags": [ - "ai", - "chatbot", - "inference", - "frontend" - ] + "tags": ["ai", "chatbot", "inference", "frontend"] }, { "id": "open-webui", @@ -4590,9 +3603,7 @@ "website": "https://openwebui.com/", "docs": "https://docs.openwebui.com/" }, - "tags": [ - "chat" - ] + "tags": ["chat"] }, { "id": "open_notebook", @@ -4605,12 +3616,7 @@ "website": "https://www.open-notebook.ai/", "docs": "https://www.open-notebook.ai/get-started.html" }, - "tags": [ - "notebook", - "ai", - "database", - "surrealdb" - ] + "tags": ["notebook", "ai", "database", "surrealdb"] }, { "id": "openclaw", @@ -4644,12 +3650,7 @@ "website": "https://github.com/thomiceli/opengist", "docs": "https://github.com/thomiceli/opengist" }, - "tags": [ - "pastebin", - "code", - "snippets", - "self-hosted" - ] + "tags": ["pastebin", "code", "snippets", "self-hosted"] }, { "id": "openhands", @@ -4662,12 +3663,7 @@ "website": "https://github.com/all-hands-ai/OpenHands", "docs": "https://github.com/all-hands-ai/OpenHands" }, - "tags": [ - "ai", - "agents", - "llm", - "openai" - ] + "tags": ["ai", "agents", "llm", "openai"] }, { "id": "openinary", @@ -4699,9 +3695,7 @@ "website": "https://openpanel.dev/", "docs": "https://openpanel.dev/docs" }, - "tags": [ - "analytics" - ] + "tags": ["analytics"] }, { "id": "openresty-manager", @@ -4714,14 +3708,7 @@ "docs": "https://github.com/Safe3/openresty-manager" }, "logo": "logo.svg", - "tags": [ - "web", - "proxy", - "security", - "self-hosted", - "openresty", - "nginx" - ] + "tags": ["web", "proxy", "security", "self-hosted", "openresty", "nginx"] }, { "id": "openspeedtest", @@ -4734,13 +3721,7 @@ "website": "https://openspeedtest.com/", "docs": "https://github.com/openspeedtest/Speed-Test/wiki" }, - "tags": [ - "network", - "testing", - "performance", - "monitoring", - "bandwidth" - ] + "tags": ["network", "testing", "performance", "monitoring", "bandwidth"] }, { "id": "otterwiki", @@ -4753,12 +3734,7 @@ "website": "https://otterwiki.com/", "docs": "https://github.com/redimp/otterwiki/wiki" }, - "tags": [ - "wiki", - "documentation", - "knowledge-base", - "markdown" - ] + "tags": ["wiki", "documentation", "knowledge-base", "markdown"] }, { "id": "outline", @@ -4771,11 +3747,7 @@ "docs": "https://docs.getoutline.com/s/guide" }, "logo": "outline.png", - "tags": [ - "documentation", - "knowledge-base", - "self-hosted" - ] + "tags": ["documentation", "knowledge-base", "self-hosted"] }, { "id": "owncast", @@ -4808,11 +3780,7 @@ "website": "https://palmr.kyantech.com.br/", "docs": "https://palmr.kyantech.com.br/docs/3.0-beta" }, - "tags": [ - "file-sharing", - "self-hosted", - "open-source" - ] + "tags": ["file-sharing", "self-hosted", "open-source"] }, { "id": "parseable", @@ -4825,12 +3793,7 @@ "website": "https://www.parseable.com/", "docs": "https://www.parseable.com/docs" }, - "tags": [ - "observability", - "logging", - "analytics", - "monitoring" - ] + "tags": ["observability", "logging", "analytics", "monitoring"] }, { "id": "passbolt", @@ -4843,12 +3806,7 @@ "website": "https://www.passbolt.com/", "docs": "https://www.passbolt.com/docs/" }, - "tags": [ - "password-manager", - "security", - "team-collaboration", - "encryption" - ] + "tags": ["password-manager", "security", "team-collaboration", "encryption"] }, { "id": "pastefy", @@ -4861,12 +3819,7 @@ "website": "https://pastefy.app", "docs": "https://github.com/interaapps/pastefy/wiki" }, - "tags": [ - "pastebin", - "text-sharing", - "collaboration", - "oauth2" - ] + "tags": ["pastebin", "text-sharing", "collaboration", "oauth2"] }, { "id": "paymenter", @@ -4900,13 +3853,7 @@ "website": "https://peerdb.io", "docs": "https://docs.peerdb.io" }, - "tags": [ - "database", - "integration", - "sync", - "sql", - "workflow" - ] + "tags": ["database", "integration", "sync", "sql", "workflow"] }, { "id": "penpot", @@ -4919,10 +3866,7 @@ "website": "https://penpot.app/", "docs": "https://docs.penpot.app/" }, - "tags": [ - "design", - "collaboration" - ] + "tags": ["design", "collaboration"] }, { "id": "peppermint", @@ -4935,11 +3879,7 @@ "website": "https://peppermint.sh/", "docs": "https://docs.peppermint.sh/" }, - "tags": [ - "api", - "development", - "documentation" - ] + "tags": ["api", "development", "documentation"] }, { "id": "pgadmin", @@ -4952,11 +3892,7 @@ "docs": "https://www.pgadmin.org/docs/" }, "logo": "pgadmin.webp", - "tags": [ - "database", - "postgres", - "admin" - ] + "tags": ["database", "postgres", "admin"] }, { "id": "photoprism", @@ -4969,11 +3905,7 @@ "website": "https://www.photoprism.app/", "docs": "https://docs.photoprism.app/" }, - "tags": [ - "media", - "photos", - "self-hosted" - ] + "tags": ["media", "photos", "self-hosted"] }, { "id": "phpmyadmin", @@ -4986,9 +3918,7 @@ "website": "https://www.phpmyadmin.net/", "docs": "https://www.phpmyadmin.net/docs/" }, - "tags": [ - "database" - ] + "tags": ["database"] }, { "id": "picsur", @@ -5001,12 +3931,7 @@ "website": "https://github.com/CaramelFur/picsur", "docs": "https://github.com/CaramelFur/picsur#readme" }, - "tags": [ - "image-hosting", - "media", - "self-hosted", - "postgres" - ] + "tags": ["image-hosting", "media", "self-hosted", "postgres"] }, { "id": "pinchflat", @@ -5019,11 +3944,7 @@ "website": "https://github.com/kieraneglin/pinchflat", "docs": "https://github.com/kieraneglin/pinchflat" }, - "tags": [ - "youtube", - "downloader", - "media" - ] + "tags": ["youtube", "downloader", "media"] }, { "id": "plane", @@ -5036,9 +3957,7 @@ "website": "https://plane.so", "docs": "https://docs.plane.so/" }, - "tags": [ - "kanban" - ] + "tags": ["kanban"] }, { "id": "plark", @@ -5051,11 +3970,7 @@ "website": "https://plark.com", "docs": "https://plark.com/get-started" }, - "tags": [ - "cms", - "content-management", - "blog" - ] + "tags": ["cms", "content-management", "blog"] }, { "id": "plausible", @@ -5068,9 +3983,7 @@ "website": "https://plausible.io/", "docs": "https://plausible.io/docs" }, - "tags": [ - "analytics" - ] + "tags": ["analytics"] }, { "id": "plunk", @@ -5083,12 +3996,7 @@ "website": "https://www.useplunk.com/", "docs": "https://docs.useplunk.com" }, - "tags": [ - "email", - "newsletter", - "mailing-list", - "marketing" - ] + "tags": ["email", "newsletter", "mailing-list", "marketing"] }, { "id": "pocket-id", @@ -5101,10 +4009,7 @@ "website": "https://pocket-id.org/", "docs": "https://pocket-id.org/docs" }, - "tags": [ - "identity", - "auth" - ] + "tags": ["identity", "auth"] }, { "id": "pocketbase", @@ -5117,11 +4022,7 @@ "website": "https://pocketbase.io/", "docs": "https://pocketbase.io/docs/" }, - "tags": [ - "backend", - "database", - "api" - ] + "tags": ["backend", "database", "api"] }, { "id": "poke", @@ -5153,10 +4054,7 @@ "website": "https://www.portainer.io/", "docs": "https://docs.portainer.io/" }, - "tags": [ - "cloud", - "monitoring" - ] + "tags": ["cloud", "monitoring"] }, { "id": "poste.io", @@ -5192,13 +4090,7 @@ "website": "https://pgdog.dev", "docs": "https://docs.pgdog.dev" }, - "tags": [ - "database", - "postgresql", - "pooler", - "proxy", - "load-balancer" - ] + "tags": ["database", "postgresql", "pooler", "proxy", "load-balancer"] }, { "id": "postgresus", @@ -5211,11 +4103,7 @@ "website": "https://postgresus.com", "docs": "https://postgresus.com" }, - "tags": [ - "postgres", - "backup", - "s3" - ] + "tags": ["postgres", "backup", "s3"] }, { "id": "postiz", @@ -5228,11 +4116,7 @@ "website": "https://postiz.com", "docs": "https://docs.postiz.com" }, - "tags": [ - "cms", - "content-management", - "publishing" - ] + "tags": ["cms", "content-management", "publishing"] }, { "id": "pre0.22.5-supabase", @@ -5245,11 +4129,7 @@ "docs": "https://supabase.com/docs/guides/self-hosting" }, "logo": "supabase.svg", - "tags": [ - "database", - "firebase", - "postgres" - ], + "tags": ["database", "firebase", "postgres"], "dokploy_version": "<0.22.5" }, { @@ -5263,11 +4143,7 @@ "website": "https://prometheus.io/", "docs": "https://prometheus.io/docs/introduction/overview/" }, - "tags": [ - "monitoring", - "alerting", - "metrics" - ] + "tags": ["monitoring", "alerting", "metrics"] }, { "id": "pterodactyl", @@ -5280,11 +4156,7 @@ "website": "https://pterodactyl.io", "docs": "https://pterodactyl.io/project/introduction.html" }, - "tags": [ - "self-hosted", - "open-source", - "management" - ] + "tags": ["self-hosted", "open-source", "management"] }, { "id": "pulse", @@ -5297,12 +4169,7 @@ "website": "https://pulserelay.pro/", "docs": "https://github.com/rcourtman/Pulse/blob/main/docs/README.md" }, - "tags": [ - "monitoring", - "proxmox", - "docker", - "metrics" - ] + "tags": ["monitoring", "proxmox", "docker", "metrics"] }, { "id": "pyrodactyl", @@ -5315,11 +4182,7 @@ "website": "https://pyrodactyl.dev", "docs": "https://pyrodactyl.dev/docs" }, - "tags": [ - "self-hosted", - "open-source", - "management" - ] + "tags": ["self-hosted", "open-source", "management"] }, { "id": "qbittorrent", @@ -5332,11 +4195,7 @@ "website": "https://www.qbittorrent.org/", "docs": "https://github.com/qbittorrent/qBittorrent/wiki" }, - "tags": [ - "torrent", - "download", - "file-sharing" - ] + "tags": ["torrent", "download", "file-sharing"] }, { "id": "qbitwebui", @@ -5349,12 +4208,7 @@ "website": "https://github.com/Maciejonos/qbitwebui", "docs": "https://github.com/Maciejonos/qbitwebui#readme" }, - "tags": [ - "torrent", - "download", - "media", - "qbittorrent" - ] + "tags": ["torrent", "download", "media", "qbittorrent"] }, { "id": "qdrant", @@ -5367,11 +4221,7 @@ "website": "https://qdrant.tech/", "docs": "https://qdrant.tech/documentation/" }, - "tags": [ - "vector-db", - "database", - "search" - ] + "tags": ["vector-db", "database", "search"] }, { "id": "quant-ux", @@ -5384,13 +4234,7 @@ "website": "https://www.quant-ux.com/", "docs": "https://www.quant-ux.com/" }, - "tags": [ - "design", - "ux", - "prototyping", - "user-research", - "analytics" - ] + "tags": ["design", "ux", "prototyping", "user-research", "analytics"] }, { "id": "rabbitmq", @@ -5403,11 +4247,7 @@ "website": "https://www.rabbitmq.com/", "docs": "https://www.rabbitmq.com/documentation.html" }, - "tags": [ - "message-broker", - "queue", - "rabbitmq" - ] + "tags": ["message-broker", "queue", "rabbitmq"] }, { "id": "reactive-resume", @@ -5420,12 +4260,7 @@ "website": "https://rxresu.me/", "docs": "https://docs.rxresu.me/" }, - "tags": [ - "resume", - "cv", - "productivity", - "document" - ] + "tags": ["resume", "cv", "productivity", "document"] }, { "id": "registry", @@ -5438,11 +4273,7 @@ "docs": "https://distribution.github.io/distribution/" }, "logo": "registry.png", - "tags": [ - "registry", - "docker", - "self-hosted" - ] + "tags": ["registry", "docker", "self-hosted"] }, { "id": "rocketchat", @@ -5455,9 +4286,7 @@ "website": "https://rocket.chat/", "docs": "https://rocket.chat/docs/" }, - "tags": [ - "chat" - ] + "tags": ["chat"] }, { "id": "rote", @@ -5470,12 +4299,7 @@ "website": "https://rote.ink", "docs": "https://github.com/Rabithua/Rote/tree/main/doc/userguide" }, - "tags": [ - "notes", - "productivity", - "postgres", - "bun" - ] + "tags": ["notes", "productivity", "postgres", "bun"] }, { "id": "roundcube", @@ -5488,11 +4312,7 @@ "website": "https://roundcube.net/", "docs": "https://roundcube.net/about/" }, - "tags": [ - "self-hosted", - "email", - "webmail" - ] + "tags": ["self-hosted", "email", "webmail"] }, { "id": "rss-bridge", @@ -5505,12 +4325,7 @@ "website": "https://rss-bridge.github.io/rss-bridge/", "docs": "https://rss-bridge.github.io/rss-bridge/General/Project_goals.html" }, - "tags": [ - "rss", - "feeds", - "news", - "content" - ] + "tags": ["rss", "feeds", "news", "content"] }, { "id": "rsshub", @@ -5523,11 +4338,7 @@ "website": "https://rsshub.app/", "docs": "https://docs.rsshub.app/" }, - "tags": [ - "rss", - "api", - "self-hosted" - ] + "tags": ["rss", "api", "self-hosted"] }, { "id": "rustdesk", @@ -5540,11 +4351,7 @@ "website": "https://rustdesk.com/", "docs": "https://rustdesk.com/docs/" }, - "tags": [ - "remote-desktop", - "self-hosted", - "productivity" - ] + "tags": ["remote-desktop", "self-hosted", "productivity"] }, { "id": "rustfs", @@ -5557,12 +4364,7 @@ "website": "https://rustfs.com/", "docs": "https://docs.rustfs.com/" }, - "tags": [ - "storage", - "s3", - "object-storage", - "rust" - ] + "tags": ["storage", "s3", "object-storage", "rust"] }, { "id": "rutorrent", @@ -5575,12 +4377,7 @@ "website": "https://crazymax.dev/", "docs": "https://github.com/crazy-max/docker-rtorrent-rutorrent" }, - "tags": [ - "torrent", - "rtorrent", - "webui", - "downloader" - ] + "tags": ["torrent", "rtorrent", "webui", "downloader"] }, { "id": "rybbit", @@ -5593,9 +4390,7 @@ "website": "https://rybbit.io", "docs": "https://www.rybbit.io/docs" }, - "tags": [ - "analytics" - ] + "tags": ["analytics"] }, { "id": "ryot", @@ -5608,11 +4403,7 @@ "website": "https://ryot.io/", "docs": "https://docs.ryot.io/" }, - "tags": [ - "media", - "tracking", - "self-hosted" - ] + "tags": ["media", "tracking", "self-hosted"] }, { "id": "scrutiny", @@ -5625,10 +4416,7 @@ "website": "", "docs": "" }, - "tags": [ - "monitoring", - "NAS" - ] + "tags": ["monitoring", "NAS"] }, { "id": "scrypted", @@ -5641,12 +4429,7 @@ "website": "https://www.scrypted.app/", "docs": "https://docs.scrypted.app/" }, - "tags": [ - "home-automation", - "nvr", - "smart-home", - "surveillance" - ] + "tags": ["home-automation", "nvr", "smart-home", "surveillance"] }, { "id": "seafile", @@ -5659,11 +4442,7 @@ "website": "https://seafile.com", "docs": "https://manual.seafile.com/12.0" }, - "tags": [ - "file-manager", - "file-sharing", - "storage" - ] + "tags": ["file-manager", "file-sharing", "storage"] }, { "id": "searxng", @@ -5695,13 +4474,7 @@ "website": "https://seaweedfs.com/", "docs": "https://github.com/seaweedfs/seaweedfs/wiki" }, - "tags": [ - "storage", - "s3", - "distributed", - "object-storage", - "file-system" - ] + "tags": ["storage", "s3", "distributed", "object-storage", "file-system"] }, { "id": "shlink", @@ -5714,11 +4487,7 @@ "website": "https://shlink.io", "docs": "https://shlink.io/documentation" }, - "tags": [ - "sharing", - "shortener", - "url" - ] + "tags": ["sharing", "shortener", "url"] }, { "id": "signoz", @@ -5752,12 +4521,7 @@ "website": "https://silverbullet.md", "docs": "https://silverbullet.md/docs" }, - "tags": [ - "notes", - "knowledge-base", - "productivity", - "markdown" - ] + "tags": ["notes", "knowledge-base", "productivity", "markdown"] }, { "id": "slash", @@ -5770,11 +4534,7 @@ "website": "https://github.com/yourselfhosted/slash#readme", "docs": "https://github.com/yourselfhosted/slash/wiki" }, - "tags": [ - "bookmarks", - "link-shortener", - "self-hosted" - ] + "tags": ["bookmarks", "link-shortener", "self-hosted"] }, { "id": "snapp", @@ -5787,12 +4547,7 @@ "website": "https://github.com/UraniaDev/snapp", "docs": "https://github.com/UraniaDev/snapp" }, - "tags": [ - "screenshot", - "sharing", - "self-hosted", - "authentication" - ] + "tags": ["screenshot", "sharing", "self-hosted", "authentication"] }, { "id": "soketi", @@ -5805,9 +4560,7 @@ "website": "https://soketi.app/", "docs": "https://docs.soketi.app/" }, - "tags": [ - "chat" - ] + "tags": ["chat"] }, { "id": "spacedrive", @@ -5820,11 +4573,7 @@ "docs": "https://www.spacedrive.com/docs/product/getting-started/introduction" }, "logo": "spacedrive.png", - "tags": [ - "file-manager", - "vdfs", - "storage" - ] + "tags": ["file-manager", "vdfs", "storage"] }, { "id": "stack-auth", @@ -5837,11 +4586,7 @@ "website": "https://stack-auth.com/", "docs": "https://docs.stack-auth.com/next/overview" }, - "tags": [ - "authentication", - "auth", - "authorization" - ] + "tags": ["authentication", "auth", "authorization"] }, { "id": "stalwart", @@ -5875,10 +4620,7 @@ "website": "https://statping-ng.github.io/", "docs": "https://statping-ng.github.io/install.html" }, - "tags": [ - "monitoring", - "status-page" - ] + "tags": ["monitoring", "status-page"] }, { "id": "stirling", @@ -5891,10 +4633,7 @@ "website": "https://www.stirlingpdf.com/", "docs": "https://docs.stirlingpdf.com/" }, - "tags": [ - "pdf", - "tools" - ] + "tags": ["pdf", "tools"] }, { "id": "storyden", @@ -5908,12 +4647,7 @@ "docs": "https://www.storyden.org/docs/introduction", "website": "https://www.storyden.org/" }, - "tags": [ - "forum", - "discussion", - "community", - "open-source" - ] + "tags": ["forum", "discussion", "community", "open-source"] }, { "id": "strapi", @@ -5927,11 +4661,7 @@ "docs": "https://docs.strapi.io", "website": "https://strapi.io" }, - "tags": [ - "headless", - "cms", - "content-management" - ] + "tags": ["headless", "cms", "content-management"] }, { "id": "streamflow", @@ -5944,13 +4674,7 @@ "website": "https://github.com/bangtutorial/streamflow", "docs": "https://github.com/bangtutorial/streamflow#readme" }, - "tags": [ - "streaming", - "rtmp", - "video", - "live-streaming", - "media" - ] + "tags": ["streaming", "rtmp", "video", "live-streaming", "media"] }, { "id": "strapi", @@ -5964,11 +4688,7 @@ "docs": "https://docs.strapi.io", "website": "https://strapi.io" }, - "tags": [ - "headless", - "cms", - "content-management" - ] + "tags": ["headless", "cms", "content-management"] }, { "id": "supabase", @@ -5981,11 +4701,7 @@ "docs": "https://supabase.com/docs/guides/self-hosting" }, "logo": "supabase.svg", - "tags": [ - "database", - "firebase", - "postgres" - ], + "tags": ["database", "firebase", "postgres"], "dokploy_version": ">=0.22.5" }, { @@ -5999,13 +4715,7 @@ "website": "https://superset.apache.org", "docs": "https://superset.apache.org/docs/intro" }, - "tags": [ - "analytics", - "bi", - "dashboard", - "database", - "sql" - ] + "tags": ["analytics", "bi", "dashboard", "database", "sql"] }, { "id": "surrealdb", @@ -6018,11 +4728,7 @@ "website": "https://surrealdb.com", "docs": "https://surrealdb.com/docs/surrealdb" }, - "tags": [ - "database", - "sql", - "surrealdb" - ] + "tags": ["database", "sql", "surrealdb"] }, { "id": "syncthing", @@ -6035,11 +4741,7 @@ "website": "https://syncthing.net/", "docs": "https://docs.syncthing.net/" }, - "tags": [ - "file-sync", - "synchronization", - "backup" - ] + "tags": ["file-sync", "synchronization", "backup"] }, { "id": "tailscale-exitnode", @@ -6052,9 +4754,7 @@ "website": "https://tailscale.com/", "docs": "https://tailscale.com/kb/1408/quick-guide-exit-nodes" }, - "tags": [ - "network" - ] + "tags": ["network"] }, { "id": "teable", @@ -6067,12 +4767,7 @@ "website": "https://teable.io/", "docs": "https://help.teable.io/" }, - "tags": [ - "database", - "spreadsheet", - "low-code", - "nocode" - ] + "tags": ["database", "spreadsheet", "low-code", "nocode"] }, { "id": "tianji", @@ -6085,12 +4780,7 @@ "website": "https://tianji.dev/", "docs": "https://tianji.dev/docs/intro" }, - "tags": [ - "analytics", - "monitoring", - "web", - "uptime" - ] + "tags": ["analytics", "monitoring", "web", "uptime"] }, { "id": "tolgee", @@ -6103,12 +4793,7 @@ "website": "https://tolgee.io", "docs": "https://tolgee.io/platform" }, - "tags": [ - "self-hosted", - "i18n", - "localization", - "translations" - ] + "tags": ["self-hosted", "i18n", "localization", "translations"] }, { "id": "tooljet", @@ -6121,11 +4806,7 @@ "website": "https://tooljet.ai/", "docs": "https://docs.tooljet.ai/" }, - "tags": [ - "file-sync", - "file-sharing", - "self-hosted" - ] + "tags": ["file-sync", "file-sharing", "self-hosted"] }, { "id": "tor-browser", @@ -6138,12 +4819,7 @@ "website": "https://www.torproject.org/", "docs": "https://hub.docker.com/r/domistyle/tor-browser" }, - "tags": [ - "privacy", - "security", - "browser", - "tor" - ] + "tags": ["privacy", "security", "browser", "tor"] }, { "id": "trailbase", @@ -6156,11 +4832,7 @@ "website": "https://trailbase.io/", "docs": "https://trailbase.io/getting-started/install" }, - "tags": [ - "backend", - "database", - "api" - ] + "tags": ["backend", "database", "api"] }, { "id": "triggerdotdev", @@ -6173,10 +4845,7 @@ "website": "https://trigger.dev/", "docs": "https://trigger.dev/docs" }, - "tags": [ - "event-driven", - "applications" - ] + "tags": ["event-driven", "applications"] }, { "id": "trilium", @@ -6189,11 +4858,7 @@ "website": "https://github.com/zadam/trilium", "docs": "https://github.com/zadam/trilium/wiki/" }, - "tags": [ - "self-hosted", - "productivity", - "personal-use" - ] + "tags": ["self-hosted", "productivity", "personal-use"] }, { "id": "trilium-next", @@ -6206,11 +4871,7 @@ "website": "https://triliumnotes.org/", "docs": "https://docs.triliumnotes.org/" }, - "tags": [ - "self-hosted", - "productivity", - "personal-use" - ] + "tags": ["self-hosted", "productivity", "personal-use"] }, { "id": "trmnl-byos-laravel", @@ -6223,9 +4884,7 @@ "website": "https://docs.usetrmnl.com/go/diy/byos", "docs": "https://github.com/usetrmnl/byos_laravel/blob/main/README.md" }, - "tags": [ - "e-ink" - ] + "tags": ["e-ink"] }, { "id": "tuwunel", @@ -6238,12 +4897,7 @@ "website": "https://tuwunel.chat", "docs": "https://matrix-construct.github.io/tuwunel/" }, - "tags": [ - "matrix", - "chat", - "messaging", - "rust" - ] + "tags": ["matrix", "chat", "messaging", "rust"] }, { "id": "twenty", @@ -6256,11 +4910,7 @@ "website": "https://twenty.com", "docs": "https://docs.twenty.com" }, - "tags": [ - "crm", - "sales", - "business" - ] + "tags": ["crm", "sales", "business"] }, { "id": "typebot", @@ -6273,11 +4923,7 @@ "website": "https://typebot.io/", "docs": "https://docs.typebot.io/get-started/introduction" }, - "tags": [ - "chatbot", - "builder", - "open-source" - ] + "tags": ["chatbot", "builder", "open-source"] }, { "id": "typecho", @@ -6290,11 +4936,7 @@ "website": "https://typecho.org/", "docs": "http://docs.typecho.org" }, - "tags": [ - "blog", - "cms", - "php" - ] + "tags": ["blog", "cms", "php"] }, { "id": "typesense", @@ -6307,9 +4949,7 @@ "website": "https://typesense.org/", "docs": "https://typesense.org/docs" }, - "tags": [ - "search" - ] + "tags": ["search"] }, { "id": "umami", @@ -6322,9 +4962,7 @@ "website": "https://umami.is", "docs": "https://umami.is/docs" }, - "tags": [ - "analytics" - ] + "tags": ["analytics"] }, { "id": "unifi", @@ -6337,10 +4975,7 @@ "website": "https://www.ui.com/", "docs": "https://help.ui.com/hc/en-us/articles/360012282453-Self-Hosting-a-UniFi-Network-Server" }, - "tags": [ - "self-hosted", - "networking" - ] + "tags": ["self-hosted", "networking"] }, { "id": "unleash", @@ -6371,12 +5006,7 @@ "website": "https://github.com/seriousm4x/upsnap", "docs": "https://github.com/seriousm4x/upsnap#readme" }, - "tags": [ - "network", - "monitoring", - "dashboard", - "self-hosted" - ] + "tags": ["network", "monitoring", "dashboard", "self-hosted"] }, { "id": "uptime-kuma", @@ -6389,9 +5019,7 @@ "website": "https://uptime.kuma.pet/", "docs": "https://github.com/louislam/uptime-kuma/wiki" }, - "tags": [ - "monitoring" - ] + "tags": ["monitoring"] }, { "id": "usesend", @@ -6404,12 +5032,7 @@ "website": "https://usesend.com/", "docs": "https://docs.usesend.com/introduction" }, - "tags": [ - "e-mail", - "marketing", - "business", - "self-hosted" - ] + "tags": ["e-mail", "marketing", "business", "self-hosted"] }, { "id": "valkey", @@ -6422,12 +5045,7 @@ "website": "https://valkey.io/", "docs": "https://github.com/valkey-io/valkey" }, - "tags": [ - "database", - "cache", - "redis", - "in-memory" - ] + "tags": ["database", "cache", "redis", "in-memory"] }, { "id": "vault", @@ -6440,12 +5058,7 @@ "website": "https://www.vaultproject.io/", "docs": "https://developer.hashicorp.com/vault/docs" }, - "tags": [ - "security", - "secrets", - "devops", - "infrastructure" - ] + "tags": ["security", "secrets", "devops", "infrastructure"] }, { "id": "vaultwarden", @@ -6458,9 +5071,7 @@ "website": "", "docs": "https://github.com/dani-garcia/vaultwarden/wiki" }, - "tags": [ - "open-source" - ] + "tags": ["open-source"] }, { "id": "verdaccio", @@ -6473,11 +5084,7 @@ "website": "https://www.verdaccio.org/", "docs": "https://www.verdaccio.org/docs/what-is-verdaccio" }, - "tags": [ - "node.js", - "package-repository", - "npm" - ] + "tags": ["node.js", "package-repository", "npm"] }, { "id": "vikunja", @@ -6490,12 +5097,7 @@ "website": "https://vikunja.io/", "docs": "https://vikunja.io/docs/" }, - "tags": [ - "productivity", - "tasks", - "self-hosted", - "project-management" - ] + "tags": ["productivity", "tasks", "self-hosted", "project-management"] }, { "id": "wallos", @@ -6527,12 +5129,7 @@ "website": "https://wanderer.app", "docs": "https://github.com/flomp/wanderer#readme" }, - "tags": [ - "mapping", - "geolocation", - "search", - "self-hosted" - ] + "tags": ["mapping", "geolocation", "search", "self-hosted"] }, { "id": "web-check", @@ -6545,12 +5142,7 @@ "website": "https://github.com/lissy93/web-check", "docs": "https://github.com/lissy93/web-check" }, - "tags": [ - "website-analyzer", - "security", - "performance", - "seo" - ] + "tags": ["website-analyzer", "security", "performance", "seo"] }, { "id": "wg-easy", @@ -6563,11 +5155,7 @@ "website": "https://wg-easy.github.io/", "docs": "https://github.com/wg-easy/wg-easy/wiki" }, - "tags": [ - "vpn", - "wireguard", - "networking" - ] + "tags": ["vpn", "wireguard", "networking"] }, { "id": "wikijs", @@ -6580,11 +5168,7 @@ "website": "https://js.wiki/", "docs": "https://docs.requarks.io/" }, - "tags": [ - "knowledge-base", - "self-hosted", - "documentation" - ] + "tags": ["knowledge-base", "self-hosted", "documentation"] }, { "id": "windmill", @@ -6597,11 +5181,7 @@ "website": "https://www.windmill.dev/", "docs": "https://docs.windmill.dev/" }, - "tags": [ - "workflow", - "automation", - "development" - ] + "tags": ["workflow", "automation", "development"] }, { "id": "windows", @@ -6614,11 +5194,7 @@ "website": "", "docs": "https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-use-it" }, - "tags": [ - "self-hosted", - "open-source", - "os" - ] + "tags": ["self-hosted", "open-source", "os"] }, { "id": "wordpress", @@ -6631,9 +5207,7 @@ "website": "https://wordpress.org/", "docs": "https://wordpress.org/documentation/" }, - "tags": [ - "cms" - ] + "tags": ["cms"] }, { "id": "wuzapi", @@ -6646,12 +5220,7 @@ "website": "https://www.wuzapi.app/", "docs": "https://github.com/asternic/wuzapi/blob/main/README.md" }, - "tags": [ - "api", - "whatsapp", - "messaging", - "automation" - ] + "tags": ["api", "whatsapp", "messaging", "automation"] }, { "id": "xsshunter", @@ -6664,11 +5233,7 @@ "website": "https://github.com/rs-loves-bugs/xsshunter", "docs": "https://github.com/rs-loves-bugs/xsshunter#requirements" }, - "tags": [ - "pentest", - "xsshunter", - "bugbounty" - ] + "tags": ["pentest", "xsshunter", "bugbounty"] }, { "id": "yamtrack", @@ -6681,13 +5246,7 @@ "website": "https://github.com/fuzzygrim/yamtrack", "docs": "https://github.com/fuzzygrim/yamtrack" }, - "tags": [ - "media", - "anime", - "manga", - "tracker", - "redis" - ] + "tags": ["media", "anime", "manga", "tracker", "redis"] }, { "id": "yourls", @@ -6700,10 +5259,7 @@ "website": "https://yourls.org/", "docs": "https://yourls.org/#documentation" }, - "tags": [ - "url-shortener", - "php" - ] + "tags": ["url-shortener", "php"] }, { "id": "yt-dlp-webui", @@ -6716,12 +5272,7 @@ "website": "https://github.com/marcopiovanello/yt-dlp-web-ui", "docs": "https://github.com/marcopiovanello/yt-dlp-web-ui" }, - "tags": [ - "downloader", - "youtube", - "media", - "webui" - ] + "tags": ["downloader", "youtube", "media", "webui"] }, { "id": "zabbix", @@ -6734,12 +5285,7 @@ "website": "https://www.zabbix.com/", "docs": "https://www.zabbix.com/documentation/current/en/manual/installation/containers" }, - "tags": [ - "monitoring", - "infrastructure", - "observability", - "alerting" - ] + "tags": ["monitoring", "infrastructure", "observability", "alerting"] }, { "id": "zipline", @@ -6752,10 +5298,7 @@ "website": "https://zipline.diced.sh/", "docs": "https://zipline.diced.sh/docs/" }, - "tags": [ - "media system", - "storage" - ] + "tags": ["media system", "storage"] }, { "id": "zitadel",