From 1c02478688f5edd1f614d87c281ef88849cb68fd Mon Sep 17 00:00:00 2001 From: Nicholas Penree Date: Mon, 9 Dec 2024 22:28:13 -0500 Subject: [PATCH] feat: add Logto template --- apps/dokploy/public/templates/logto.png | Bin 0 -> 21075 bytes .../templates/logto/docker-compose.yml | 42 ++++++++++++++++++ apps/dokploy/templates/logto/index.ts | 37 +++++++++++++++ apps/dokploy/templates/templates.ts | 23 ++++++++-- 4 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 apps/dokploy/public/templates/logto.png create mode 100644 apps/dokploy/templates/logto/docker-compose.yml create mode 100644 apps/dokploy/templates/logto/index.ts diff --git a/apps/dokploy/public/templates/logto.png b/apps/dokploy/public/templates/logto.png new file mode 100644 index 0000000000000000000000000000000000000000..c7bfec1d855996429a03bca1b152b262937abcb8 GIT binary patch literal 21075 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/apps/dokploy/templates/logto/docker-compose.yml b/apps/dokploy/templates/logto/docker-compose.yml new file mode 100644 index 00000000..e1f7c46a --- /dev/null +++ b/apps/dokploy/templates/logto/docker-compose.yml @@ -0,0 +1,42 @@ +services: + app: + depends_on: + postgres: + condition: service_healthy + image: svhd/logto:1.22.0 + entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"] + ports: + - 3001 + - 3002 + networks: + - dokploy-network + environment: + TRUST_PROXY_HEADER: 1 + DB_URL: postgres://logto:${LOGTO_POSTGRES_PASSWORD}@postgres:5432/logto + ENDPOINT: ${LOGTO_ENDPOINT} + ADMIN_ENDPOINT: ${LOGTO_ADMIN_ENDPOINT} + volumes: + - logto-connectors:/etc/logto/packages/core/connectors + postgres: + image: postgres:17-alpine + user: postgres + networks: + - dokploy-network + environment: + POSTGRES_USER: logto + POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD} + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready"] + interval: 10s + timeout: 5s + retries: 5 + +networks: + dokploy-network: + external: true + +volumes: + logto-connectors: + postgres-data: diff --git a/apps/dokploy/templates/logto/index.ts b/apps/dokploy/templates/logto/index.ts new file mode 100644 index 00000000..09b099d8 --- /dev/null +++ b/apps/dokploy/templates/logto/index.ts @@ -0,0 +1,37 @@ +import { + type DomainSchema, + type Schema, + type Template, + generatePassword, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const adminDomain = generateRandomDomain(schema); + const postgresPassword = generatePassword(); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 3001, + serviceName: "app", + }, + { + host: adminDomain, + port: 3002, + serviceName: "app", + }, + ]; + + const envs = [ + `LOGTO_ENDPOINT=http://${adminDomain}`, + `LOGTO_ADMIN_ENDPOINT=http://${adminDomain}`, + `LOGTO_POSTGRES_PASSWORD=${postgresPassword}`, + ]; + + return { + domains, + envs, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 79d0b479..d268d6f9 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -1016,8 +1016,8 @@ export const templates: TemplateData[] = [ }, tags: ["browser", "automation"], load: () => import("./browserless/index").then((m) => m.generate), - }, - { + }, + { id: "drawio", name: "draw.io", version: "24.7.17", @@ -1031,8 +1031,8 @@ export const templates: TemplateData[] = [ }, tags: ["drawing", "diagrams"], load: () => import("./drawio/index").then((m) => m.generate), - }, - { + }, + { id: "kimai", name: "Kimai", version: "2.26.0", @@ -1047,4 +1047,19 @@ export const templates: TemplateData[] = [ tags: ["invoice", "business", "finance"], load: () => import("./kimai/index").then((m) => m.generate), }, + { + id: "logto", + name: "Logto", + version: "1.22.0", + description: + "Logto is an open-source Identity and Access Management (IAM) platform designed to streamline Customer Identity and Access Management (CIAM) and Workforce Identity Management.", + logo: "logto.png", + links: { + github: "https://github.com/logto-io/logto", + website: "https://logto.io/", + docs: "https://docs.logto.io/introduction", + }, + tags: ["identity", "auth"], + load: () => import("./logto/index").then((m) => m.generate), + }, ];