diff --git a/apps/dokploy/public/templates/typebot.svg b/apps/dokploy/public/templates/typebot.svg new file mode 100644 index 00000000..83d04de2 --- /dev/null +++ b/apps/dokploy/public/templates/typebot.svg @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 5ed07e20..eca30ee5 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -468,4 +468,18 @@ export const templates: TemplateData[] = [ tags: ["analytics", "self-hosted"], load: () => import("./aptabase/index").then((m) => m.generate), }, + { + id: "typebot", + name: "Typebot", + version: "2.27.0", + description: "Typebot is an open-source chatbot builder platform.", + logo: "typebot.svg", + links: { + github: "https://github.com/baptisteArno/typebot.io", + website: "https://typebot.io/", + docs: "https://docs.typebot.io/get-started/introduction", + }, + tags: ["chatbot", "builder", "open-source"], + load: () => import("./typebot/index").then((m) => m.generate), + }, ]; diff --git a/apps/dokploy/templates/typebot/docker-compose.yml b/apps/dokploy/templates/typebot/docker-compose.yml new file mode 100644 index 00000000..739793fe --- /dev/null +++ b/apps/dokploy/templates/typebot/docker-compose.yml @@ -0,0 +1,49 @@ +version: '3.3' + +volumes: + db-data: + +services: + typebot-db: + image: postgres:14-alpine + restart: always + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: typebot + POSTGRES_DB: typebot + POSTGRES_PASSWORD: typebot + networks: + - dokploy-network + + typebot-builder: + image: baptistearno/typebot-builder:2.27 + restart: always + depends_on: + - typebot-db + environment: + ENCRYPTION_SECRET: '${ENCRYPTION_SECRET}' + DATABASE_URL: 'postgresql://typebot:typebot@typebot-db:5432/typebot' + NEXTAUTH_URL: '${NEXTAUTH_URL}' + NEXT_PUBLIC_VIEWER_URL: '${NEXT_PUBLIC_VIEWER_URL}' + ADMIN_EMAIL: '${ADMIN_EMAIL}' + SMTP_HOST: '${SMTP_HOST}' + NEXT_PUBLIC_SMTP_FROM: '${NEXT_PUBLIC_SMTP_FROM}' + SMTP_USERNAME: '${SMTP_USERNAME}' + SMTP_PASSWORD: '${SMTP_PASSWORD}' + DEFAULT_WORKSPACE_PLAN: '${DEFAULT_WORKSPACE_PLAN}' + + typebot-viewer: + image: baptistearno/typebot-viewer:2.27.0 + restart: always + environment: + ENCRYPTION_SECRET: '${ENCRYPTION_SECRET}' + DATABASE_URL: postgresql://typebot:typebot@typebot-db:5432/typebot + NEXTAUTH_URL: '${NEXTAUTH_URL}' + NEXT_PUBLIC_VIEWER_URL: '${NEXT_PUBLIC_VIEWER_URL}' + ADMIN_EMAIL: '${ADMIN_EMAIL}' + SMTP_HOST: '${SMTP_HOST}' + NEXT_PUBLIC_SMTP_FROM: '${NEXT_PUBLIC_SMTP_FROM}' + SMTP_USERNAME: '${SMTP_USERNAME}' + SMTP_PASSWORD: '${SMTP_PASSWORD}' + DEFAULT_WORKSPACE_PLAN: '${DEFAULT_WORKSPACE_PLAN}' \ No newline at end of file diff --git a/apps/dokploy/templates/typebot/index.ts b/apps/dokploy/templates/typebot/index.ts new file mode 100644 index 00000000..87a7fe83 --- /dev/null +++ b/apps/dokploy/templates/typebot/index.ts @@ -0,0 +1,44 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const builderDomain = generateRandomDomain(schema); + const viewerDomain = generateRandomDomain(schema); + const encryptionSecret = generateBase64(24); + + const domains: DomainSchema[] = [ + { + host: builderDomain, + port: 3000, + serviceName: "typebot-builder", + }, + { + host: viewerDomain, + port: 3000, + serviceName: "typebot-viewer", + }, + ]; + + const envs = [ + `ENCRYPTION_SECRET=${encryptionSecret}`, + `NEXTAUTH_URL=http://${builderDomain}`, + `NEXT_PUBLIC_VIEWER_URL=http://${viewerDomain}`, + "ADMIN_EMAIL=typebot@example.com", + "SMTP_HOST='Fill'", + "SMTP_PORT=25", + "SMTP_USERNAME='Fill'", + "SMTP_PASSWORD='Fill'", + "NEXT_PUBLIC_SMTP_FROM=typebot@example.com", + "DEFAULT_WORKSPACE_PLAN=UNLIMITED", + ]; + + return { + envs, + domains, + }; +}