diff --git a/apps/dokploy/components/dashboard/docker/terminal/docker-terminal-modal.tsx b/apps/dokploy/components/dashboard/docker/terminal/docker-terminal-modal.tsx
index 876d6838b..f0f8ca6ad 100644
--- a/apps/dokploy/components/dashboard/docker/terminal/docker-terminal-modal.tsx
+++ b/apps/dokploy/components/dashboard/docker/terminal/docker-terminal-modal.tsx
@@ -1,56 +1,94 @@
+import { Button } from "@/components/ui/button";
import {
- Dialog,
- DialogContent,
- DialogDescription,
- DialogHeader,
- DialogTitle,
- DialogTrigger,
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
} from "@/components/ui/dialog";
import { DropdownMenuItem } from "@/components/ui/dropdown-menu";
import dynamic from "next/dynamic";
+import { useState } from "react";
const Terminal = dynamic(
- () => import("./docker-terminal").then((e) => e.DockerTerminal),
- {
- ssr: false,
- },
+ () => import("./docker-terminal").then((e) => e.DockerTerminal),
+ {
+ ssr: false,
+ }
);
interface Props {
- containerId: string;
- serverId?: string;
- children?: React.ReactNode;
+ containerId: string;
+ serverId?: string;
+ children?: React.ReactNode;
}
export const DockerTerminalModal = ({
- children,
- containerId,
- serverId,
+ children,
+ containerId,
+ serverId,
}: Props) => {
- return (
-
- );
+ const handleMainDialogOpenChange = (open: boolean) => {
+ if (!open) {
+ setConfirmDialogOpen(true);
+ } else {
+ setMainDialogOpen(true);
+ }
+ };
+
+ const handleConfirm = () => {
+ setConfirmDialogOpen(false);
+ setMainDialogOpen(false);
+ };
+
+ const handleCancel = () => {
+ setConfirmDialogOpen(false);
+ };
+ return (
+
+ );
};
diff --git a/apps/dokploy/components/dashboard/settings/appearance-form.tsx b/apps/dokploy/components/dashboard/settings/appearance-form.tsx
index 85db83772..9f740efd8 100644
--- a/apps/dokploy/components/dashboard/settings/appearance-form.tsx
+++ b/apps/dokploy/components/dashboard/settings/appearance-form.tsx
@@ -38,7 +38,20 @@ const appearanceFormSchema = z.object({
required_error: "Please select a theme.",
}),
language: z.enum(
- ["en", "pl", "ru", "fr", "de", "tr", "kz", "zh-Hant", "zh-Hans", "fa", "ko"],
+ [
+ "en",
+ "pl",
+ "ru",
+ "fr",
+ "de",
+ "tr",
+ "zh-Hant",
+ "kz",
+ "zh-Hans",
+ "fa",
+ "ko",
+ "pt-br",
+ ],
{
required_error: "Please select a language.",
},
@@ -185,8 +198,10 @@ export function AppearanceForm() {
{ label: "简体中文", value: "zh-Hans" },
{ label: "Türkçe", value: "tr" },
{ label: "Қазақ", value: "tr" },
+ { label: "Kazakh", value: "kz" },
{ label: "Persian", value: "fa" },
{ label: "한국어", value: "ko" },
+ { label: "Português", value: "pt-br" },
].map((preset) => (
{preset.label}
diff --git a/apps/dokploy/components/dashboard/settings/web-server/docker-terminal-modal.tsx b/apps/dokploy/components/dashboard/settings/web-server/docker-terminal-modal.tsx
index f38ecf128..ba3253a4a 100644
--- a/apps/dokploy/components/dashboard/settings/web-server/docker-terminal-modal.tsx
+++ b/apps/dokploy/components/dashboard/settings/web-server/docker-terminal-modal.tsx
@@ -1,20 +1,22 @@
+import { Button } from "@/components/ui/button";
import {
- Dialog,
- DialogContent,
- DialogDescription,
- DialogHeader,
- DialogTitle,
- DialogTrigger,
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
} from "@/components/ui/dialog";
import { Label } from "@/components/ui/label";
import {
- Select,
- SelectContent,
- SelectGroup,
- SelectItem,
- SelectLabel,
- SelectTrigger,
- SelectValue,
+ Select,
+ SelectContent,
+ SelectGroup,
+ SelectItem,
+ SelectLabel,
+ SelectTrigger,
+ SelectValue,
} from "@/components/ui/select";
import { api } from "@/utils/api";
import { Loader2 } from "lucide-react";
@@ -23,80 +25,118 @@ import type React from "react";
import { useEffect, useState } from "react";
const Terminal = dynamic(
- () =>
- import("@/components/dashboard/docker/terminal/docker-terminal").then(
- (e) => e.DockerTerminal,
- ),
- {
- ssr: false,
- },
+ () =>
+ import("@/components/dashboard/docker/terminal/docker-terminal").then(
+ (e) => e.DockerTerminal
+ ),
+ {
+ ssr: false,
+ }
);
interface Props {
- appName: string;
- children?: React.ReactNode;
- serverId?: string;
+ appName: string;
+ children?: React.ReactNode;
+ serverId?: string;
}
export const DockerTerminalModal = ({ children, appName, serverId }: Props) => {
- const { data, isLoading } = api.docker.getContainersByAppNameMatch.useQuery(
- {
- appName,
- serverId,
- },
- {
- enabled: !!appName,
- },
- );
- const [containerId, setContainerId] = useState();
+ const { data, isLoading } = api.docker.getContainersByAppNameMatch.useQuery(
+ {
+ appName,
+ serverId,
+ },
+ {
+ enabled: !!appName,
+ }
+ );
+ const [containerId, setContainerId] = useState();
+ const [mainDialogOpen, setMainDialogOpen] = useState(false);
+ const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);
- useEffect(() => {
- if (data && data?.length > 0) {
- setContainerId(data[0]?.containerId);
- }
- }, [data]);
- return (
-
- {children}
-
-
- Docker Terminal
-
- Easy way to access to docker container
-
-
-
-
-
-
-
- );
+ const handleMainDialogOpenChange = (open: boolean) => {
+ if (!open) {
+ setConfirmDialogOpen(true);
+ } else {
+ setMainDialogOpen(true);
+ }
+ };
+
+ const handleConfirm = () => {
+ setConfirmDialogOpen(false);
+ setMainDialogOpen(false);
+ };
+
+ const handleCancel = () => {
+ setConfirmDialogOpen(false);
+ };
+
+ useEffect(() => {
+ if (data && data?.length > 0) {
+ setContainerId(data[0]?.containerId);
+ }
+ }, [data]);
+
+ return (
+
+ {children}
+
+
+ Docker Terminal
+
+ Easy way to access to docker container
+
+
+
+
+
+
+
+
+
+ Are you sure you want to close the terminal?
+
+
+ By clicking the confirm button, the terminal will be closed.
+
+
+
+
+
+
+
+
+
+
+ );
};
diff --git a/apps/dokploy/next-i18next.config.cjs b/apps/dokploy/next-i18next.config.cjs
index d044c0c11..fef1df4a2 100644
--- a/apps/dokploy/next-i18next.config.cjs
+++ b/apps/dokploy/next-i18next.config.cjs
@@ -1,5 +1,7 @@
/** @type {import('next-i18next').UserConfig} */
module.exports = {
+ fallbackLng: "en",
+ keySeparator: false,
i18n: {
defaultLocale: "en",
locales: [
@@ -14,9 +16,8 @@ module.exports = {
"zh-Hans",
"fa",
"ko",
+ "pt-br",
],
localeDetection: false,
},
- fallbackLng: "en",
- keySeparator: false,
};
diff --git a/apps/dokploy/pages/_app.tsx b/apps/dokploy/pages/_app.tsx
index 2f16f8886..511ac93ba 100644
--- a/apps/dokploy/pages/_app.tsx
+++ b/apps/dokploy/pages/_app.tsx
@@ -83,6 +83,7 @@ export default api.withTRPC(
"zh-Hans",
"fa",
"ko",
+ "pt-br",
],
localeDetection: false,
},
diff --git a/apps/dokploy/public/locales/pt-br/common.json b/apps/dokploy/public/locales/pt-br/common.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/apps/dokploy/public/locales/pt-br/common.json
@@ -0,0 +1 @@
+{}
diff --git a/apps/dokploy/public/locales/pt-br/settings.json b/apps/dokploy/public/locales/pt-br/settings.json
new file mode 100644
index 000000000..fc964be6c
--- /dev/null
+++ b/apps/dokploy/public/locales/pt-br/settings.json
@@ -0,0 +1,44 @@
+{
+ "settings.common.save": "Salvar",
+ "settings.server.domain.title": "Domínio do Servidor",
+ "settings.server.domain.description": "Configure o domínio do servidor",
+ "settings.server.domain.form.domain": "Domínio",
+ "settings.server.domain.form.letsEncryptEmail": "Email do Let's Encrypt",
+ "settings.server.domain.form.certificate.label": "Certificado",
+ "settings.server.domain.form.certificate.placeholder": "Selecione um Certificado",
+ "settings.server.domain.form.certificateOptions.none": "Nenhum",
+ "settings.server.domain.form.certificateOptions.letsencrypt": "Let's Encrypt (Padrão)",
+
+ "settings.server.webServer.title": "Servidor web",
+ "settings.server.webServer.description": "Limpar e recarregar servidor web.",
+ "settings.server.webServer.actions": "Ações",
+ "settings.server.webServer.reload": "Recarregar",
+ "settings.server.webServer.watchLogs": "Ver logs",
+ "settings.server.webServer.updateServerIp": "Atualizar IP do Servidor",
+ "settings.server.webServer.server.label": "Servidor",
+ "settings.server.webServer.traefik.label": "Traefik",
+ "settings.server.webServer.traefik.modifyEnv": "Alterar Env",
+ "settings.server.webServer.storage.label": "Armazenamento",
+ "settings.server.webServer.storage.cleanUnusedImages": "Limpar imagens não utilizadas",
+ "settings.server.webServer.storage.cleanUnusedVolumes": "Limpar volumes não utilizados",
+ "settings.server.webServer.storage.cleanStoppedContainers": "Limpar containers parados",
+ "settings.server.webServer.storage.cleanDockerBuilder": "Limpar Docker Builder & System",
+ "settings.server.webServer.storage.cleanMonitoring": "Limpar Monitoramento",
+ "settings.server.webServer.storage.cleanAll": "Limpar Tudo",
+
+ "settings.profile.title": "Conta",
+ "settings.profile.description": "Altere os detalhes do seu perfil aqui.",
+ "settings.profile.email": "Email",
+ "settings.profile.password": "Senha",
+ "settings.profile.avatar": "Avatar",
+
+ "settings.appearance.title": "Aparência",
+ "settings.appearance.description": "Personalize o tema do seu dashboard.",
+ "settings.appearance.theme": "Tema",
+ "settings.appearance.themeDescription": "Selecione um tema para o dashboard",
+ "settings.appearance.themes.light": "Claro",
+ "settings.appearance.themes.dark": "Escuro",
+ "settings.appearance.themes.system": "Automático",
+ "settings.appearance.language": "Linguagem",
+ "settings.appearance.languageDescription": "Selecione o idioma do dashboard"
+}
diff --git a/apps/dokploy/public/templates/triggerdotdev.svg b/apps/dokploy/public/templates/triggerdotdev.svg
new file mode 100644
index 000000000..4e0957f44
--- /dev/null
+++ b/apps/dokploy/public/templates/triggerdotdev.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts
index 878d01763..bbb907a32 100644
--- a/apps/dokploy/templates/templates.ts
+++ b/apps/dokploy/templates/templates.ts
@@ -1,975 +1,990 @@
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: "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.48.1",
- 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: "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.48.1",
+ 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.dev/",
- docs: "https://ryot.dev/docs/getting-started",
- },
- 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),
- },
+ 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.dev/",
+ docs: "https://ryot.dev/docs/getting-started",
+ },
+ 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),
+ },
];
diff --git a/apps/dokploy/templates/triggerdotdev/docker-compose.yml b/apps/dokploy/templates/triggerdotdev/docker-compose.yml
new file mode 100644
index 000000000..f53980277
--- /dev/null
+++ b/apps/dokploy/templates/triggerdotdev/docker-compose.yml
@@ -0,0 +1,107 @@
+x-webapp-env: &webapp-env
+ LOGIN_ORIGIN: &trigger-url ${TRIGGER_PROTOCOL:-http}://${TRIGGER_DOMAIN:-localhost:3040}
+ APP_ORIGIN: *trigger-url
+ DEV_OTEL_EXPORTER_OTLP_ENDPOINT: &trigger-otel ${TRIGGER_PROTOCOL:-http}://${TRIGGER_DOMAIN:-localhost:3040}/otel
+ ELECTRIC_ORIGIN: http://electric:3000
+
+x-worker-env: &worker-env
+ PLATFORM_HOST: webapp
+ PLATFORM_WS_PORT: 3030
+ SECURE_CONNECTION: "false"
+ OTEL_EXPORTER_OTLP_ENDPOINT: *trigger-otel
+
+volumes:
+ postgres-data:
+ redis-data:
+
+networks:
+ webapp:
+
+services:
+ webapp:
+ image: ghcr.io/triggerdotdev/trigger.dev:${TRIGGER_IMAGE_TAG:-v3}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ env_file:
+ - .env
+ environment:
+ <<: *webapp-env
+ ports:
+ - 3000
+ depends_on:
+ - postgres
+ - redis
+ networks:
+ - webapp
+
+ postgres:
+ image: postgres:${POSTGRES_IMAGE_TAG:-16}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ volumes:
+ - postgres-data:/var/lib/postgresql/data/
+ env_file:
+ - .env
+ networks:
+ - webapp
+ ports:
+ - 5432
+ command:
+ - -c
+ - wal_level=logical
+
+ redis:
+ image: redis:${REDIS_IMAGE_TAG:-7}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ volumes:
+ - redis-data:/data
+ networks:
+ - webapp
+ ports:
+ - 6379
+
+ docker-provider:
+ image: ghcr.io/triggerdotdev/provider/docker:${TRIGGER_IMAGE_TAG:-v3}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ user: root
+ networks:
+ - webapp
+ depends_on:
+ - webapp
+ ports:
+ - 9020
+ env_file:
+ - .env
+ environment:
+ <<: *worker-env
+ PLATFORM_SECRET: $PROVIDER_SECRET
+
+ coordinator:
+ image: ghcr.io/triggerdotdev/coordinator:${TRIGGER_IMAGE_TAG:-v3}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ user: root
+ networks:
+ - webapp
+ depends_on:
+ - webapp
+ ports:
+ - 9020
+ env_file:
+ - .env
+ environment:
+ <<: *worker-env
+ PLATFORM_SECRET: $COORDINATOR_SECRET
+
+ electric:
+ image: electricsql/electric:${ELECTRIC_IMAGE_TAG:-latest}
+ restart: ${RESTART_POLICY:-unless-stopped}
+ environment:
+ DATABASE_URL: ${DATABASE_URL}?sslmode=disable
+ networks:
+ - webapp
+ depends_on:
+ - postgres
+ ports:
+ - 3000
diff --git a/apps/dokploy/templates/triggerdotdev/index.ts b/apps/dokploy/templates/triggerdotdev/index.ts
new file mode 100644
index 000000000..9a98b46cc
--- /dev/null
+++ b/apps/dokploy/templates/triggerdotdev/index.ts
@@ -0,0 +1,93 @@
+import { Secrets } from "@/components/ui/secrets";
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateBase64,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const triggerDomain = generateRandomDomain(schema);
+
+ const magicLinkSecret = generateBase64(16);
+ const sessionSecret = generateBase64(16);
+ const encryptionKey = generateBase64(32);
+ const providerSecret = generateBase64(32);
+ const coordinatorSecret = generateBase64(32);
+
+ const dbPassword = generateBase64(24);
+ const dbUser = "triggeruser";
+ const dbName = "triggerdb";
+
+ const domains: DomainSchema[] = [
+ {
+ host: triggerDomain,
+ port: 3000,
+ serviceName: "webapp",
+ },
+ ];
+
+ const envs = [
+ `NODE_ENV=production`,
+ `RUNTIME_PLATFORM=docker-compose`,
+ `V3_ENABLED=true`,
+
+ `# Domain configuration`,
+ `TRIGGER_DOMAIN=${triggerDomain}`,
+ `TRIGGER_PROTOCOL=http`,
+
+ `# Database configuration with secure credentials`,
+ `POSTGRES_USER=${dbUser}`,
+ `POSTGRES_PASSWORD=${dbPassword}`,
+ `POSTGRES_DB=${dbName}`,
+ `DATABASE_URL=postgresql://${dbUser}:${dbPassword}@postgres:5432/${dbName}`,
+
+ `# Secrets`,
+ `MAGIC_LINK_SECRET=${magicLinkSecret}`,
+ `SESSION_SECRET=${sessionSecret}`,
+ `ENCRYPTION_KEY=${encryptionKey}`,
+ `PROVIDER_SECRET=${providerSecret}`,
+ `COORDINATOR_SECRET=${coordinatorSecret}`,
+
+ `# TRIGGER_TELEMETRY_DISABLED=1`,
+ `INTERNAL_OTEL_TRACE_DISABLED=1`,
+ `INTERNAL_OTEL_TRACE_LOGGING_ENABLED=0`,
+
+ `DEFAULT_ORG_EXECUTION_CONCURRENCY_LIMIT=300`,
+ `DEFAULT_ENV_EXECUTION_CONCURRENCY_LIMIT=100`,
+
+ `DIRECT_URL=\${DATABASE_URL}`,
+ `REDIS_HOST=redis`,
+ `REDIS_PORT=6379`,
+ `REDIS_TLS_DISABLED=true`,
+
+ `# If this is set, emails that are not specified won't be able to log in`,
+ `# WHITELISTED_EMAILS="authorized@yahoo.com|authorized@gmail.com"`,
+ `# Accounts with these emails will become admins when signing up and get access to the admin panel`,
+ `# ADMIN_EMAILS="admin@example.com|another-admin@example.com"`,
+
+ `# If this is set, your users will be able to log in via GitHub`,
+ `# AUTH_GITHUB_CLIENT_ID=`,
+ `# AUTH_GITHUB_CLIENT_SECRET=`,
+
+ `# E-mail settings`,
+ `# Ensure the FROM_EMAIL matches what you setup with Resend.com`,
+ `# If these are not set, emails will be printed to the console`,
+ `# FROM_EMAIL=`,
+ `# REPLY_TO_EMAIL=`,
+ `# RESEND_API_KEY=`,
+
+ `# Worker settings`,
+ `HTTP_SERVER_PORT=9020`,
+ `COORDINATOR_HOST=127.0.0.1`,
+ `COORDINATOR_PORT=\${HTTP_SERVER_PORT}`,
+ `# REGISTRY_HOST=\${DEPLOY_REGISTRY_HOST}`,
+ `# REGISTRY_NAMESPACE=\${DEPLOY_REGISTRY_NAMESPACE}`,
+ ];
+
+ return {
+ envs,
+ domains,
+ };
+}
diff --git a/apps/dokploy/utils/hooks/use-locale.ts b/apps/dokploy/utils/hooks/use-locale.ts
index df30b556c..134418fcf 100644
--- a/apps/dokploy/utils/hooks/use-locale.ts
+++ b/apps/dokploy/utils/hooks/use-locale.ts
@@ -12,6 +12,7 @@ const SUPPORTED_LOCALES = [
"zh-Hans",
"fa",
"ko",
+ "pt-br",
] as const;
type Locale = (typeof SUPPORTED_LOCALES)[number];