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), + }, ];