From b5da9291b49e185197abf140b8774e043e9f19d8 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 18 Aug 2024 23:18:54 -0600 Subject: [PATCH 01/11] feat: add enviroment variables editor to traefik --- .../settings/web-server/edit-traefik-env.tsx | 146 ++++++++++++++++++ apps/dokploy/server/api/routers/settings.ts | 39 ++++- apps/dokploy/server/setup/traefik-setup.ts | 11 +- 3 files changed, 194 insertions(+), 2 deletions(-) create mode 100644 apps/dokploy/components/dashboard/settings/web-server/edit-traefik-env.tsx diff --git a/apps/dokploy/components/dashboard/settings/web-server/edit-traefik-env.tsx b/apps/dokploy/components/dashboard/settings/web-server/edit-traefik-env.tsx new file mode 100644 index 00000000..c0504ab4 --- /dev/null +++ b/apps/dokploy/components/dashboard/settings/web-server/edit-traefik-env.tsx @@ -0,0 +1,146 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; + +const schema = z.object({ + env: z.string(), +}); + +type Schema = z.infer; + +interface Props { + children?: React.ReactNode; +} + +export const EditTraefikEnv = ({ children }: Props) => { + const [canEdit, setCanEdit] = useState(true); + + const { data } = api.settings.readTraefikEnv.useQuery(); + + const { mutateAsync, isLoading, error, isError } = + api.settings.writeTraefikEnv.useMutation(); + + const form = useForm({ + defaultValues: { + env: data || "", + }, + disabled: canEdit, + resolver: zodResolver(schema), + }); + + useEffect(() => { + if (data) { + form.reset({ + env: data || "", + }); + } + }, [form, form.reset, data]); + + const onSubmit = async (data: Schema) => { + await mutateAsync(data.env) + .then(async () => { + toast.success("Traefik Env Updated"); + }) + .catch(() => { + toast.error("Error to update the traefik env"); + }); + }; + + return ( + + {children} + + + Update Traefik Env + Update the traefik env + + {isError && {error?.message}} + +
+ +
+ ( + + Env + + + + +
+											
+										
+
+ +
+
+ )} + /> +
+
+ + + + + +
+
+ ); +}; 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 02/11] 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 03/11] 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 04/11] 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", From ff3e3513ef3727085a5ea465c0fb28073b00c20f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:26:44 -0600 Subject: [PATCH 05/11] chore: add cloudblast io sponsor --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cfec6692..668f40bb 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ For detailed documentation, visit [docs.dokploy.com](https://docs.dokploy.com).
Lightspeed.run +Lightspeed.run
### Community Backers 🤝 From 5a3d0f82883b07beac1c19fe59a0761872e1966f Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Wed, 21 Aug 2024 16:31:02 -0400 Subject: [PATCH 06/11] feat: add aptabase template --- apps/dokploy/public/templates/aptabase.svg | 5 +++ .../templates/aptabase/docker-compose.yml | 45 +++++++++++++++++++ apps/dokploy/templates/aptabase/index.ts | 36 +++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++++++ 4 files changed, 101 insertions(+) create mode 100644 apps/dokploy/public/templates/aptabase.svg create mode 100644 apps/dokploy/templates/aptabase/docker-compose.yml create mode 100644 apps/dokploy/templates/aptabase/index.ts diff --git a/apps/dokploy/public/templates/aptabase.svg b/apps/dokploy/public/templates/aptabase.svg new file mode 100644 index 00000000..3cb71ecf --- /dev/null +++ b/apps/dokploy/public/templates/aptabase.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml new file mode 100644 index 00000000..057aec9d --- /dev/null +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -0,0 +1,45 @@ +services: + aptabase_db: + container_name: aptabase_db + image: postgres:15-alpine + restart: always + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: aptabase + POSTGRES_PASSWORD: sTr0NGp4ssw0rd + + aptabase_events_db: + container_name: aptabase_events_db + image: clickhouse/clickhouse-server:23.8.16.16-alpine + restart: always + volumes: + - events-db-data:/var/lib/clickhouse + environment: + CLICKHOUSE_USER: aptabase + CLICKHOUSE_PASSWORD: sTr0NGp4ssw0rd + ulimits: + nofile: + soft: 262144 + hard: 262144 + + aptabase: + container_name: aptabase_app + image: ghcr.io/aptabase/aptabase:main + restart: always + depends_on: + - aptabase_events_db + - aptabase_db + ports: + - 8000:8080 + environment: + BASE_URL: http://localhost:8000 # replace with your ip or domain, including port if needed + AUTH_SECRET: c4rI4x8kz5DgKJ1is5Eiu9bNncSQ6ROD # get a strong secret from https://randomkeygen.com/ + DATABASE_URL: Server=aptabase_db;Port=5432;User Id=aptabase;Password=sTr0NGp4ssw0rd;Database=aptabase + CLICKHOUSE_URL: Host=aptabase_events_db;Port=8123;Username=aptabase;Password=sTr0NGp4ssw0rd + +volumes: + db-data: + driver: local + events-db-data: + driver: local diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts new file mode 100644 index 00000000..6a6cb527 --- /dev/null +++ b/apps/dokploy/templates/aptabase/index.ts @@ -0,0 +1,36 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const authSecret = generateBase64(32); + const postgresPassword = generateBase64(16); + const clickhousePassword = generateBase64(16); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8000, + serviceName: "aptabase", + }, + ]; + + const envs = [ + `BASE_URL=http://${mainDomain}`, + `AUTH_SECRET=${authSecret}`, + `POSTGRES_PASSWORD=${postgresPassword}`, + `CLICKHOUSE_PASSWORD=${clickhousePassword}`, + `DATABASE_URL=Server=aptabase_db;Port=5432;User Id=aptabase;Password=${postgresPassword};Database=aptabase`, + `CLICKHOUSE_URL=Host=aptabase_events_db;Port=8123;Username=aptabase;Password=${clickhousePassword}`, + ]; + + return { + envs, + domains, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index bf783181..336ab400 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -423,4 +423,19 @@ export const templates: TemplateData[] = [ tags: ["chat"], load: () => import("./soketi/index").then((m) => m.generate), }, + { + id: "aptabase", + name: "Aptabase", + version: "v1.0.0", + description: "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", + logo: "aptabase.svg", + links: { + github: "https://github.com/aptabase/aptabase", + website: "https://aptabase.com/", + docs: "https://github.com/aptabase/aptabase/blob/main/README.md", + }, + tags: ["analytics", "self-hosted"], + load: () => import("./aptabase/index").then((m) => m.generate), + }, + ]; From 53b24534a8da942699aa4975d74303714773151a Mon Sep 17 00:00:00 2001 From: Freilynbp03 Date: Wed, 21 Aug 2024 21:45:14 -0400 Subject: [PATCH 07/11] feat(template): add Aptabase template with ClickHouse and PostgreSQL --- .../templates/aptabase/docker-compose.yml | 18 ++++++++++++++++-- apps/dokploy/templates/aptabase/index.ts | 8 ++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 057aec9d..357c99d0 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -8,6 +8,13 @@ services: environment: POSTGRES_USER: aptabase POSTGRES_PASSWORD: sTr0NGp4ssw0rd + networks: + - dokploy-network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U aptabase"] + interval: 10s + timeout: 5s + retries: 5 aptabase_events_db: container_name: aptabase_events_db @@ -22,6 +29,13 @@ services: nofile: soft: 262144 hard: 262144 + networks: + - dokploy-network + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8123 || exit 1"] + interval: 10s + timeout: 5s + retries: 5 aptabase: container_name: aptabase_app @@ -33,8 +47,8 @@ services: ports: - 8000:8080 environment: - BASE_URL: http://localhost:8000 # replace with your ip or domain, including port if needed - AUTH_SECRET: c4rI4x8kz5DgKJ1is5Eiu9bNncSQ6ROD # get a strong secret from https://randomkeygen.com/ + BASE_URL: http://${APTABASE_HOST} + AUTH_SECRET: ${AUTH_SECRET} DATABASE_URL: Server=aptabase_db;Port=5432;User Id=aptabase;Password=sTr0NGp4ssw0rd;Database=aptabase CLICKHOUSE_URL: Host=aptabase_events_db;Port=8123;Username=aptabase;Password=sTr0NGp4ssw0rd diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 6a6cb527..8d793d68 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -21,12 +21,8 @@ export function generate(schema: Schema): Template { ]; const envs = [ - `BASE_URL=http://${mainDomain}`, - `AUTH_SECRET=${authSecret}`, - `POSTGRES_PASSWORD=${postgresPassword}`, - `CLICKHOUSE_PASSWORD=${clickhousePassword}`, - `DATABASE_URL=Server=aptabase_db;Port=5432;User Id=aptabase;Password=${postgresPassword};Database=aptabase`, - `CLICKHOUSE_URL=Host=aptabase_events_db;Port=8123;Username=aptabase;Password=${clickhousePassword}`, + `APTABASE_HOST=${mainDomain}`, + `AUTH_SECRET=${authSecret}` ]; return { From ac28aff022c75afa538d1511a7538e24852cc56a Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 08:38:51 -0400 Subject: [PATCH 08/11] Apply suggestions from code review Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- apps/dokploy/templates/aptabase/docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 357c99d0..1e333ebd 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -44,8 +44,6 @@ services: depends_on: - aptabase_events_db - aptabase_db - ports: - - 8000:8080 environment: BASE_URL: http://${APTABASE_HOST} AUTH_SECRET: ${AUTH_SECRET} From b8741f1702fa6c108a862a69d3a9b763e1d0ecfe Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 08:41:12 -0400 Subject: [PATCH 09/11] feat(template): aptabase set port 8080 --- apps/dokploy/templates/aptabase/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 8d793d68..1075485c 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -15,7 +15,7 @@ export function generate(schema: Schema): Template { const domains: DomainSchema[] = [ { host: mainDomain, - port: 8000, + port: 8080, serviceName: "aptabase", }, ]; From 137edf1250607b582a4f5a85a38e60ae0750d826 Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 15:12:03 -0400 Subject: [PATCH 10/11] feat: remove container_name prop --- apps/dokploy/templates/aptabase/docker-compose.yml | 6 ------ apps/dokploy/templates/aptabase/index.ts | 2 -- 2 files changed, 8 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 1e333ebd..934fd1ee 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -1,6 +1,5 @@ services: aptabase_db: - container_name: aptabase_db image: postgres:15-alpine restart: always volumes: @@ -17,7 +16,6 @@ services: retries: 5 aptabase_events_db: - container_name: aptabase_events_db image: clickhouse/clickhouse-server:23.8.16.16-alpine restart: always volumes: @@ -38,12 +36,8 @@ services: retries: 5 aptabase: - container_name: aptabase_app image: ghcr.io/aptabase/aptabase:main restart: always - depends_on: - - aptabase_events_db - - aptabase_db environment: BASE_URL: http://${APTABASE_HOST} AUTH_SECRET: ${AUTH_SECRET} diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 1075485c..bc83cc81 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -9,8 +9,6 @@ import { export function generate(schema: Schema): Template { const mainDomain = generateRandomDomain(schema); const authSecret = generateBase64(32); - const postgresPassword = generateBase64(16); - const clickhousePassword = generateBase64(16); const domains: DomainSchema[] = [ { From 1e6e85ed5b2569a06f19d548bd39f00170aa844d Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 16:08:48 -0400 Subject: [PATCH 11/11] style: run code formatting on two files --- apps/dokploy/templates/aptabase/index.ts | 41 +++++++++++------------- apps/dokploy/templates/templates.ts | 4 +-- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index bc83cc81..38b077ae 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -1,30 +1,27 @@ import { - type DomainSchema, - type Schema, - type Template, - generateBase64, - generateRandomDomain, + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, } from "../utils"; export function generate(schema: Schema): Template { - const mainDomain = generateRandomDomain(schema); - const authSecret = generateBase64(32); + const mainDomain = generateRandomDomain(schema); + const authSecret = generateBase64(32); - const domains: DomainSchema[] = [ - { - host: mainDomain, - port: 8080, - serviceName: "aptabase", - }, - ]; + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8080, + serviceName: "aptabase", + }, + ]; - const envs = [ - `APTABASE_HOST=${mainDomain}`, - `AUTH_SECRET=${authSecret}` - ]; + const envs = [`APTABASE_HOST=${mainDomain}`, `AUTH_SECRET=${authSecret}`]; - return { - envs, - domains, - }; + return { + envs, + domains, + }; } diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 336ab400..205a4e46 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -427,7 +427,8 @@ export const templates: TemplateData[] = [ id: "aptabase", name: "Aptabase", version: "v1.0.0", - description: "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", + description: + "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", logo: "aptabase.svg", links: { github: "https://github.com/aptabase/aptabase", @@ -437,5 +438,4 @@ export const templates: TemplateData[] = [ tags: ["analytics", "self-hosted"], load: () => import("./aptabase/index").then((m) => m.generate), }, - ];