diff --git a/apps/dokploy/components/layouts/side.tsx b/apps/dokploy/components/layouts/side.tsx
index 9f412b8e..fe820c2b 100644
--- a/apps/dokploy/components/layouts/side.tsx
+++ b/apps/dokploy/components/layouts/side.tsx
@@ -17,7 +17,7 @@ import {
Forward,
GalleryVerticalEnd,
GitBranch,
- Heart,
+ HeartIcon,
KeyRound,
type LucideIcon,
Package,
@@ -87,7 +87,7 @@ interface NavItem {
interface ExternalLink {
name: string;
url: string;
- icon: LucideIcon;
+ icon: React.ComponentType<{ className?: string }>;
}
const data = {
@@ -212,17 +212,6 @@ const data = {
// url: "/dashboard/settings/notifications",
// },
// ],
- // },
- // {
- // title: "Appearance",
- // icon: Frame,
- // items: [
- // {
- // title: "Theme",
- // url: "/dashboard/settings/appearance",
- // },
- // ],
- // },
] as NavItem[],
settings: [
{
@@ -312,13 +301,8 @@ const data = {
isActive: false,
},
- // {
- // title: "Appearance",
- // url: "/dashboard/settings/appearance",
- // icon: Frame,
- // },
] as NavItem[],
- projects: [
+ help: [
{
name: "Documentation",
url: "https://docs.dokploy.com/docs/core",
@@ -332,19 +316,10 @@ const data = {
{
name: "Sponsor",
url: "https://opencollective.com/dokploy",
- icon: Heart,
+ icon: ({ className }) => (
+
+ ),
},
-
- // {
- // name: "Sales & Marketing",
- // url: "#",
- // icon: PieChart,
- // },
- // {
- // name: "Travel",
- // url: "#",
- // icon: Map,
- // },
] as ExternalLink[],
};
@@ -652,13 +627,20 @@ export default function Page({ children }: Props) {
Extra
- {data.projects.map((item) => (
+ {data.help.map((item: ExternalLink) => (
-
-
+
+
+
+
{item.name}
-
+
))}
diff --git a/apps/dokploy/pages/dashboard/project/[projectId]/services/mongo/[mongoId].tsx b/apps/dokploy/pages/dashboard/project/[projectId]/services/mongo/[mongoId].tsx
index dfc00366..49dcfa65 100644
--- a/apps/dokploy/pages/dashboard/project/[projectId]/services/mongo/[mongoId].tsx
+++ b/apps/dokploy/pages/dashboard/project/[projectId]/services/mongo/[mongoId].tsx
@@ -165,10 +165,10 @@ const Mongo = (
router.push(
`/dashboard/project/${data?.projectId}`,
);
- toast.success("Postgres deleted successfully");
+ toast.success("Mongo deleted successfully");
})
.catch(() => {
- toast.error("Error deleting the postgres");
+ toast.error("Error deleting the mongo");
});
}}
>
diff --git a/apps/dokploy/public/templates/cloudflared.svg b/apps/dokploy/public/templates/cloudflared.svg
new file mode 100644
index 00000000..5be105f5
--- /dev/null
+++ b/apps/dokploy/public/templates/cloudflared.svg
@@ -0,0 +1,33 @@
+
\ No newline at end of file
diff --git a/apps/dokploy/templates/cloudflared/docker-compose.yml b/apps/dokploy/templates/cloudflared/docker-compose.yml
new file mode 100644
index 00000000..d9fc2741
--- /dev/null
+++ b/apps/dokploy/templates/cloudflared/docker-compose.yml
@@ -0,0 +1,18 @@
+services:
+ cloudflared:
+ image: 'cloudflare/cloudflared:latest'
+ environment:
+ # Don't forget to set this in your Dokploy Environment
+ - 'TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}'
+ network_mode: host
+ restart: unless-stopped
+ command: [
+ "tunnel",
+
+ # More tunnel run parameters here:
+ # https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/configure-tunnels/tunnel-run-parameters/
+ "--no-autoupdate",
+ #"--protocol", "http2",
+
+ "run"
+ ]
diff --git a/apps/dokploy/templates/cloudflared/index.ts b/apps/dokploy/templates/cloudflared/index.ts
new file mode 100644
index 00000000..661fa31d
--- /dev/null
+++ b/apps/dokploy/templates/cloudflared/index.ts
@@ -0,0 +1,9 @@
+import type { Schema, Template } from "../utils";
+
+export function generate(schema: Schema): Template {
+ const envs = [`CLOUDFLARE_TUNNEL_TOKEN=""`];
+
+ return {
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts
index 350d316b..be9076a0 100644
--- a/apps/dokploy/templates/templates.ts
+++ b/apps/dokploy/templates/templates.ts
@@ -1253,5 +1253,22 @@ export const templates: TemplateData[] = [
},
tags: ["backend", "chat", "communication", "matrix", "server"],
load: () => import("./conduwuit/index").then((m) => m.generate),
+ },
+ {
+ id: "cloudflared",
+ name: "Cloudflared",
+ version: "latest",
+ description:
+ "A lightweight daemon that securely connects local services to the internet through Cloudflare Tunnel.",
+ logo: "cloudflared.svg",
+ links: {
+ github: "https://github.com/cloudflare/cloudflared",
+ website:
+ "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/",
+ docs: "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/",
+ },
+ tags: ["cloud", "networking", "security", "tunnel"],
+ load: () => import("./cloudflared/index").then((m) => m.generate),
+
},
];