From 384fdd01d69941a7be572706e069ce65b51b1efc Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 16 Jan 2026 01:05:40 -0600 Subject: [PATCH 1/2] feat(server): add monitoring configuration for cloud setup --- packages/server/src/setup/server-setup.ts | 41 +++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/server/src/setup/server-setup.ts b/packages/server/src/setup/server-setup.ts index 7508fadea..376855e1d 100644 --- a/packages/server/src/setup/server-setup.ts +++ b/packages/server/src/setup/server-setup.ts @@ -1,10 +1,14 @@ import path from "node:path"; -import { paths } from "@dokploy/server/constants"; +import { IS_CLOUD, paths } from "@dokploy/server/constants"; +import { getDokployUrl } from "@dokploy/server/services/admin"; import { createServerDeployment, updateDeploymentStatus, } from "@dokploy/server/services/deployment"; -import { findServerById } from "@dokploy/server/services/server"; +import { + findServerById, + updateServerById, +} from "@dokploy/server/services/server"; import { getDefaultMiddlewares, getDefaultServerTraefikConfig, @@ -16,6 +20,7 @@ import { import slug from "slugify"; import { Client } from "ssh2"; import { recreateDirectory } from "../utils/filesystem/directory"; +import { setupMonitoring } from "./monitoring-setup"; export const slugify = (text: string | undefined) => { if (!text) { @@ -59,6 +64,38 @@ export const serverSetup = async ( ); await installRequirements(serverId, onData); + if (IS_CLOUD) { + onData?.("\nConfiguring Monitoring: 🔄\n"); + + // Generate token and configure monitoring + const generateToken = () => { + const array = new Uint8Array(64); + crypto.getRandomValues(array); + return Array.from(array, (byte) => + byte.toString(16).padStart(2, "0"), + ).join(""); + }; + + const baseUrl = await getDokployUrl(); + const token = generateToken(); + const urlCallback = `${baseUrl}/api/trpc/notification.receiveNotification`; + + // Update server with monitoring configuration + await updateServerById(serverId, { + metricsConfig: { + server: { + ...server.metricsConfig.server, + token: token, + urlCallback: urlCallback, + }, + containers: server.metricsConfig.containers, + }, + }); + + await setupMonitoring(serverId); + onData?.("\nMonitoring Configured: ✅\n"); + } + await updateDeploymentStatus(deployment.deploymentId, "done"); onData?.("\nSetup Server: ✅\n"); From 79655b567368b03b5a2e3474491f16b55ea9574d Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 16 Jan 2026 01:07:17 -0600 Subject: [PATCH 2/2] refactor(server): move token generation function to a separate utility for better organization --- packages/server/src/setup/server-setup.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/server/src/setup/server-setup.ts b/packages/server/src/setup/server-setup.ts index 376855e1d..32e5e4a7e 100644 --- a/packages/server/src/setup/server-setup.ts +++ b/packages/server/src/setup/server-setup.ts @@ -22,6 +22,14 @@ import { Client } from "ssh2"; import { recreateDirectory } from "../utils/filesystem/directory"; import { setupMonitoring } from "./monitoring-setup"; +const generateToken = () => { + const array = new Uint8Array(64); + crypto.getRandomValues(array); + return Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join( + "", + ); +}; + export const slugify = (text: string | undefined) => { if (!text) { return ""; @@ -67,15 +75,6 @@ export const serverSetup = async ( if (IS_CLOUD) { onData?.("\nConfiguring Monitoring: 🔄\n"); - // Generate token and configure monitoring - const generateToken = () => { - const array = new Uint8Array(64); - crypto.getRandomValues(array); - return Array.from(array, (byte) => - byte.toString(16).padStart(2, "0"), - ).join(""); - }; - const baseUrl = await getDokployUrl(); const token = generateToken(); const urlCallback = `${baseUrl}/api/trpc/notification.receiveNotification`;