From d7e5eb6dfd4f42772b520ffd6bc2d5051aa489c7 Mon Sep 17 00:00:00 2001 From: djknaeckebrot Date: Thu, 12 Dec 2024 16:46:58 +0100 Subject: [PATCH 01/13] feat: add unsend template --- apps/dokploy/public/templates/unsend.png | Bin 0 -> 13309 bytes apps/dokploy/templates/templates.ts | 2132 +++++++++-------- .../templates/unsend/docker-compose.yml | 82 + apps/dokploy/templates/unsend/index.ts | 44 + 4 files changed, 1199 insertions(+), 1059 deletions(-) create mode 100644 apps/dokploy/public/templates/unsend.png create mode 100644 apps/dokploy/templates/unsend/docker-compose.yml create mode 100644 apps/dokploy/templates/unsend/index.ts diff --git a/apps/dokploy/public/templates/unsend.png b/apps/dokploy/public/templates/unsend.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbe5e0ff65859415fce866954cb0968dde2227f GIT binary patch literal 13309 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 literal 0 HcmV?d00001 diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 86aa9ae8..e6ae2660 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -1,1065 +1,1079 @@ import type { TemplateData } from "./types/templates-data.type"; export const templates: TemplateData[] = [ - { - id: "supabase", - name: "SupaBase", - version: "1.24.07", - description: - "The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications. ", - links: { - github: "https://github.com/supabase/supabase", - website: "https://supabase.com/", - docs: "https://supabase.com/docs/guides/self-hosting", - }, - logo: "supabase.svg", - load: () => import("./supabase/index").then((m) => m.generate), - tags: ["database", "firebase", "postgres"], - }, - { - id: "pocketbase", - name: "Pocketbase", - version: "v0.22.12", - description: - "Pocketbase is a self-hosted alternative to Firebase that allows you to build and host your own backend services.", - links: { - github: "https://github.com/pocketbase/pocketbase", - website: "https://pocketbase.io/", - docs: "https://pocketbase.io/docs/", - }, - logo: "pocketbase.svg", - load: () => import("./pocketbase/index").then((m) => m.generate), - tags: ["database", "cms", "headless"], - }, - { - id: "plausible", - name: "Plausible", - version: "v2.1.0", - description: - "Plausible is a open source, self-hosted web analytics platform that lets you track website traffic and user behavior.", - logo: "plausible.svg", - links: { - github: "https://github.com/plausible/plausible", - website: "https://plausible.io/", - docs: "https://plausible.io/docs", - }, - tags: ["analytics"], - load: () => import("./plausible/index").then((m) => m.generate), - }, - { - id: "calcom", - name: "Calcom", - version: "v2.7.6", - description: - "Calcom is a open source alternative to Calendly that allows to create scheduling and booking services.", + { + id: "supabase", + name: "SupaBase", + version: "1.24.07", + description: + "The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications. ", + links: { + github: "https://github.com/supabase/supabase", + website: "https://supabase.com/", + docs: "https://supabase.com/docs/guides/self-hosting", + }, + logo: "supabase.svg", + load: () => import("./supabase/index").then((m) => m.generate), + tags: ["database", "firebase", "postgres"], + }, + { + id: "pocketbase", + name: "Pocketbase", + version: "v0.22.12", + description: + "Pocketbase is a self-hosted alternative to Firebase that allows you to build and host your own backend services.", + links: { + github: "https://github.com/pocketbase/pocketbase", + website: "https://pocketbase.io/", + docs: "https://pocketbase.io/docs/", + }, + logo: "pocketbase.svg", + load: () => import("./pocketbase/index").then((m) => m.generate), + tags: ["database", "cms", "headless"], + }, + { + id: "plausible", + name: "Plausible", + version: "v2.1.0", + description: + "Plausible is a open source, self-hosted web analytics platform that lets you track website traffic and user behavior.", + logo: "plausible.svg", + links: { + github: "https://github.com/plausible/plausible", + website: "https://plausible.io/", + docs: "https://plausible.io/docs", + }, + tags: ["analytics"], + load: () => import("./plausible/index").then((m) => m.generate), + }, + { + id: "calcom", + name: "Calcom", + version: "v2.7.6", + description: + "Calcom is a open source alternative to Calendly that allows to create scheduling and booking services.", - links: { - github: "https://github.com/calcom/cal.com", - website: "https://cal.com/", - docs: "https://cal.com/docs", - }, - logo: "calcom.jpg", - tags: ["scheduling", "booking"], - load: () => import("./calcom/index").then((m) => m.generate), - }, - { - id: "grafana", - name: "Grafana", - version: "9.5.20", - description: - "Grafana is an open source platform for data visualization and monitoring.", - logo: "grafana.svg", - links: { - github: "https://github.com/grafana/grafana", - website: "https://grafana.com/", - docs: "https://grafana.com/docs/", - }, - tags: ["monitoring"], - load: () => import("./grafana/index").then((m) => m.generate), - }, - { - id: "directus", - name: "Directus", - version: "11.0.2", - description: - "Directus is an open source headless CMS that provides an API-first solution for building custom backends.", - logo: "directus.jpg", - links: { - github: "https://github.com/directus/directus", - website: "https://directus.io/", - docs: "https://docs.directus.io/", - }, - tags: ["cms"], - load: () => import("./directus/index").then((m) => m.generate), - }, - { - id: "baserow", - name: "Baserow", - version: "1.25.2", - description: - "Baserow is an open source database management tool that allows you to create and manage databases.", - logo: "baserow.webp", - links: { - github: "https://github.com/Baserow/baserow", - website: "https://baserow.io/", - docs: "https://baserow.io/docs/index", - }, - tags: ["database"], - load: () => import("./baserow/index").then((m) => m.generate), - }, - { - id: "budibase", - name: "Budibase", - version: "3.2.25", - description: - "Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.", - logo: "budibase.svg", - links: { - github: "https://github.com/Budibase/budibase", - website: "https://budibase.com/", - docs: "https://docs.budibase.com/docs/", - }, - tags: ["database", "low-code", "nocode", "applications"], - load: () => import("./budibase/index").then((m) => m.generate), - }, - { - id: "ghost", - name: "Ghost", - version: "5.0.0", - description: - "Ghost is a free and open source, professional publishing platform built on a modern Node.js technology stack.", - logo: "ghost.jpeg", - links: { - github: "https://github.com/TryGhost/Ghost", - website: "https://ghost.org/", - docs: "https://ghost.org/docs/", - }, - tags: ["cms"], - load: () => import("./ghost/index").then((m) => m.generate), - }, - { - id: "uptime-kuma", - name: "Uptime Kuma", - version: "1.23.15", - description: - "Uptime Kuma is a free and open source monitoring tool that allows you to monitor your websites and applications.", - logo: "uptime-kuma.png", - links: { - github: "https://github.com/louislam/uptime-kuma", - website: "https://uptime.kuma.pet/", - docs: "https://github.com/louislam/uptime-kuma/wiki", - }, - tags: ["monitoring"], - load: () => import("./uptime-kuma/index").then((m) => m.generate), - }, - { - id: "n8n", - name: "n8n", - version: "1.70.3", - description: - "n8n is an open source low-code platform for automating workflows and integrations.", - logo: "n8n.png", - links: { - github: "https://github.com/n8n-io/n8n", - website: "https://n8n.io/", - docs: "https://docs.n8n.io/", - }, - tags: ["automation"], - load: () => import("./n8n/index").then((m) => m.generate), - }, - { - id: "wordpress", - name: "Wordpress", - version: "5.8.3", - description: - "Wordpress is a free and open source content management system (CMS) for publishing and managing websites.", - logo: "wordpress.png", - links: { - github: "https://github.com/WordPress/WordPress", - website: "https://wordpress.org/", - docs: "https://wordpress.org/documentation/", - }, - tags: ["cms"], - load: () => import("./wordpress/index").then((m) => m.generate), - }, - { - id: "odoo", - name: "Odoo", - version: "16.0", - description: - "Odoo is a free and open source business management software that helps you manage your company's operations.", - logo: "odoo.png", - links: { - github: "https://github.com/odoo/odoo", - website: "https://odoo.com/", - docs: "https://www.odoo.com/documentation/", - }, - tags: ["cms"], - load: () => import("./odoo/index").then((m) => m.generate), - }, - { - id: "appsmith", - name: "Appsmith", - version: "v1.29", - description: - "Appsmith is a free and open source platform for building internal tools and applications.", - logo: "appsmith.png", - links: { - github: "https://github.com/appsmithorg/appsmith", - website: "https://appsmith.com/", - docs: "https://docs.appsmith.com/", - }, - tags: ["cms"], - load: () => import("./appsmith/index").then((m) => m.generate), - }, - { - id: "excalidraw", - name: "Excalidraw", - version: "latest", - description: - "Excalidraw is a free and open source online diagramming tool that lets you easily create and share beautiful diagrams.", - logo: "excalidraw.jpg", - links: { - github: "https://github.com/excalidraw/excalidraw", - website: "https://excalidraw.com/", - docs: "https://docs.excalidraw.com/", - }, - tags: ["drawing"], - load: () => import("./excalidraw/index").then((m) => m.generate), - }, - { - id: "documenso", - name: "Documenso", - version: "v1.5.6", - description: - "Documenso is the open source alternative to DocuSign for signing documents digitally", - links: { - github: "https://github.com/documenso/documenso", - website: "https://documenso.com/", - docs: "https://documenso.com/docs", - }, - logo: "documenso.png", - tags: ["document-signing"], - load: () => import("./documenso/index").then((m) => m.generate), - }, - { - id: "nocodb", - name: "NocoDB", - version: "0.257.2", - description: - "NocoDB is an opensource Airtable alternative that turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart spreadsheet.", + links: { + github: "https://github.com/calcom/cal.com", + website: "https://cal.com/", + docs: "https://cal.com/docs", + }, + logo: "calcom.jpg", + tags: ["scheduling", "booking"], + load: () => import("./calcom/index").then((m) => m.generate), + }, + { + id: "grafana", + name: "Grafana", + version: "9.5.20", + description: + "Grafana is an open source platform for data visualization and monitoring.", + logo: "grafana.svg", + links: { + github: "https://github.com/grafana/grafana", + website: "https://grafana.com/", + docs: "https://grafana.com/docs/", + }, + tags: ["monitoring"], + load: () => import("./grafana/index").then((m) => m.generate), + }, + { + id: "directus", + name: "Directus", + version: "11.0.2", + description: + "Directus is an open source headless CMS that provides an API-first solution for building custom backends.", + logo: "directus.jpg", + links: { + github: "https://github.com/directus/directus", + website: "https://directus.io/", + docs: "https://docs.directus.io/", + }, + tags: ["cms"], + load: () => import("./directus/index").then((m) => m.generate), + }, + { + id: "baserow", + name: "Baserow", + version: "1.25.2", + description: + "Baserow is an open source database management tool that allows you to create and manage databases.", + logo: "baserow.webp", + links: { + github: "https://github.com/Baserow/baserow", + website: "https://baserow.io/", + docs: "https://baserow.io/docs/index", + }, + tags: ["database"], + load: () => import("./baserow/index").then((m) => m.generate), + }, + { + id: "budibase", + name: "Budibase", + version: "3.2.25", + description: + "Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.", + logo: "budibase.svg", + links: { + github: "https://github.com/Budibase/budibase", + website: "https://budibase.com/", + docs: "https://docs.budibase.com/docs/", + }, + tags: ["database", "low-code", "nocode", "applications"], + load: () => import("./budibase/index").then((m) => m.generate), + }, + { + id: "ghost", + name: "Ghost", + version: "5.0.0", + description: + "Ghost is a free and open source, professional publishing platform built on a modern Node.js technology stack.", + logo: "ghost.jpeg", + links: { + github: "https://github.com/TryGhost/Ghost", + website: "https://ghost.org/", + docs: "https://ghost.org/docs/", + }, + tags: ["cms"], + load: () => import("./ghost/index").then((m) => m.generate), + }, + { + id: "uptime-kuma", + name: "Uptime Kuma", + version: "1.23.15", + description: + "Uptime Kuma is a free and open source monitoring tool that allows you to monitor your websites and applications.", + logo: "uptime-kuma.png", + links: { + github: "https://github.com/louislam/uptime-kuma", + website: "https://uptime.kuma.pet/", + docs: "https://github.com/louislam/uptime-kuma/wiki", + }, + tags: ["monitoring"], + load: () => import("./uptime-kuma/index").then((m) => m.generate), + }, + { + id: "n8n", + name: "n8n", + version: "1.70.3", + description: + "n8n is an open source low-code platform for automating workflows and integrations.", + logo: "n8n.png", + links: { + github: "https://github.com/n8n-io/n8n", + website: "https://n8n.io/", + docs: "https://docs.n8n.io/", + }, + tags: ["automation"], + load: () => import("./n8n/index").then((m) => m.generate), + }, + { + id: "wordpress", + name: "Wordpress", + version: "5.8.3", + description: + "Wordpress is a free and open source content management system (CMS) for publishing and managing websites.", + logo: "wordpress.png", + links: { + github: "https://github.com/WordPress/WordPress", + website: "https://wordpress.org/", + docs: "https://wordpress.org/documentation/", + }, + tags: ["cms"], + load: () => import("./wordpress/index").then((m) => m.generate), + }, + { + id: "odoo", + name: "Odoo", + version: "16.0", + description: + "Odoo is a free and open source business management software that helps you manage your company's operations.", + logo: "odoo.png", + links: { + github: "https://github.com/odoo/odoo", + website: "https://odoo.com/", + docs: "https://www.odoo.com/documentation/", + }, + tags: ["cms"], + load: () => import("./odoo/index").then((m) => m.generate), + }, + { + id: "appsmith", + name: "Appsmith", + version: "v1.29", + description: + "Appsmith is a free and open source platform for building internal tools and applications.", + logo: "appsmith.png", + links: { + github: "https://github.com/appsmithorg/appsmith", + website: "https://appsmith.com/", + docs: "https://docs.appsmith.com/", + }, + tags: ["cms"], + load: () => import("./appsmith/index").then((m) => m.generate), + }, + { + id: "excalidraw", + name: "Excalidraw", + version: "latest", + description: + "Excalidraw is a free and open source online diagramming tool that lets you easily create and share beautiful diagrams.", + logo: "excalidraw.jpg", + links: { + github: "https://github.com/excalidraw/excalidraw", + website: "https://excalidraw.com/", + docs: "https://docs.excalidraw.com/", + }, + tags: ["drawing"], + load: () => import("./excalidraw/index").then((m) => m.generate), + }, + { + id: "documenso", + name: "Documenso", + version: "v1.5.6", + description: + "Documenso is the open source alternative to DocuSign for signing documents digitally", + links: { + github: "https://github.com/documenso/documenso", + website: "https://documenso.com/", + docs: "https://documenso.com/docs", + }, + logo: "documenso.png", + tags: ["document-signing"], + load: () => import("./documenso/index").then((m) => m.generate), + }, + { + id: "nocodb", + name: "NocoDB", + version: "0.257.2", + description: + "NocoDB is an opensource Airtable alternative that turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart spreadsheet.", - links: { - github: "https://github.com/nocodb/nocodb", - website: "https://nocodb.com/", - docs: "https://docs.nocodb.com/", - }, - logo: "nocodb.png", - tags: ["database", "spreadsheet", "low-code", "nocode"], - load: () => import("./nocodb/index").then((m) => m.generate), - }, - { - id: "meilisearch", - name: "Meilisearch", - version: "v1.8.3", - description: - "Meilisearch is a free and open-source search engine that allows you to easily add search functionality to your web applications.", - logo: "meilisearch.png", - links: { - github: "https://github.com/meilisearch/meilisearch", - website: "https://www.meilisearch.com/", - docs: "https://docs.meilisearch.com/", - }, - tags: ["search"], - load: () => import("./meilisearch/index").then((m) => m.generate), - }, - { - id: "phpmyadmin", - name: "Phpmyadmin", - version: "5.2.1", - description: - "Phpmyadmin is a free and open-source web interface for MySQL and MariaDB that allows you to manage your databases.", - logo: "phpmyadmin.png", - links: { - github: "https://github.com/phpmyadmin/phpmyadmin", - website: "https://www.phpmyadmin.net/", - docs: "https://www.phpmyadmin.net/docs/", - }, - tags: ["database"], - load: () => import("./phpmyadmin/index").then((m) => m.generate), - }, - { - id: "rocketchat", - name: "Rocketchat", - version: "6.9.2", - description: - "Rocket.Chat is a free and open-source web chat platform that allows you to build and manage your own chat applications.", - logo: "rocketchat.png", - links: { - github: "https://github.com/RocketChat/Rocket.Chat", - website: "https://rocket.chat/", - docs: "https://rocket.chat/docs/", - }, - tags: ["chat"], - load: () => import("./rocketchat/index").then((m) => m.generate), - }, - { - id: "minio", - name: "Minio", - description: - "Minio is an open source object storage server compatible with Amazon S3 cloud storage service.", - logo: "minio.png", - version: "latest", - links: { - github: "https://github.com/minio/minio", - website: "https://minio.io/", - docs: "https://docs.minio.io/", - }, - tags: ["storage"], - load: () => import("./minio/index").then((m) => m.generate), - }, - { - id: "metabase", - name: "Metabase", - version: "v0.50.8", - description: - "Metabase is an open source business intelligence tool that allows you to ask questions and visualize data.", - logo: "metabase.png", - links: { - github: "https://github.com/metabase/metabase", - website: "https://www.metabase.com/", - docs: "https://www.metabase.com/docs/", - }, - tags: ["database", "dashboard"], - load: () => import("./metabase/index").then((m) => m.generate), - }, - { - id: "glitchtip", - name: "Glitchtip", - version: "v4.0", - description: "Glitchtip is simple, open source error tracking", - logo: "glitchtip.png", - links: { - github: "https://gitlab.com/glitchtip/", - website: "https://glitchtip.com/", - docs: "https://glitchtip.com/documentation", - }, - tags: ["hosting"], - load: () => import("./glitchtip/index").then((m) => m.generate), - }, - { - id: "open-webui", - name: "Open WebUI", - version: "v0.3.7", - description: - "Open WebUI is a free and open source chatgpt alternative. Open WebUI is an extensible, feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline. It supports various LLM runners, including Ollama and OpenAI-compatible APIs. The template include ollama and webui services.", - logo: "open-webui.png", - links: { - github: "https://github.com/open-webui/open-webui", - website: "https://openwebui.com/", - docs: "https://docs.openwebui.com/", - }, - tags: ["chat"], - load: () => import("./open-webui/index").then((m) => m.generate), - }, - { - id: "listmonk", - name: "Listmonk", - version: "v3.0.0", - description: - "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.", - logo: "listmonk.png", - links: { - github: "https://github.com/knadh/listmonk", - website: "https://listmonk.app/", - docs: "https://listmonk.app/docs/", - }, - tags: ["email", "newsletter", "mailing-list"], - load: () => import("./listmonk/index").then((m) => m.generate), - }, - { - id: "doublezero", - name: "Double Zero", - version: "v0.2.1", - description: - "00 is a self hostable SES dashboard for sending and monitoring emails with AWS", - logo: "doublezero.svg", - links: { - github: "https://github.com/technomancy-dev/00", - website: "https://www.double-zero.cloud/", - docs: "https://github.com/technomancy-dev/00", - }, - tags: ["email"], - load: () => import("./doublezero/index").then((m) => m.generate), - }, - { - id: "umami", - name: "Umami", - version: "v2.14.0", - description: - "Umami is a simple, fast, privacy-focused alternative to Google Analytics.", - logo: "umami.png", - links: { - github: "https://github.com/umami-software/umami", - website: "https://umami.is", - docs: "https://umami.is/docs", - }, - tags: ["analytics"], - load: () => import("./umami/index").then((m) => m.generate), - }, - { - id: "jellyfin", - name: "jellyfin", - version: "v10.9.7", - description: - "Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. ", - logo: "jellyfin.svg", - links: { - github: "https://github.com/jellyfin/jellyfin", - website: "https://jellyfin.org/", - docs: "https://jellyfin.org/docs/", - }, - tags: ["media system"], - load: () => import("./jellyfin/index").then((m) => m.generate), - }, - { - id: "teable", - name: "teable", - version: "v1.3.1-alpha-build.460", - description: - "Teable is a Super fast, Real-time, Professional, Developer friendly, No-code database built on Postgres. It uses a simple, spreadsheet-like interface to create complex enterprise-level database applications. Unlock efficient app development with no-code, free from the hurdles of data security and scalability.", - logo: "teable.png", - links: { - github: "https://github.com/teableio/teable", - website: "https://teable.io/", - docs: "https://help.teable.io/", - }, - tags: ["database", "spreadsheet", "low-code", "nocode"], - load: () => import("./teable/index").then((m) => m.generate), - }, - { - id: "zipline", - name: "Zipline", - version: "v3.7.9", - description: - "A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!", - logo: "zipline.png", - links: { - github: "https://github.com/diced/zipline", - website: "https://zipline.diced.sh/", - docs: "https://zipline.diced.sh/docs/", - }, - tags: ["media system", "storage"], - load: () => import("./zipline/index").then((m) => m.generate), - }, - { - id: "soketi", - name: "Soketi", - version: "v1.6.1-16", - description: - "Soketi is your simple, fast, and resilient open-source WebSockets server.", - logo: "soketi.png", - links: { - github: "https://github.com/soketi/soketi", - website: "https://soketi.app/", - docs: "https://docs.soketi.app/", - }, - tags: ["chat"], - load: () => import("./soketi/index").then((m) => m.generate), - }, - { - id: "aptabase", - name: "Aptabase", - version: "v1.0.0", - description: - "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", - logo: "aptabase.svg", - links: { - github: "https://github.com/aptabase/aptabase", - website: "https://aptabase.com/", - docs: "https://github.com/aptabase/aptabase/blob/main/README.md", - }, - tags: ["analytics", "self-hosted"], - load: () => import("./aptabase/index").then((m) => m.generate), - }, - { - id: "typebot", - name: "Typebot", - version: "2.27.0", - description: "Typebot is an open-source chatbot builder platform.", - logo: "typebot.svg", - links: { - github: "https://github.com/baptisteArno/typebot.io", - website: "https://typebot.io/", - docs: "https://docs.typebot.io/get-started/introduction", - }, - tags: ["chatbot", "builder", "open-source"], - load: () => import("./typebot/index").then((m) => m.generate), - }, - { - id: "gitea", - name: "Gitea", - version: "1.22.3", - description: - "Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD.", - logo: "gitea.png", - links: { - github: "https://github.com/go-gitea/gitea.git", - website: "https://gitea.com/", - docs: "https://docs.gitea.com/installation/install-with-docker", - }, - tags: ["self-hosted", "storage"], - load: () => import("./gitea/index").then((m) => m.generate), - }, - { - id: "roundcube", - name: "Roundcube", - version: "1.6.9", - description: - "Free and open source webmail software for the masses, written in PHP.", - logo: "roundcube.svg", - links: { - github: "https://github.com/roundcube/roundcubemail", - website: "https://roundcube.net/", - docs: "https://roundcube.net/about/", - }, - tags: ["self-hosted", "email", "webmail"], - load: () => import("./roundcube/index").then((m) => m.generate), - }, - { - id: "filebrowser", - name: "File Browser", - version: "2.31.2", - description: - "Filebrowser is a standalone file manager for uploading, deleting, previewing, renaming, and editing files, with support for multiple users, each with their own directory.", - logo: "filebrowser.svg", - links: { - github: "https://github.com/filebrowser/filebrowser", - website: "https://filebrowser.org/", - docs: "https://filebrowser.org/", - }, - tags: ["file", "manager"], - load: () => import("./filebrowser/index").then((m) => m.generate), - }, - { - id: "tolgee", - name: "Tolgee", - version: "v3.80.4", - description: - "Developer & translator friendly web-based localization platform", - logo: "tolgee.svg", - links: { - github: "https://github.com/tolgee/tolgee-platform", - website: "https://tolgee.io", - docs: "https://tolgee.io/platform", - }, - tags: ["self-hosted", "i18n", "localization", "translations"], - load: () => import("./tolgee/index").then((m) => m.generate), - }, - { - id: "portainer", - name: "Portainer", - version: "2.21.4", - description: - "Portainer is a container management tool for deploying, troubleshooting, and securing applications across cloud, data centers, and IoT.", - logo: "portainer.svg", - links: { - github: "https://github.com/portainer/portainer", - website: "https://www.portainer.io/", - docs: "https://docs.portainer.io/", - }, - tags: ["cloud", "monitoring"], - load: () => import("./portainer/index").then((m) => m.generate), - }, - { - id: "influxdb", - name: "InfluxDB", - version: "2.7.10", - description: - "InfluxDB 2.7 is the platform purpose-built to collect, store, process and visualize time series data.", - logo: "influxdb.png", - links: { - github: "https://github.com/influxdata/influxdb", - website: "https://www.influxdata.com/", - docs: "https://docs.influxdata.com/influxdb/v2/", - }, - tags: ["self-hosted", "open-source", "storage", "database"], - load: () => import("./influxdb/index").then((m) => m.generate), - }, - { - id: "infisical", - name: "Infisical", - version: "0.90.1", - description: - "All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.", - logo: "infisical.jpg", - links: { - github: "https://github.com/Infisical/infisical", - website: "https://infisical.com/", - docs: "https://infisical.com/docs/documentation/getting-started/introduction", - }, - tags: ["self-hosted", "open-source"], - load: () => import("./infisical/index").then((m) => m.generate), - }, - { - id: "docmost", - name: "Docmost", - version: "0.4.1", - description: - "Docmost, is an open-source collaborative wiki and documentation software.", - logo: "docmost.png", - links: { - github: "https://github.com/docmost/docmost", - website: "https://docmost.com/", - docs: "https://docmost.com/docs/", - }, - tags: ["self-hosted", "open-source", "manager"], - load: () => import("./docmost/index").then((m) => m.generate), - }, - { - id: "vaultwarden", - name: "Vaultwarden", - version: "1.32.3", - description: - "Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs", - logo: "vaultwarden.svg", - links: { - github: "https://github.com/dani-garcia/vaultwarden", - website: "", - docs: "https://github.com/dani-garcia/vaultwarden/wiki", - }, - tags: ["open-source"], - load: () => import("./vaultwarden/index").then((m) => m.generate), - }, - { - id: "hi-events", - name: "Hi.events", - version: "0.8.0-beta.1", - description: - "Hi.Events is a self-hosted event management and ticket selling platform that allows you to create, manage and promote events easily.", - logo: "hi-events.svg", - links: { - github: "https://github.com/HiEventsDev/hi.events", - website: "https://hi.events/", - docs: "https://hi.events/docs", - }, - tags: ["self-hosted", "open-source", "manager"], - load: () => import("./hi-events/index").then((m) => m.generate), - }, - { - id: "windows", - name: "Windows (dockerized)", - version: "4.00", - description: "Windows inside a Docker container.", - logo: "windows.png", - links: { - github: "https://github.com/dockur/windows", - website: "", - docs: "https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-use-it", - }, - tags: ["self-hosted", "open-source", "os"], - load: () => import("./windows/index").then((m) => m.generate), - }, - { - id: "macos", - name: "MacOS (dockerized)", - version: "1.14", - description: "MacOS inside a Docker container.", - logo: "macos.png", - links: { - github: "https://github.com/dockur/macos", - website: "", - docs: "https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-use-it", - }, - tags: ["self-hosted", "open-source", "os"], - load: () => import("./macos/index").then((m) => m.generate), - }, - { - id: "coder", - name: "Coder", - version: "2.15.3", - description: - "Coder is an open-source cloud development environment (CDE) that you host in your cloud or on-premises.", - logo: "coder.svg", - links: { - github: "https://github.com/coder/coder", - website: "https://coder.com/", - docs: "https://coder.com/docs", - }, - tags: ["self-hosted", "open-source", "builder"], - load: () => import("./coder/index").then((m) => m.generate), - }, - { - id: "stirling", - name: "Stirling PDF", - version: "0.30.1", - description: "A locally hosted one-stop shop for all your PDF needs", - logo: "stirling.svg", - links: { - github: "https://github.com/Stirling-Tools/Stirling-PDF", - website: "https://www.stirlingpdf.com/", - docs: "https://docs.stirlingpdf.com/", - }, - tags: ["pdf", "tools"], - load: () => import("./stirling/index").then((m) => m.generate), - }, - { - id: "lobe-chat", - name: "Lobe Chat", - version: "v1.26.1", - description: "Lobe Chat - an open-source, modern-design AI chat framework.", - logo: "lobe-chat.png", - links: { - github: "https://github.com/lobehub/lobe-chat", - website: "https://chat-preview.lobehub.com/", - docs: "https://lobehub.com/docs/self-hosting/platform/docker-compose", - }, - tags: ["IA", "chat"], - load: () => import("./lobe-chat/index").then((m) => m.generate), - }, - { - id: "peppermint", - name: "Peppermint", - version: "latest", - description: - "Peppermint is a modern, open-source API development platform that helps you build, test and document your APIs.", - logo: "peppermint.svg", - links: { - github: "https://github.com/Peppermint-Lab/peppermint", - website: "https://peppermint.sh/", - docs: "https://docs.peppermint.sh/", - }, - tags: ["api", "development", "documentation"], - load: () => import("./peppermint/index").then((m) => m.generate), - }, - { - id: "windmill", - name: "Windmill", - version: "latest", - description: - "A developer platform to build production-grade workflows and internal apps. Open-source alternative to Airplane, Retool, and GitHub Actions.", - logo: "windmill.svg", - links: { - github: "https://github.com/windmill-labs/windmill", - website: "https://www.windmill.dev/", - docs: "https://docs.windmill.dev/", - }, - tags: ["workflow", "automation", "development"], - load: () => import("./windmill/index").then((m) => m.generate), - }, - { - id: "activepieces", - name: "Activepieces", - version: "0.35.0", - description: - "Open-source no-code business automation tool. An alternative to Zapier, Make.com, and Tray.", - logo: "activepieces.svg", - links: { - github: "https://github.com/activepieces/activepieces", - website: "https://www.activepieces.com/", - docs: "https://www.activepieces.com/docs", - }, - tags: ["automation", "workflow", "no-code"], - load: () => import("./activepieces/index").then((m) => m.generate), - }, - { - id: "invoiceshelf", - name: "InvoiceShelf", - version: "latest", - description: - "InvoiceShelf is a self-hosted open source invoicing system for freelancers and small businesses.", - logo: "invoiceshelf.png", - links: { - github: "https://github.com/InvoiceShelf/invoiceshelf", - website: "https://invoiceshelf.com", - docs: "https://github.com/InvoiceShelf/invoiceshelf#readme", - }, - tags: ["invoice", "business", "finance"], - load: () => import("./invoiceshelf/index").then((m) => m.generate), - }, - { - id: "postiz", - name: "Postiz", - version: "latest", - description: - "Postiz is a modern, open-source platform for managing and publishing content across multiple channels.", - logo: "postiz.png", - links: { - github: "https://github.com/gitroomhq/postiz", - website: "https://postiz.com", - docs: "https://docs.postiz.com", - }, - tags: ["cms", "content-management", "publishing"], - load: () => import("./postiz/index").then((m) => m.generate), - }, - { - id: "slash", - name: "Slash", - version: "latest", - description: - "Slash is a modern, self-hosted bookmarking service and link shortener that helps you organize and share your favorite links.", - logo: "slash.png", - links: { - github: "https://github.com/yourselfhosted/slash", - website: "https://github.com/yourselfhosted/slash#readme", - docs: "https://github.com/yourselfhosted/slash/wiki", - }, - tags: ["bookmarks", "link-shortener", "self-hosted"], - load: () => import("./slash/index").then((m) => m.generate), - }, - { - id: "discord-tickets", - name: "Discord Tickets", - version: "4.0.21", - description: - "An open-source Discord bot for creating and managing support ticket channels.", - logo: "discord-tickets.png", - links: { - github: "https://github.com/discord-tickets/bot", - website: "https://discordtickets.app", - docs: "https://discordtickets.app/self-hosting/installation/docker/", - }, - tags: ["discord", "tickets", "support"], - load: () => import("./discord-tickets/index").then((m) => m.generate), - }, - { - id: "nextcloud-aio", - name: "Nextcloud All in One", - version: "30.0.2", - description: - "Nextcloud (AIO) is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", - logo: "nextcloud-aio.svg", - links: { - github: "https://github.com/nextcloud/docker", - website: "https://nextcloud.com/", - docs: "https://docs.nextcloud.com/", - }, - tags: ["file", "sync"], - load: () => import("./nextcloud-aio/index").then((m) => m.generate), - }, - { - id: "blender", - name: "Blender", - version: "latest", - description: - "Blender is a free and open-source 3D creation suite. It supports the entire 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing and 2D animation pipeline.", - logo: "blender.svg", - links: { - github: "https://github.com/linuxserver/docker-blender", - website: "https://www.blender.org/", - docs: "https://docs.blender.org/", - }, - tags: ["3d", "rendering", "animation"], - load: () => import("./blender/index").then((m) => m.generate), - }, - { - id: "heyform", - name: "HeyForm", - version: "latest", - description: - "Allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.", - logo: "heyform.svg", - links: { - github: "https://github.com/heyform/heyform", - website: "https://heyform.net", - docs: "https://docs.heyform.net", - }, - tags: ["form", "builder", "questionnaire", "quiz", "survey"], - load: () => import("./heyform/index").then((m) => m.generate), - }, - { - id: "chatwoot", - name: "Chatwoot", - version: "v3.14.1", - description: - "Open-source customer engagement platform that provides a shared inbox for teams, live chat, and omnichannel support.", - logo: "chatwoot.svg", - links: { - github: "https://github.com/chatwoot/chatwoot", - website: "https://www.chatwoot.com", - docs: "https://www.chatwoot.com/docs", - }, - tags: ["support", "chat", "customer-service"], - load: () => import("./chatwoot/index").then((m) => m.generate), - }, - { - id: "discourse", - name: "Discourse", - version: "3.3.2", - description: - "Discourse is a modern forum software for your community. Use it as a mailing list, discussion forum, or long-form chat room.", - logo: "discourse.svg", - links: { - github: "https://github.com/discourse/discourse", - website: "https://www.discourse.org/", - docs: "https://meta.discourse.org/", - }, - tags: ["forum", "community", "discussion"], - load: () => import("./discourse/index").then((m) => m.generate), - }, - { - id: "immich", - name: "Immich", - version: "v1.121.0", - description: - "High performance self-hosted photo and video backup solution directly from your mobile phone.", - logo: "immich.svg", - links: { - github: "https://github.com/immich-app/immich", - website: "https://immich.app/", - docs: "https://immich.app/docs/overview/introduction", - }, - tags: ["photos", "videos", "backup", "media"], - load: () => import("./immich/index").then((m) => m.generate), - }, - { - id: "twenty", - name: "Twenty CRM", - version: "latest", - description: - "Twenty is a modern CRM offering a powerful spreadsheet interface and open-source alternative to Salesforce.", - logo: "twenty.svg", - links: { - github: "https://github.com/twentyhq/twenty", - website: "https://twenty.com", - docs: "https://docs.twenty.com", - }, - tags: ["crm", "sales", "business"], - load: () => import("./twenty/index").then((m) => m.generate), - }, - { - id: "yourls", - name: "YOURLS", - version: "1.9.2", - description: - "YOURLS (Your Own URL Shortener) is a set of PHP scripts that will allow you to run your own URL shortening service (a la TinyURL or Bitly).", - logo: "yourls.svg", - links: { - github: "https://github.com/YOURLS/YOURLS", - website: "https://yourls.org/", - docs: "https://yourls.org/#documentation", - }, - tags: ["url-shortener", "php"], - load: () => import("./yourls/index").then((m) => m.generate), - }, - { - id: "ryot", - name: "Ryot", - version: "v7.10", - description: - "A self-hosted platform for tracking various media types including movies, TV shows, video games, books, audiobooks, and more.", - logo: "ryot.png", - links: { - github: "https://github.com/IgnisDa/ryot", - website: "https://ryot.io/", - docs: "https://docs.ryot.io/", - }, - tags: ["media", "tracking", "self-hosted"], - load: () => import("./ryot/index").then((m) => m.generate), - }, - { - id: "photoprism", - name: "Photoprism", - version: "latest", - description: - "PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way.", - logo: "photoprism.svg", - links: { - github: "https://github.com/photoprism/photoprism", - website: "https://www.photoprism.app/", - docs: "https://docs.photoprism.app/", - }, - tags: ["media", "photos", "self-hosted"], - load: () => import("./photoprism/index").then((m) => m.generate), - }, - { - id: "ontime", - name: "Ontime", - version: "v3.8.0", - description: - "Ontime is browser-based application that manages event rundowns, scheduliing and cuing", - logo: "ontime.png", - links: { - github: "https://github.com/cpvalente/ontime/", - website: "https://getontime.no", - docs: "https://docs.getontime.no", - }, - tags: ["event"], - load: () => import("./ontime/index").then((m) => m.generate), - }, - { - id: "triggerdotdev", - name: "Trigger.dev", - version: "v3", - description: - "Trigger is a platform for building event-driven applications.", - logo: "triggerdotdev.svg", - links: { - github: "https://github.com/triggerdotdev/trigger.dev", - website: "https://trigger.dev/", - docs: "https://trigger.dev/docs", - }, - tags: ["event-driven", "applications"], - load: () => import("./triggerdotdev/index").then((m) => m.generate), - }, - { - id: "browserless", - name: "Browserless", - version: "2.23.0", - description: - "Browserless allows remote clients to connect and execute headless work, all inside of docker. It supports the standard, unforked Puppeteer and Playwright libraries, as well offering REST-based APIs for common actions like data collection, PDF generation and more.", - logo: "browserless.svg", - links: { - github: "https://github.com/browserless/browserless", - website: "https://www.browserless.io/", - docs: "https://docs.browserless.io/", - }, - tags: ["browser", "automation"], - load: () => import("./browserless/index").then((m) => m.generate), - }, - { - id: "drawio", - name: "draw.io", - version: "24.7.17", - description: - "draw.io is a configurable diagramming/whiteboarding visualization application.", - logo: "drawio.svg", - links: { - github: "https://github.com/jgraph/drawio", - website: "https://draw.io/", - docs: "https://www.drawio.com/doc/", - }, - tags: ["drawing", "diagrams"], - load: () => import("./drawio/index").then((m) => m.generate), - }, - { - id: "kimai", - name: "Kimai", - version: "2.26.0", - description: - "Kimai is a web-based multi-user time-tracking application. Works great for everyone: freelancers, companies, organizations - everyone can track their times, generate reports, create invoices and do so much more.", - logo: "kimai.svg", - links: { - github: "https://github.com/kimai/kimai", - website: "https://www.kimai.org", - docs: "https://www.kimai.org/documentation", - }, - tags: ["invoice", "business", "finance"], - load: () => import("./kimai/index").then((m) => m.generate), - }, - { - id: "logto", - name: "Logto", - version: "1.22.0", - description: - "Logto is an open-source Identity and Access Management (IAM) platform designed to streamline Customer Identity and Access Management (CIAM) and Workforce Identity Management.", - logo: "logto.png", - links: { - github: "https://github.com/logto-io/logto", - website: "https://logto.io/", - docs: "https://docs.logto.io/introduction", - }, - tags: ["identity", "auth"], - load: () => import("./logto/index").then((m) => m.generate), - }, + links: { + github: "https://github.com/nocodb/nocodb", + website: "https://nocodb.com/", + docs: "https://docs.nocodb.com/", + }, + logo: "nocodb.png", + tags: ["database", "spreadsheet", "low-code", "nocode"], + load: () => import("./nocodb/index").then((m) => m.generate), + }, + { + id: "meilisearch", + name: "Meilisearch", + version: "v1.8.3", + description: + "Meilisearch is a free and open-source search engine that allows you to easily add search functionality to your web applications.", + logo: "meilisearch.png", + links: { + github: "https://github.com/meilisearch/meilisearch", + website: "https://www.meilisearch.com/", + docs: "https://docs.meilisearch.com/", + }, + tags: ["search"], + load: () => import("./meilisearch/index").then((m) => m.generate), + }, + { + id: "phpmyadmin", + name: "Phpmyadmin", + version: "5.2.1", + description: + "Phpmyadmin is a free and open-source web interface for MySQL and MariaDB that allows you to manage your databases.", + logo: "phpmyadmin.png", + links: { + github: "https://github.com/phpmyadmin/phpmyadmin", + website: "https://www.phpmyadmin.net/", + docs: "https://www.phpmyadmin.net/docs/", + }, + tags: ["database"], + load: () => import("./phpmyadmin/index").then((m) => m.generate), + }, + { + id: "rocketchat", + name: "Rocketchat", + version: "6.9.2", + description: + "Rocket.Chat is a free and open-source web chat platform that allows you to build and manage your own chat applications.", + logo: "rocketchat.png", + links: { + github: "https://github.com/RocketChat/Rocket.Chat", + website: "https://rocket.chat/", + docs: "https://rocket.chat/docs/", + }, + tags: ["chat"], + load: () => import("./rocketchat/index").then((m) => m.generate), + }, + { + id: "minio", + name: "Minio", + description: + "Minio is an open source object storage server compatible with Amazon S3 cloud storage service.", + logo: "minio.png", + version: "latest", + links: { + github: "https://github.com/minio/minio", + website: "https://minio.io/", + docs: "https://docs.minio.io/", + }, + tags: ["storage"], + load: () => import("./minio/index").then((m) => m.generate), + }, + { + id: "metabase", + name: "Metabase", + version: "v0.50.8", + description: + "Metabase is an open source business intelligence tool that allows you to ask questions and visualize data.", + logo: "metabase.png", + links: { + github: "https://github.com/metabase/metabase", + website: "https://www.metabase.com/", + docs: "https://www.metabase.com/docs/", + }, + tags: ["database", "dashboard"], + load: () => import("./metabase/index").then((m) => m.generate), + }, + { + id: "glitchtip", + name: "Glitchtip", + version: "v4.0", + description: "Glitchtip is simple, open source error tracking", + logo: "glitchtip.png", + links: { + github: "https://gitlab.com/glitchtip/", + website: "https://glitchtip.com/", + docs: "https://glitchtip.com/documentation", + }, + tags: ["hosting"], + load: () => import("./glitchtip/index").then((m) => m.generate), + }, + { + id: "open-webui", + name: "Open WebUI", + version: "v0.3.7", + description: + "Open WebUI is a free and open source chatgpt alternative. Open WebUI is an extensible, feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline. It supports various LLM runners, including Ollama and OpenAI-compatible APIs. The template include ollama and webui services.", + logo: "open-webui.png", + links: { + github: "https://github.com/open-webui/open-webui", + website: "https://openwebui.com/", + docs: "https://docs.openwebui.com/", + }, + tags: ["chat"], + load: () => import("./open-webui/index").then((m) => m.generate), + }, + { + id: "listmonk", + name: "Listmonk", + version: "v3.0.0", + description: + "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.", + logo: "listmonk.png", + links: { + github: "https://github.com/knadh/listmonk", + website: "https://listmonk.app/", + docs: "https://listmonk.app/docs/", + }, + tags: ["email", "newsletter", "mailing-list"], + load: () => import("./listmonk/index").then((m) => m.generate), + }, + { + id: "doublezero", + name: "Double Zero", + version: "v0.2.1", + description: + "00 is a self hostable SES dashboard for sending and monitoring emails with AWS", + logo: "doublezero.svg", + links: { + github: "https://github.com/technomancy-dev/00", + website: "https://www.double-zero.cloud/", + docs: "https://github.com/technomancy-dev/00", + }, + tags: ["email"], + load: () => import("./doublezero/index").then((m) => m.generate), + }, + { + id: "umami", + name: "Umami", + version: "v2.14.0", + description: + "Umami is a simple, fast, privacy-focused alternative to Google Analytics.", + logo: "umami.png", + links: { + github: "https://github.com/umami-software/umami", + website: "https://umami.is", + docs: "https://umami.is/docs", + }, + tags: ["analytics"], + load: () => import("./umami/index").then((m) => m.generate), + }, + { + id: "jellyfin", + name: "jellyfin", + version: "v10.9.7", + description: + "Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. ", + logo: "jellyfin.svg", + links: { + github: "https://github.com/jellyfin/jellyfin", + website: "https://jellyfin.org/", + docs: "https://jellyfin.org/docs/", + }, + tags: ["media system"], + load: () => import("./jellyfin/index").then((m) => m.generate), + }, + { + id: "teable", + name: "teable", + version: "v1.3.1-alpha-build.460", + description: + "Teable is a Super fast, Real-time, Professional, Developer friendly, No-code database built on Postgres. It uses a simple, spreadsheet-like interface to create complex enterprise-level database applications. Unlock efficient app development with no-code, free from the hurdles of data security and scalability.", + logo: "teable.png", + links: { + github: "https://github.com/teableio/teable", + website: "https://teable.io/", + docs: "https://help.teable.io/", + }, + tags: ["database", "spreadsheet", "low-code", "nocode"], + load: () => import("./teable/index").then((m) => m.generate), + }, + { + id: "zipline", + name: "Zipline", + version: "v3.7.9", + description: + "A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!", + logo: "zipline.png", + links: { + github: "https://github.com/diced/zipline", + website: "https://zipline.diced.sh/", + docs: "https://zipline.diced.sh/docs/", + }, + tags: ["media system", "storage"], + load: () => import("./zipline/index").then((m) => m.generate), + }, + { + id: "soketi", + name: "Soketi", + version: "v1.6.1-16", + description: + "Soketi is your simple, fast, and resilient open-source WebSockets server.", + logo: "soketi.png", + links: { + github: "https://github.com/soketi/soketi", + website: "https://soketi.app/", + docs: "https://docs.soketi.app/", + }, + tags: ["chat"], + load: () => import("./soketi/index").then((m) => m.generate), + }, + { + id: "aptabase", + name: "Aptabase", + version: "v1.0.0", + description: + "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", + logo: "aptabase.svg", + links: { + github: "https://github.com/aptabase/aptabase", + website: "https://aptabase.com/", + docs: "https://github.com/aptabase/aptabase/blob/main/README.md", + }, + tags: ["analytics", "self-hosted"], + load: () => import("./aptabase/index").then((m) => m.generate), + }, + { + id: "typebot", + name: "Typebot", + version: "2.27.0", + description: "Typebot is an open-source chatbot builder platform.", + logo: "typebot.svg", + links: { + github: "https://github.com/baptisteArno/typebot.io", + website: "https://typebot.io/", + docs: "https://docs.typebot.io/get-started/introduction", + }, + tags: ["chatbot", "builder", "open-source"], + load: () => import("./typebot/index").then((m) => m.generate), + }, + { + id: "gitea", + name: "Gitea", + version: "1.22.3", + description: + "Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD.", + logo: "gitea.png", + links: { + github: "https://github.com/go-gitea/gitea.git", + website: "https://gitea.com/", + docs: "https://docs.gitea.com/installation/install-with-docker", + }, + tags: ["self-hosted", "storage"], + load: () => import("./gitea/index").then((m) => m.generate), + }, + { + id: "roundcube", + name: "Roundcube", + version: "1.6.9", + description: + "Free and open source webmail software for the masses, written in PHP.", + logo: "roundcube.svg", + links: { + github: "https://github.com/roundcube/roundcubemail", + website: "https://roundcube.net/", + docs: "https://roundcube.net/about/", + }, + tags: ["self-hosted", "email", "webmail"], + load: () => import("./roundcube/index").then((m) => m.generate), + }, + { + id: "filebrowser", + name: "File Browser", + version: "2.31.2", + description: + "Filebrowser is a standalone file manager for uploading, deleting, previewing, renaming, and editing files, with support for multiple users, each with their own directory.", + logo: "filebrowser.svg", + links: { + github: "https://github.com/filebrowser/filebrowser", + website: "https://filebrowser.org/", + docs: "https://filebrowser.org/", + }, + tags: ["file", "manager"], + load: () => import("./filebrowser/index").then((m) => m.generate), + }, + { + id: "tolgee", + name: "Tolgee", + version: "v3.80.4", + description: + "Developer & translator friendly web-based localization platform", + logo: "tolgee.svg", + links: { + github: "https://github.com/tolgee/tolgee-platform", + website: "https://tolgee.io", + docs: "https://tolgee.io/platform", + }, + tags: ["self-hosted", "i18n", "localization", "translations"], + load: () => import("./tolgee/index").then((m) => m.generate), + }, + { + id: "portainer", + name: "Portainer", + version: "2.21.4", + description: + "Portainer is a container management tool for deploying, troubleshooting, and securing applications across cloud, data centers, and IoT.", + logo: "portainer.svg", + links: { + github: "https://github.com/portainer/portainer", + website: "https://www.portainer.io/", + docs: "https://docs.portainer.io/", + }, + tags: ["cloud", "monitoring"], + load: () => import("./portainer/index").then((m) => m.generate), + }, + { + id: "influxdb", + name: "InfluxDB", + version: "2.7.10", + description: + "InfluxDB 2.7 is the platform purpose-built to collect, store, process and visualize time series data.", + logo: "influxdb.png", + links: { + github: "https://github.com/influxdata/influxdb", + website: "https://www.influxdata.com/", + docs: "https://docs.influxdata.com/influxdb/v2/", + }, + tags: ["self-hosted", "open-source", "storage", "database"], + load: () => import("./influxdb/index").then((m) => m.generate), + }, + { + id: "infisical", + name: "Infisical", + version: "0.90.1", + description: + "All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.", + logo: "infisical.jpg", + links: { + github: "https://github.com/Infisical/infisical", + website: "https://infisical.com/", + docs: "https://infisical.com/docs/documentation/getting-started/introduction", + }, + tags: ["self-hosted", "open-source"], + load: () => import("./infisical/index").then((m) => m.generate), + }, + { + id: "docmost", + name: "Docmost", + version: "0.4.1", + description: + "Docmost, is an open-source collaborative wiki and documentation software.", + logo: "docmost.png", + links: { + github: "https://github.com/docmost/docmost", + website: "https://docmost.com/", + docs: "https://docmost.com/docs/", + }, + tags: ["self-hosted", "open-source", "manager"], + load: () => import("./docmost/index").then((m) => m.generate), + }, + { + id: "vaultwarden", + name: "Vaultwarden", + version: "1.32.3", + description: + "Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs", + logo: "vaultwarden.svg", + links: { + github: "https://github.com/dani-garcia/vaultwarden", + website: "", + docs: "https://github.com/dani-garcia/vaultwarden/wiki", + }, + tags: ["open-source"], + load: () => import("./vaultwarden/index").then((m) => m.generate), + }, + { + id: "hi-events", + name: "Hi.events", + version: "0.8.0-beta.1", + description: + "Hi.Events is a self-hosted event management and ticket selling platform that allows you to create, manage and promote events easily.", + logo: "hi-events.svg", + links: { + github: "https://github.com/HiEventsDev/hi.events", + website: "https://hi.events/", + docs: "https://hi.events/docs", + }, + tags: ["self-hosted", "open-source", "manager"], + load: () => import("./hi-events/index").then((m) => m.generate), + }, + { + id: "windows", + name: "Windows (dockerized)", + version: "4.00", + description: "Windows inside a Docker container.", + logo: "windows.png", + links: { + github: "https://github.com/dockur/windows", + website: "", + docs: "https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-use-it", + }, + tags: ["self-hosted", "open-source", "os"], + load: () => import("./windows/index").then((m) => m.generate), + }, + { + id: "macos", + name: "MacOS (dockerized)", + version: "1.14", + description: "MacOS inside a Docker container.", + logo: "macos.png", + links: { + github: "https://github.com/dockur/macos", + website: "", + docs: "https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-use-it", + }, + tags: ["self-hosted", "open-source", "os"], + load: () => import("./macos/index").then((m) => m.generate), + }, + { + id: "coder", + name: "Coder", + version: "2.15.3", + description: + "Coder is an open-source cloud development environment (CDE) that you host in your cloud or on-premises.", + logo: "coder.svg", + links: { + github: "https://github.com/coder/coder", + website: "https://coder.com/", + docs: "https://coder.com/docs", + }, + tags: ["self-hosted", "open-source", "builder"], + load: () => import("./coder/index").then((m) => m.generate), + }, + { + id: "stirling", + name: "Stirling PDF", + version: "0.30.1", + description: "A locally hosted one-stop shop for all your PDF needs", + logo: "stirling.svg", + links: { + github: "https://github.com/Stirling-Tools/Stirling-PDF", + website: "https://www.stirlingpdf.com/", + docs: "https://docs.stirlingpdf.com/", + }, + tags: ["pdf", "tools"], + load: () => import("./stirling/index").then((m) => m.generate), + }, + { + id: "lobe-chat", + name: "Lobe Chat", + version: "v1.26.1", + description: "Lobe Chat - an open-source, modern-design AI chat framework.", + logo: "lobe-chat.png", + links: { + github: "https://github.com/lobehub/lobe-chat", + website: "https://chat-preview.lobehub.com/", + docs: "https://lobehub.com/docs/self-hosting/platform/docker-compose", + }, + tags: ["IA", "chat"], + load: () => import("./lobe-chat/index").then((m) => m.generate), + }, + { + id: "peppermint", + name: "Peppermint", + version: "latest", + description: + "Peppermint is a modern, open-source API development platform that helps you build, test and document your APIs.", + logo: "peppermint.svg", + links: { + github: "https://github.com/Peppermint-Lab/peppermint", + website: "https://peppermint.sh/", + docs: "https://docs.peppermint.sh/", + }, + tags: ["api", "development", "documentation"], + load: () => import("./peppermint/index").then((m) => m.generate), + }, + { + id: "windmill", + name: "Windmill", + version: "latest", + description: + "A developer platform to build production-grade workflows and internal apps. Open-source alternative to Airplane, Retool, and GitHub Actions.", + logo: "windmill.svg", + links: { + github: "https://github.com/windmill-labs/windmill", + website: "https://www.windmill.dev/", + docs: "https://docs.windmill.dev/", + }, + tags: ["workflow", "automation", "development"], + load: () => import("./windmill/index").then((m) => m.generate), + }, + { + id: "activepieces", + name: "Activepieces", + version: "0.35.0", + description: + "Open-source no-code business automation tool. An alternative to Zapier, Make.com, and Tray.", + logo: "activepieces.svg", + links: { + github: "https://github.com/activepieces/activepieces", + website: "https://www.activepieces.com/", + docs: "https://www.activepieces.com/docs", + }, + tags: ["automation", "workflow", "no-code"], + load: () => import("./activepieces/index").then((m) => m.generate), + }, + { + id: "invoiceshelf", + name: "InvoiceShelf", + version: "latest", + description: + "InvoiceShelf is a self-hosted open source invoicing system for freelancers and small businesses.", + logo: "invoiceshelf.png", + links: { + github: "https://github.com/InvoiceShelf/invoiceshelf", + website: "https://invoiceshelf.com", + docs: "https://github.com/InvoiceShelf/invoiceshelf#readme", + }, + tags: ["invoice", "business", "finance"], + load: () => import("./invoiceshelf/index").then((m) => m.generate), + }, + { + id: "postiz", + name: "Postiz", + version: "latest", + description: + "Postiz is a modern, open-source platform for managing and publishing content across multiple channels.", + logo: "postiz.png", + links: { + github: "https://github.com/gitroomhq/postiz", + website: "https://postiz.com", + docs: "https://docs.postiz.com", + }, + tags: ["cms", "content-management", "publishing"], + load: () => import("./postiz/index").then((m) => m.generate), + }, + { + id: "slash", + name: "Slash", + version: "latest", + description: + "Slash is a modern, self-hosted bookmarking service and link shortener that helps you organize and share your favorite links.", + logo: "slash.png", + links: { + github: "https://github.com/yourselfhosted/slash", + website: "https://github.com/yourselfhosted/slash#readme", + docs: "https://github.com/yourselfhosted/slash/wiki", + }, + tags: ["bookmarks", "link-shortener", "self-hosted"], + load: () => import("./slash/index").then((m) => m.generate), + }, + { + id: "discord-tickets", + name: "Discord Tickets", + version: "4.0.21", + description: + "An open-source Discord bot for creating and managing support ticket channels.", + logo: "discord-tickets.png", + links: { + github: "https://github.com/discord-tickets/bot", + website: "https://discordtickets.app", + docs: "https://discordtickets.app/self-hosting/installation/docker/", + }, + tags: ["discord", "tickets", "support"], + load: () => import("./discord-tickets/index").then((m) => m.generate), + }, + { + id: "nextcloud-aio", + name: "Nextcloud All in One", + version: "30.0.2", + description: + "Nextcloud (AIO) is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", + logo: "nextcloud-aio.svg", + links: { + github: "https://github.com/nextcloud/docker", + website: "https://nextcloud.com/", + docs: "https://docs.nextcloud.com/", + }, + tags: ["file", "sync"], + load: () => import("./nextcloud-aio/index").then((m) => m.generate), + }, + { + id: "blender", + name: "Blender", + version: "latest", + description: + "Blender is a free and open-source 3D creation suite. It supports the entire 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing and 2D animation pipeline.", + logo: "blender.svg", + links: { + github: "https://github.com/linuxserver/docker-blender", + website: "https://www.blender.org/", + docs: "https://docs.blender.org/", + }, + tags: ["3d", "rendering", "animation"], + load: () => import("./blender/index").then((m) => m.generate), + }, + { + id: "heyform", + name: "HeyForm", + version: "latest", + description: + "Allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.", + logo: "heyform.svg", + links: { + github: "https://github.com/heyform/heyform", + website: "https://heyform.net", + docs: "https://docs.heyform.net", + }, + tags: ["form", "builder", "questionnaire", "quiz", "survey"], + load: () => import("./heyform/index").then((m) => m.generate), + }, + { + id: "chatwoot", + name: "Chatwoot", + version: "v3.14.1", + description: + "Open-source customer engagement platform that provides a shared inbox for teams, live chat, and omnichannel support.", + logo: "chatwoot.svg", + links: { + github: "https://github.com/chatwoot/chatwoot", + website: "https://www.chatwoot.com", + docs: "https://www.chatwoot.com/docs", + }, + tags: ["support", "chat", "customer-service"], + load: () => import("./chatwoot/index").then((m) => m.generate), + }, + { + id: "discourse", + name: "Discourse", + version: "3.3.2", + description: + "Discourse is a modern forum software for your community. Use it as a mailing list, discussion forum, or long-form chat room.", + logo: "discourse.svg", + links: { + github: "https://github.com/discourse/discourse", + website: "https://www.discourse.org/", + docs: "https://meta.discourse.org/", + }, + tags: ["forum", "community", "discussion"], + load: () => import("./discourse/index").then((m) => m.generate), + }, + { + id: "immich", + name: "Immich", + version: "v1.121.0", + description: + "High performance self-hosted photo and video backup solution directly from your mobile phone.", + logo: "immich.svg", + links: { + github: "https://github.com/immich-app/immich", + website: "https://immich.app/", + docs: "https://immich.app/docs/overview/introduction", + }, + tags: ["photos", "videos", "backup", "media"], + load: () => import("./immich/index").then((m) => m.generate), + }, + { + id: "twenty", + name: "Twenty CRM", + version: "latest", + description: + "Twenty is a modern CRM offering a powerful spreadsheet interface and open-source alternative to Salesforce.", + logo: "twenty.svg", + links: { + github: "https://github.com/twentyhq/twenty", + website: "https://twenty.com", + docs: "https://docs.twenty.com", + }, + tags: ["crm", "sales", "business"], + load: () => import("./twenty/index").then((m) => m.generate), + }, + { + id: "yourls", + name: "YOURLS", + version: "1.9.2", + description: + "YOURLS (Your Own URL Shortener) is a set of PHP scripts that will allow you to run your own URL shortening service (a la TinyURL or Bitly).", + logo: "yourls.svg", + links: { + github: "https://github.com/YOURLS/YOURLS", + website: "https://yourls.org/", + docs: "https://yourls.org/#documentation", + }, + tags: ["url-shortener", "php"], + load: () => import("./yourls/index").then((m) => m.generate), + }, + { + id: "ryot", + name: "Ryot", + version: "v7.10", + description: + "A self-hosted platform for tracking various media types including movies, TV shows, video games, books, audiobooks, and more.", + logo: "ryot.png", + links: { + github: "https://github.com/IgnisDa/ryot", + website: "https://ryot.io/", + docs: "https://docs.ryot.io/", + }, + tags: ["media", "tracking", "self-hosted"], + load: () => import("./ryot/index").then((m) => m.generate), + }, + { + id: "photoprism", + name: "Photoprism", + version: "latest", + description: + "PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way.", + logo: "photoprism.svg", + links: { + github: "https://github.com/photoprism/photoprism", + website: "https://www.photoprism.app/", + docs: "https://docs.photoprism.app/", + }, + tags: ["media", "photos", "self-hosted"], + load: () => import("./photoprism/index").then((m) => m.generate), + }, + { + id: "ontime", + name: "Ontime", + version: "v3.8.0", + description: + "Ontime is browser-based application that manages event rundowns, scheduliing and cuing", + logo: "ontime.png", + links: { + github: "https://github.com/cpvalente/ontime/", + website: "https://getontime.no", + docs: "https://docs.getontime.no", + }, + tags: ["event"], + load: () => import("./ontime/index").then((m) => m.generate), + }, + { + id: "triggerdotdev", + name: "Trigger.dev", + version: "v3", + description: + "Trigger is a platform for building event-driven applications.", + logo: "triggerdotdev.svg", + links: { + github: "https://github.com/triggerdotdev/trigger.dev", + website: "https://trigger.dev/", + docs: "https://trigger.dev/docs", + }, + tags: ["event-driven", "applications"], + load: () => import("./triggerdotdev/index").then((m) => m.generate), + }, + { + id: "browserless", + name: "Browserless", + version: "2.23.0", + description: + "Browserless allows remote clients to connect and execute headless work, all inside of docker. It supports the standard, unforked Puppeteer and Playwright libraries, as well offering REST-based APIs for common actions like data collection, PDF generation and more.", + logo: "browserless.svg", + links: { + github: "https://github.com/browserless/browserless", + website: "https://www.browserless.io/", + docs: "https://docs.browserless.io/", + }, + tags: ["browser", "automation"], + load: () => import("./browserless/index").then((m) => m.generate), + }, + { + id: "drawio", + name: "draw.io", + version: "24.7.17", + description: + "draw.io is a configurable diagramming/whiteboarding visualization application.", + logo: "drawio.svg", + links: { + github: "https://github.com/jgraph/drawio", + website: "https://draw.io/", + docs: "https://www.drawio.com/doc/", + }, + tags: ["drawing", "diagrams"], + load: () => import("./drawio/index").then((m) => m.generate), + }, + { + id: "kimai", + name: "Kimai", + version: "2.26.0", + description: + "Kimai is a web-based multi-user time-tracking application. Works great for everyone: freelancers, companies, organizations - everyone can track their times, generate reports, create invoices and do so much more.", + logo: "kimai.svg", + links: { + github: "https://github.com/kimai/kimai", + website: "https://www.kimai.org", + docs: "https://www.kimai.org/documentation", + }, + tags: ["invoice", "business", "finance"], + load: () => import("./kimai/index").then((m) => m.generate), + }, + { + id: "logto", + name: "Logto", + version: "1.22.0", + description: + "Logto is an open-source Identity and Access Management (IAM) platform designed to streamline Customer Identity and Access Management (CIAM) and Workforce Identity Management.", + logo: "logto.png", + links: { + github: "https://github.com/logto-io/logto", + website: "https://logto.io/", + docs: "https://docs.logto.io/introduction", + }, + tags: ["identity", "auth"], + load: () => import("./logto/index").then((m) => m.generate), + }, + { + id: "unsend", + name: "Unsend", + version: "v1.2.4", + description: "Open source alternative to Resend,Sendgrid, Postmark etc. ", + logo: "unsend.png", // we defined the name and the extension of the logo + links: { + github: "https://github.com/unsend-dev/unsend", + website: "https://unsend.dev/", + docs: "https://docs.unsend.dev/get-started/", + }, + tags: ["e-mail", "marketing", "business"], + load: () => import("./unsend/index").then((m) => m.generate), + }, ]; diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml new file mode 100644 index 00000000..e34093f7 --- /dev/null +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -0,0 +1,82 @@ +name: unsend-prod + +services: + postgres: + image: postgres:16 + networks: + - dokploy-network + container_name: unsend-db-prod + restart: always + environment: + - POSTGRES_USER=${POSTGRES_USER:?err} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?err} + - POSTGRES_DB=${POSTGRES_DB:?err} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] + interval: 10s + timeout: 5s + retries: 5 + # ports: + # - "5432:5432" + volumes: + - database:/var/lib/postgresql/data + + redis: + image: redis:7 + networks: + - dokploy-network + container_name: unsend-redis-prod + restart: always + # ports: + # - "6379:6379" + volumes: + - cache:/data + command: ["redis-server", "--maxmemory-policy", "noeviction"] + + minio: + image: minio/minio + networks: + - dokploy-network + container_name: unsend-storage-prod + ports: + - 9002:9002 + - 9001:9001 + volumes: + - storage:/data + environment: + MINIO_ROOT_USER: unsend + MINIO_ROOT_PASSWORD: password + entrypoint: sh + command: -c 'mkdir -p /data/unsend && minio server /data --console-address ":9001" --address ":9002"' + + unsend: + image: unsend/unsend:latest + networks: + - dokploy-network + container_name: unsend + restart: always + ports: + - ${PORT:-3000} + environment: + - PORT=${PORT:-3000} + - DATABASE_URL=${DATABASE_URL:?err} + - NEXTAUTH_URL=${NEXTAUTH_URL:?err} + - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:?err} + - AWS_ACCESS_KEY=${AWS_ACCESS_KEY:?err} + - AWS_SECRET_KEY=${AWS_SECRET_KEY:?err} + - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:?err} + - GITHUB_ID=${GITHUB_ID:?err} + - GITHUB_SECRET=${GITHUB_SECRET:?err} + - REDIS_URL=${REDIS_URL:?err} + - NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false} + - API_RATE_LIMIT=${API_RATE_LIMIT:-1} + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_started + +volumes: + database: + cache: + storage: diff --git a/apps/dokploy/templates/unsend/index.ts b/apps/dokploy/templates/unsend/index.ts new file mode 100644 index 00000000..45a33a13 --- /dev/null +++ b/apps/dokploy/templates/unsend/index.ts @@ -0,0 +1,44 @@ +import { + generateHash, + generateRandomDomain, + generateBase64, + type Template, + type Schema, + type DomainSchema, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const secretBase = generateBase64(64); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 3000, + serviceName: "unsend", + }, + ]; + + const envs = [ + "REDIS_URL=redis://unsend-redis-prod:6379", + "POSTGRES_USER=postgres", + "POSTGRES_PASSWORD=postgres", + "POSTGRES_DB=unsend", + "DATABASE_URL=postgresql://postgres:postgres@unsend-db-prod:5432/unsend", + "NEXTAUTH_URL=http://localhost:3000", + `NEXTAUTH_SECRET=${secretBase}`, + "GITHUB_ID=", + "GITHUB_SECRET=", + "AWS_DEFAULT_REGION=us-east-1", + "AWS_SECRET_KEY=", + "AWS_ACCESS_KEY=", + "DOCKER_OUTPUT=1", + "API_RATE_LIMIT=1", + "DISCORD_WEBHOOK_URL=", + ]; + + return { + envs, + domains, + }; +} From 26f8719e5f4ad2309c63c5725e40b0f3d0db03a6 Mon Sep 17 00:00:00 2001 From: DJKnaeckebrot <46864390+DJKnaeckebrot@users.noreply.github.com> Date: Thu, 12 Dec 2024 21:41:57 +0100 Subject: [PATCH 02/13] fix: wrong port publishing --- apps/dokploy/templates/unsend/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index e34093f7..0ed19f7c 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -39,8 +39,8 @@ services: - dokploy-network container_name: unsend-storage-prod ports: - - 9002:9002 - - 9001:9001 + - 9002 + - 9001 volumes: - storage:/data environment: From 4c8619677bedc6d098b88306bfd4f243e53e042d Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:49:45 -0600 Subject: [PATCH 03/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index 0ed19f7c..73fb0ade 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -1,11 +1,10 @@ name: unsend-prod services: - postgres: + unsend-db-prod: image: postgres:16 networks: - dokploy-network - container_name: unsend-db-prod restart: always environment: - POSTGRES_USER=${POSTGRES_USER:?err} From 87c1ce68b951c1bf54163958c080afb223f71e78 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:49:49 -0600 Subject: [PATCH 04/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index 73fb0ade..1c20dbe7 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -20,11 +20,10 @@ services: volumes: - database:/var/lib/postgresql/data - redis: + unsend-redis-prod: image: redis:7 networks: - dokploy-network - container_name: unsend-redis-prod restart: always # ports: # - "6379:6379" From 22122361bac9b1ccaee1bf82ad653ff0c2a7d079 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:49:54 -0600 Subject: [PATCH 05/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index 1c20dbe7..3ec8e41f 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -31,11 +31,10 @@ services: - cache:/data command: ["redis-server", "--maxmemory-policy", "noeviction"] - minio: + unsend-storage-prod: image: minio/minio networks: - dokploy-network - container_name: unsend-storage-prod ports: - 9002 - 9001 From b01b05077d59b8f219ed0d563534da4fb51cb0a3 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:49:58 -0600 Subject: [PATCH 06/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index 3ec8e41f..df80ced2 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -50,7 +50,6 @@ services: image: unsend/unsend:latest networks: - dokploy-network - container_name: unsend restart: always ports: - ${PORT:-3000} From e22b6ab9be5371caf255fff2f9e8d889e5ffda6d Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:50:04 -0600 Subject: [PATCH 07/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index df80ced2..68c098dd 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -67,7 +67,7 @@ services: - NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false} - API_RATE_LIMIT=${API_RATE_LIMIT:-1} depends_on: - postgres: + unsend-db-prod: condition: service_healthy redis: condition: service_started From 469871d383111764ab55e22ce39f3e94d66a1799 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:50:08 -0600 Subject: [PATCH 08/13] Update apps/dokploy/templates/unsend/docker-compose.yml --- apps/dokploy/templates/unsend/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index 68c098dd..afebc576 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -69,7 +69,7 @@ services: depends_on: unsend-db-prod: condition: service_healthy - redis: + unsend-redis-prod: condition: service_started volumes: From f15a5bc22dd2a38040412fd99ec3765ae1286a69 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:50:12 -0600 Subject: [PATCH 09/13] Update apps/dokploy/templates/unsend/index.ts --- apps/dokploy/templates/unsend/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/dokploy/templates/unsend/index.ts b/apps/dokploy/templates/unsend/index.ts index 45a33a13..a383b771 100644 --- a/apps/dokploy/templates/unsend/index.ts +++ b/apps/dokploy/templates/unsend/index.ts @@ -27,11 +27,11 @@ export function generate(schema: Schema): Template { "DATABASE_URL=postgresql://postgres:postgres@unsend-db-prod:5432/unsend", "NEXTAUTH_URL=http://localhost:3000", `NEXTAUTH_SECRET=${secretBase}`, - "GITHUB_ID=", - "GITHUB_SECRET=", + "GITHUB_ID='Fill'", + "GITHUB_SECRET='Fill'", "AWS_DEFAULT_REGION=us-east-1", - "AWS_SECRET_KEY=", - "AWS_ACCESS_KEY=", + "AWS_SECRET_KEY='Fill'", + "AWS_ACCESS_KEY='Fill'", "DOCKER_OUTPUT=1", "API_RATE_LIMIT=1", "DISCORD_WEBHOOK_URL=", From 0b37e171c5da25f3af720201e8f336f5bf2c6e70 Mon Sep 17 00:00:00 2001 From: djknaeckebrot Date: Fri, 13 Dec 2024 09:20:23 +0100 Subject: [PATCH 10/13] chore: add fixed versions --- apps/dokploy/templates/unsend/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/dokploy/templates/unsend/docker-compose.yml b/apps/dokploy/templates/unsend/docker-compose.yml index afebc576..cdf02de6 100644 --- a/apps/dokploy/templates/unsend/docker-compose.yml +++ b/apps/dokploy/templates/unsend/docker-compose.yml @@ -32,7 +32,7 @@ services: command: ["redis-server", "--maxmemory-policy", "noeviction"] unsend-storage-prod: - image: minio/minio + image: minio/minio:RELEASE.2024-11-07T00-52-20Z networks: - dokploy-network ports: @@ -47,7 +47,7 @@ services: command: -c 'mkdir -p /data/unsend && minio server /data --console-address ":9001" --address ":9002"' unsend: - image: unsend/unsend:latest + image: unsend/unsend:v1.2.4 networks: - dokploy-network restart: always From 236e511adc9a7fb15c8176ab0ffffba00a868e74 Mon Sep 17 00:00:00 2001 From: djknaeckebrot Date: Fri, 13 Dec 2024 12:02:01 +0100 Subject: [PATCH 11/13] feat: add langflow template --- apps/dokploy/public/templates/langflow.svg | 6 ++++ .../templates/langflow/docker-compose.yml | 33 +++++++++++++++++++ apps/dokploy/templates/langflow/index.ts | 28 ++++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++++++++ 4 files changed, 82 insertions(+) create mode 100644 apps/dokploy/public/templates/langflow.svg create mode 100644 apps/dokploy/templates/langflow/docker-compose.yml create mode 100644 apps/dokploy/templates/langflow/index.ts diff --git a/apps/dokploy/public/templates/langflow.svg b/apps/dokploy/public/templates/langflow.svg new file mode 100644 index 00000000..3665f824 --- /dev/null +++ b/apps/dokploy/public/templates/langflow.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/dokploy/templates/langflow/docker-compose.yml b/apps/dokploy/templates/langflow/docker-compose.yml new file mode 100644 index 00000000..45cd76bc --- /dev/null +++ b/apps/dokploy/templates/langflow/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3.8" + +services: + langflow: + image: langflowai/langflow:v1.1.1 + ports: + - 7860 + depends_on: + - postgres + environment: + - LANGFLOW_DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/langflow + # This variable defines where the logs, file storage, monitor data and secret keys are stored. + volumes: + - langflow-data:/app/langflow + networks: + - dokploy-network + + postgres: + image: postgres:16 + environment: + POSTGRES_USER: langflow + POSTGRES_PASSWORD: langflow + POSTGRES_DB: langflow + ports: + - 5432 + volumes: + - langflow-postgres:/var/lib/postgresql/data + networks: + - dokploy-network + +volumes: + langflow-postgres: + langflow-data: \ No newline at end of file diff --git a/apps/dokploy/templates/langflow/index.ts b/apps/dokploy/templates/langflow/index.ts new file mode 100644 index 00000000..75f6db58 --- /dev/null +++ b/apps/dokploy/templates/langflow/index.ts @@ -0,0 +1,28 @@ +import { + type DomainSchema, + type Schema, + type Template, + generatePassword, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const dbPassword = generatePassword(); + const dbUsername = "langflow"; + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 7860, + serviceName: "langflow", + }, + ]; + + const envs = [`DB_PASSWORD=${dbPassword}`, `DB_USERNAME=${dbUsername}`]; + + return { + domains, + envs, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 86aa9ae8..43021c17 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -1062,4 +1062,19 @@ export const templates: TemplateData[] = [ tags: ["identity", "auth"], load: () => import("./logto/index").then((m) => m.generate), }, + { + id: "langflow", + name: "Langflow", + version: "1.1.1", + description: + "Langflow is a low-code app builder for RAG and multi-agent AI applications. It’s Python-based and agnostic to any model, API, or database. ", + logo: "langflow.svg", + links: { + github: "https://github.com/langflow-ai/langflow/tree/main", + website: "https://www.langflow.org/", + docs: "https://docs.langflow.org/", + }, + tags: ["ai"], + load: () => import("./langflow/index").then((m) => m.generate), + }, ]; From 274c65cbcd9f169ba10f05cf31545004e717aed4 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 14 Dec 2024 01:29:39 -0600 Subject: [PATCH 12/13] refactor: add unsend --- apps/dokploy/templates/templates.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 43021c17..d840db63 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -1062,6 +1062,20 @@ export const templates: TemplateData[] = [ tags: ["identity", "auth"], load: () => import("./logto/index").then((m) => m.generate), }, + { + id: "unsend", + name: "Unsend", + version: "v1.2.4", + description: "Open source alternative to Resend,Sendgrid, Postmark etc. ", + logo: "unsend.png", // we defined the name and the extension of the logo + links: { + github: "https://github.com/unsend-dev/unsend", + website: "https://unsend.dev/", + docs: "https://docs.unsend.dev/get-started/", + }, + tags: ["e-mail", "marketing", "business"], + load: () => import("./unsend/index").then((m) => m.generate), + }, { id: "langflow", name: "Langflow", From 166b65c50ed324684536f019886c4629d9600987 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 14 Dec 2024 01:34:05 -0600 Subject: [PATCH 13/13] refactor: add env variables --- apps/dokploy/templates/langflow/docker-compose.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/dokploy/templates/langflow/docker-compose.yml b/apps/dokploy/templates/langflow/docker-compose.yml index 45cd76bc..75bb73dd 100644 --- a/apps/dokploy/templates/langflow/docker-compose.yml +++ b/apps/dokploy/templates/langflow/docker-compose.yml @@ -6,20 +6,20 @@ services: ports: - 7860 depends_on: - - postgres + - postgres-langflow environment: - - LANGFLOW_DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/langflow + - LANGFLOW_DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres-langflow:5432/langflow # This variable defines where the logs, file storage, monitor data and secret keys are stored. volumes: - langflow-data:/app/langflow networks: - dokploy-network - postgres: + postgres-langflow: image: postgres:16 environment: - POSTGRES_USER: langflow - POSTGRES_PASSWORD: langflow + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: langflow ports: - 5432