From 9d6f2df25a1f73e6eb49d576a65197610924ae8b Mon Sep 17 00:00:00 2001 From: Erick Luis Date: Sun, 18 Aug 2024 22:18:45 +0000 Subject: [PATCH 01/12] fix: wrong Docker version in Add Node commands --- .../cluster/nodes/manager/add-manager.tsx | 8 ++++---- .../cluster/nodes/workers/add-worker.tsx | 8 ++++---- apps/dokploy/server/api/routers/cluster.ts | 20 +++++++++++++------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx b/apps/dokploy/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx index f0b9a773..b4c25c88 100644 --- a/apps/dokploy/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx +++ b/apps/dokploy/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx @@ -23,12 +23,12 @@ export const AddManager = () => {
1. Go to your new server and run the following command - curl https://get.docker.com | sh -s -- --version 24.0 + curl https://get.docker.com | sh -s -- --version {data?.version} +
+ + )} + /> + + + + + + + + + + ); +}; diff --git a/apps/dokploy/server/api/routers/settings.ts b/apps/dokploy/server/api/routers/settings.ts index a26de6e3..06323452 100644 --- a/apps/dokploy/server/api/routers/settings.ts +++ b/apps/dokploy/server/api/routers/settings.ts @@ -15,6 +15,7 @@ import { cleanUpSystemPrune, cleanUpUnusedImages, cleanUpUnusedVolumes, + prepareEnvironmentVariables, startService, stopService, } from "@/server/utils/docker/utils"; @@ -47,6 +48,7 @@ import { } from "../services/settings"; import { canAccessToTraefikFiles } from "../services/user"; import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc"; +import { z } from "zod"; export const settingsRouter = createTRPCRouter({ reloadServer: adminProcedure.mutation(async () => { @@ -69,7 +71,9 @@ export const settingsRouter = createTRPCRouter({ toggleDashboard: adminProcedure .input(apiEnableDashboard) .mutation(async ({ input }) => { - await initializeTraefik(input.enableDashboard); + await initializeTraefik({ + enableDashboard: input.enableDashboard, + }); return true; }), @@ -309,4 +313,37 @@ export const settingsRouter = createTRPCRouter({ return openApiDocument; }, ), + readTraefikEnv: adminProcedure.query(async () => { + const { stdout } = await execAsync( + "docker service inspect --format='{{range .Spec.TaskTemplate.ContainerSpec.Env}}{{println .}}{{end}}' dokploy-traefik", + ); + + return stdout.trim(); + }), + + writeTraefikEnv: adminProcedure + .input(z.string()) + .mutation(async ({ input }) => { + const envs = prepareEnvironmentVariables(input); + await initializeTraefik({ + env: envs, + }); + + return true; + }), + haveTraefikDashboardPortEnabled: adminProcedure.query(async () => { + const { stdout } = await execAsync( + "docker service inspect --format='{{json .Endpoint.Ports}}' dokploy-traefik", + ); + + const parsed: any[] = JSON.parse(stdout.trim()); + + for (const port of parsed) { + if (port.PublishedPort === 8080) { + return true; + } + } + + return false; + }), }); diff --git a/apps/dokploy/server/setup/traefik-setup.ts b/apps/dokploy/server/setup/traefik-setup.ts index 2b44cf40..afebf07e 100644 --- a/apps/dokploy/server/setup/traefik-setup.ts +++ b/apps/dokploy/server/setup/traefik-setup.ts @@ -11,7 +11,15 @@ const TRAEFIK_SSL_PORT = Number.parseInt(process.env.TRAEFIK_SSL_PORT ?? "", 10) || 443; const TRAEFIK_PORT = Number.parseInt(process.env.TRAEFIK_PORT ?? "", 10) || 80; -export const initializeTraefik = async (enableDashboard = false) => { +interface TraefikOptions { + enableDashboard?: boolean; + env?: string[]; +} + +export const initializeTraefik = async ({ + enableDashboard = false, + env = [], +}: TraefikOptions = {}) => { const imageName = "traefik:v2.5"; const containerName = "dokploy-traefik"; const settings: CreateServiceOptions = { @@ -19,6 +27,7 @@ export const initializeTraefik = async (enableDashboard = false) => { TaskTemplate: { ContainerSpec: { Image: imageName, + Env: env, Mounts: [ { Type: "bind", From 813ffabb8cec61559d3f6be5d666fd9d02ca0eed Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 18 Aug 2024 23:19:21 -0600 Subject: [PATCH 10/12] refactor: check if the traefik dashboard is enabled --- .../dashboard/settings/web-server.tsx | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/web-server.tsx b/apps/dokploy/components/dashboard/settings/web-server.tsx index 732570cc..c23570f7 100644 --- a/apps/dokploy/components/dashboard/settings/web-server.tsx +++ b/apps/dokploy/components/dashboard/settings/web-server.tsx @@ -28,6 +28,7 @@ import { ShowServerMiddlewareConfig } from "./web-server/show-server-middleware- import { ShowServerTraefikConfig } from "./web-server/show-server-traefik-config"; import { TerminalModal } from "./web-server/terminal-modal"; import { UpdateServer } from "./web-server/update-server"; +import { EditTraefikEnv } from "./web-server/edit-traefik-env"; export const WebServer = () => { const { data, refetch } = api.admin.one.useQuery(); @@ -67,6 +68,9 @@ export const WebServer = () => { const { mutateAsync: updateDockerCleanup } = api.settings.updateDockerCleanup.useMutation(); + const { data: haveTraefikDashboardPortEnabled, refetch: refetchDashboard } = + api.settings.haveTraefikDashboardPortEnabled.useQuery(); + return ( @@ -167,37 +171,38 @@ export const WebServer = () => { View Traefik config + + e.preventDefault()} + className="w-full cursor-pointer space-x-3" + > + Modify Env + + + { await toggleDashboard({ - enableDashboard: true, + enableDashboard: !haveTraefikDashboardPortEnabled, }) .then(async () => { - toast.success("Dashboard Enabled"); + toast.success( + `${haveTraefikDashboardPortEnabled ? "Disabled" : "Enabled"} Dashboard`, + ); + refetchDashboard(); }) .catch(() => { - toast.error("Error to enable Dashboard"); + toast.error( + `${haveTraefikDashboardPortEnabled ? "Disabled" : "Enabled"} Dashboard`, + ); }); }} className="w-full cursor-pointer space-x-3" > - Enable Dashboard - - { - await toggleDashboard({ - enableDashboard: false, - }) - .then(async () => { - toast.success("Dashboard Disabled"); - }) - .catch(() => { - toast.error("Error to disable Dashboard"); - }); - }} - className="w-full cursor-pointer space-x-3" - > - Disable Dashboard + + {haveTraefikDashboardPortEnabled ? "Disable" : "Enable"}{" "} + Dashboard + From f2b6b33b1f9ccc8ea754c4c84514b3261dce86aa Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 18 Aug 2024 23:24:20 -0600 Subject: [PATCH 11/12] chore: lint --- apps/dokploy/components/dashboard/settings/web-server.tsx | 2 +- apps/dokploy/server/api/routers/settings.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/web-server.tsx b/apps/dokploy/components/dashboard/settings/web-server.tsx index c23570f7..b1d99388 100644 --- a/apps/dokploy/components/dashboard/settings/web-server.tsx +++ b/apps/dokploy/components/dashboard/settings/web-server.tsx @@ -22,13 +22,13 @@ import { import { api } from "@/utils/api"; import { toast } from "sonner"; import { DockerTerminalModal } from "./web-server/docker-terminal-modal"; +import { EditTraefikEnv } from "./web-server/edit-traefik-env"; import { ShowMainTraefikConfig } from "./web-server/show-main-traefik-config"; import { ShowModalLogs } from "./web-server/show-modal-logs"; import { ShowServerMiddlewareConfig } from "./web-server/show-server-middleware-config"; import { ShowServerTraefikConfig } from "./web-server/show-server-traefik-config"; import { TerminalModal } from "./web-server/terminal-modal"; import { UpdateServer } from "./web-server/update-server"; -import { EditTraefikEnv } from "./web-server/edit-traefik-env"; export const WebServer = () => { const { data, refetch } = api.admin.one.useQuery(); diff --git a/apps/dokploy/server/api/routers/settings.ts b/apps/dokploy/server/api/routers/settings.ts index 06323452..5c3a4f01 100644 --- a/apps/dokploy/server/api/routers/settings.ts +++ b/apps/dokploy/server/api/routers/settings.ts @@ -38,6 +38,7 @@ import { import { generateOpenApiDocument } from "@dokploy/trpc-openapi"; import { TRPCError } from "@trpc/server"; import { scheduleJob, scheduledJobs } from "node-schedule"; +import { z } from "zod"; import { appRouter } from "../root"; import { findAdmin, updateAdmin } from "../services/admin"; import { @@ -48,7 +49,6 @@ import { } from "../services/settings"; import { canAccessToTraefikFiles } from "../services/user"; import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc"; -import { z } from "zod"; export const settingsRouter = createTRPCRouter({ reloadServer: adminProcedure.mutation(async () => { From afbe42a57725aaa2fa4015741cc65081561df666 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:12:14 -0600 Subject: [PATCH 12/12] Update package.json --- apps/dokploy/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/package.json b/apps/dokploy/package.json index ecc0ff81..1b88677a 100644 --- a/apps/dokploy/package.json +++ b/apps/dokploy/package.json @@ -1,6 +1,6 @@ { "name": "dokploy", - "version": "v0.7.0", + "version": "v0.7.1", "private": true, "license": "Apache-2.0", "type": "module",