From c182755591dcad5f6d035a25b5753434c645b7bb Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 8 May 2026 19:22:00 -0600 Subject: [PATCH 1/4] feat(templates): support isolated = false opt-out in template.toml Templates using network_mode: host (e.g. cloudflared) can now declare isolated = false in their [config] section to prevent Dokploy from injecting networks into the compose, which would cause a Docker error. Default behavior (isolated = true) is unchanged for all existing templates. Fixes #4366 --- apps/dokploy/server/api/routers/compose.ts | 2 +- packages/server/src/templates/github.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts index 0398b6ba9..254818478 100644 --- a/apps/dokploy/server/api/routers/compose.ts +++ b/apps/dokploy/server/api/routers/compose.ts @@ -640,7 +640,7 @@ export const composeRouter = createTRPCRouter({ name: input.id, sourceType: "raw", appName: appName, - isolatedDeployment: true, + isolatedDeployment: template.config.config?.isolated !== false, }); await addNewService(ctx, compose.composeId); diff --git a/packages/server/src/templates/github.ts b/packages/server/src/templates/github.ts index da697d80c..5b5c4ade8 100644 --- a/packages/server/src/templates/github.ts +++ b/packages/server/src/templates/github.ts @@ -21,6 +21,7 @@ export interface CompleteTemplate { [key: string]: string; }; config: { + isolated?: boolean; domains: Array<{ serviceName: string; port: number; From e8b3d7ba7dceb15aa20295fc61eeda689e030dd9 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 8 May 2026 19:26:34 -0600 Subject: [PATCH 2/4] test(templates): add unit tests for isolated deployment config field --- .../templates/config.template.test.ts | 45 +++++++++++++++++++ packages/server/src/templates/processors.ts | 1 + 2 files changed, 46 insertions(+) diff --git a/apps/dokploy/__test__/templates/config.template.test.ts b/apps/dokploy/__test__/templates/config.template.test.ts index 202abdf2d..52be798d7 100644 --- a/apps/dokploy/__test__/templates/config.template.test.ts +++ b/apps/dokploy/__test__/templates/config.template.test.ts @@ -494,4 +494,49 @@ describe("processTemplate", () => { expect(result.mounts).toHaveLength(1); }); }); + + describe("isolated deployment config", () => { + it("should default to isolated=true when not specified", () => { + const template: CompleteTemplate = { + metadata: {} as any, + variables: {}, + config: { + domains: [], + env: {}, + }, + }; + + expect(template.config.isolated).toBeUndefined(); + // undefined !== false => isolatedDeployment = true + expect(template.config.isolated !== false).toBe(true); + }); + + it("should be isolated when isolated=true is explicitly set", () => { + const template: CompleteTemplate = { + metadata: {} as any, + variables: {}, + config: { + isolated: true, + domains: [], + env: {}, + }, + }; + + expect(template.config.isolated !== false).toBe(true); + }); + + it("should disable isolated deployment when isolated=false", () => { + const template: CompleteTemplate = { + metadata: {} as any, + variables: {}, + config: { + isolated: false, + domains: [], + env: {}, + }, + }; + + expect(template.config.isolated !== false).toBe(false); + }); + }); }); diff --git a/packages/server/src/templates/processors.ts b/packages/server/src/templates/processors.ts index ce1553095..bd170e104 100644 --- a/packages/server/src/templates/processors.ts +++ b/packages/server/src/templates/processors.ts @@ -45,6 +45,7 @@ export interface CompleteTemplate { }; variables: Record; config: { + isolated?: boolean; domains: DomainConfig[]; env: | Record From ffd51cf32fb081b2fa406eea4c57a0b000d43d01 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 8 May 2026 19:32:05 -0600 Subject: [PATCH 3/4] feat(templates): add isolated deployment configuration to CompleteTemplate Introduced an optional 'isolated' boolean property in the CompleteTemplate interface to manage isolated deployment settings. Added tests to verify default behavior (isolated=true) and explicit settings (isolated=true/false) in the deployment configuration. This change enhances template flexibility for deployment configurations. --- apps/dokploy/__test__/templates/helpers.template.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/__test__/templates/helpers.template.test.ts b/apps/dokploy/__test__/templates/helpers.template.test.ts index f2af2717b..d8d444b72 100644 --- a/apps/dokploy/__test__/templates/helpers.template.test.ts +++ b/apps/dokploy/__test__/templates/helpers.template.test.ts @@ -31,7 +31,7 @@ describe("helpers functions", () => { expect(domain.startsWith(`${mockSchema.projectName}-`)).toBeTruthy(); expect( domain.endsWith( - `${mockSchema.serverIp.replaceAll(".", "-")}.traefik.me`, + `${mockSchema.serverIp.replaceAll(".", "-")}.sslip.io`, ), ).toBeTruthy(); }); From 72f5d711c891c86ee4e83a9eae6e7114efe0d11e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 9 May 2026 01:32:34 +0000 Subject: [PATCH 4/4] [autofix.ci] apply automated fixes --- apps/dokploy/__test__/templates/helpers.template.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/dokploy/__test__/templates/helpers.template.test.ts b/apps/dokploy/__test__/templates/helpers.template.test.ts index d8d444b72..e95bbf072 100644 --- a/apps/dokploy/__test__/templates/helpers.template.test.ts +++ b/apps/dokploy/__test__/templates/helpers.template.test.ts @@ -30,9 +30,7 @@ describe("helpers functions", () => { const domain = processValue("${domain}", {}, mockSchema); expect(domain.startsWith(`${mockSchema.projectName}-`)).toBeTruthy(); expect( - domain.endsWith( - `${mockSchema.serverIp.replaceAll(".", "-")}.sslip.io`, - ), + domain.endsWith(`${mockSchema.serverIp.replaceAll(".", "-")}.sslip.io`), ).toBeTruthy(); }); });