From bab93f8145f5704f6a0ebbebde8ae426295a2615 Mon Sep 17 00:00:00 2001 From: Radu Ciocan Date: Sat, 6 Jul 2024 14:29:32 +0100 Subject: [PATCH 01/12] feat: doublezero template --- public/templates/doublezero.svg | 4 +++ templates/doublezero/docker-compose.yml | 33 +++++++++++++++++++++++++ templates/doublezero/index.ts | 26 +++++++++++++++++++ templates/templates.ts | 14 +++++++++++ 4 files changed, 77 insertions(+) create mode 100644 public/templates/doublezero.svg create mode 100644 templates/doublezero/docker-compose.yml create mode 100644 templates/doublezero/index.ts diff --git a/public/templates/doublezero.svg b/public/templates/doublezero.svg new file mode 100644 index 000000000..e28cbeb09 --- /dev/null +++ b/public/templates/doublezero.svg @@ -0,0 +1,4 @@ + + + + diff --git a/templates/doublezero/docker-compose.yml b/templates/doublezero/docker-compose.yml new file mode 100644 index 000000000..c124a0e35 --- /dev/null +++ b/templates/doublezero/docker-compose.yml @@ -0,0 +1,33 @@ +services: + doublezero: + restart: always + image: liltechnomancer/double-zero:latest + ports: + - 4000:4000 + networks: + - dokploy-network + volumes: + - db-data:/var/lib/doublezero/data + environment: + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} + AWS_REGION: ${AWS_REGION} + SQS_URL: ${SQS_URL} + SYSTEM_EMAIL: ${SYSTEM_EMAIL} + SECRET_KEY_BASE: ${SECRET_KEY_BASE} + PHX_HOST: ${DOUBLEZERO_HOST} + DATABASE_PATH: ./00.db + labels: + - "traefik.enable=true" + - "traefik.http.routers.${HASH}.rule=Host(`${DOUBLEZERO_HOST}`)" + - "traefik.http.routers.${HASH}.entrypoints=websecure" + - "traefik.http.routers.${HASH}.tls.certResolver=letsencrypt" + - "traefik.http.services.${HASH}.loadbalancer.server.port=${DOUBLEZERO_PORT}" + +volumes: + db-data: + driver: local + +networks: + dokploy-network: + external: true diff --git a/templates/doublezero/index.ts b/templates/doublezero/index.ts new file mode 100644 index 000000000..e60c43f23 --- /dev/null +++ b/templates/doublezero/index.ts @@ -0,0 +1,26 @@ +import { + generateHash, + generateRandomDomain, + type Template, + type Schema, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainServiceHash = generateHash(schema.projectName); + const randomDomain = generateRandomDomain(schema); + const envs = [ + `DOUBLEZERO_HOST=${randomDomain}`, + "DOUBLEZERO_PORT=4000", + `HASH=${mainServiceHash}`, + "SECRET_KEY_BASE=", + "AWS_ACCESS_KEY_ID=", + "AWS_SECRET_ACCESS_KEY=", + "AWS_REGION=", + "SQS_URL=", + "SYSTEM_EMAIL=", + ]; + + return { + envs, + }; +} diff --git a/templates/templates.ts b/templates/templates.ts index 49bd596c4..a9cade22f 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -331,5 +331,19 @@ export const templates: TemplateData[] = [ }, tags: ['chat'], load: () => import('./open-webui/index').then((m) => m.generate), + }, + { + id: 'doublezero', + name: 'Double Zero', + version: 'v0.0', + description: 'A markdown email micro service for the people! 00 is a bring your own SES email monitoring service you self-host.', + logo: 'doublezero.svg', + links: { + github: 'https://github.com/technomancy-dev/00', + website: 'https://www.double-zero.cloud/', + docs: 'https://github.com/technomancy-dev/00', + }, + tags: ['email'], + load: () => import('./doublezero/index').then((m) => m.generate), } ]; From 66017c8623fcb879c30d2b6e55df7a9e72e7b5fc Mon Sep 17 00:00:00 2001 From: Radu Ciocan Date: Sat, 6 Jul 2024 14:34:30 +0100 Subject: [PATCH 02/12] fix: update template description --- templates/templates.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/templates.ts b/templates/templates.ts index a9cade22f..79715bb43 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -336,7 +336,7 @@ export const templates: TemplateData[] = [ id: 'doublezero', name: 'Double Zero', version: 'v0.0', - description: 'A markdown email micro service for the people! 00 is a bring your own SES email monitoring service you self-host.', + description: '00 is a self hostable SES dashboard for sending and monitoring emails with AWS', logo: 'doublezero.svg', links: { github: 'https://github.com/technomancy-dev/00', From e49b190c3256bfdb1a265fa78fb75eafb0e42a2e Mon Sep 17 00:00:00 2001 From: Radu Ciocan Date: Sat, 6 Jul 2024 20:13:12 +0100 Subject: [PATCH 03/12] Update templates/doublezero/docker-compose.yml Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- templates/doublezero/docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/templates/doublezero/docker-compose.yml b/templates/doublezero/docker-compose.yml index c124a0e35..e392e49d0 100644 --- a/templates/doublezero/docker-compose.yml +++ b/templates/doublezero/docker-compose.yml @@ -20,8 +20,6 @@ services: labels: - "traefik.enable=true" - "traefik.http.routers.${HASH}.rule=Host(`${DOUBLEZERO_HOST}`)" - - "traefik.http.routers.${HASH}.entrypoints=websecure" - - "traefik.http.routers.${HASH}.tls.certResolver=letsencrypt" - "traefik.http.services.${HASH}.loadbalancer.server.port=${DOUBLEZERO_PORT}" volumes: From aa347abfcd1c8eb8f7304c9f6a40fc65c3359aa7 Mon Sep 17 00:00:00 2001 From: Radu Ciocan Date: Sat, 6 Jul 2024 20:30:23 +0100 Subject: [PATCH 04/12] fix: code review changes --- templates/doublezero/docker-compose.yml | 4 ++-- templates/doublezero/index.ts | 5 ++++- templates/templates.ts | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/templates/doublezero/docker-compose.yml b/templates/doublezero/docker-compose.yml index e392e49d0..bb7b1d2b3 100644 --- a/templates/doublezero/docker-compose.yml +++ b/templates/doublezero/docker-compose.yml @@ -1,9 +1,9 @@ services: doublezero: restart: always - image: liltechnomancer/double-zero:latest + image: liltechnomancer/double-zero:0.2.1 ports: - - 4000:4000 + - ${DOUBLEZERO_PORT} networks: - dokploy-network volumes: diff --git a/templates/doublezero/index.ts b/templates/doublezero/index.ts index e60c43f23..f98636476 100644 --- a/templates/doublezero/index.ts +++ b/templates/doublezero/index.ts @@ -3,16 +3,19 @@ import { generateRandomDomain, type Template, type Schema, + generateBase64, } from "../utils"; export function generate(schema: Schema): Template { const mainServiceHash = generateHash(schema.projectName); const randomDomain = generateRandomDomain(schema); + const secretKeyBase = generateBase64(64); + const envs = [ `DOUBLEZERO_HOST=${randomDomain}`, "DOUBLEZERO_PORT=4000", `HASH=${mainServiceHash}`, - "SECRET_KEY_BASE=", + `SECRET_KEY_BASE=${secretKeyBase}`, "AWS_ACCESS_KEY_ID=", "AWS_SECRET_ACCESS_KEY=", "AWS_REGION=", diff --git a/templates/templates.ts b/templates/templates.ts index 79715bb43..687576ddc 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -335,7 +335,7 @@ export const templates: TemplateData[] = [ { id: 'doublezero', name: 'Double Zero', - version: 'v0.0', + version: 'v0.2.1', description: '00 is a self hostable SES dashboard for sending and monitoring emails with AWS', logo: 'doublezero.svg', links: { From 1b91376f5e1a99811f9a611333b7c91e9d5f8d43 Mon Sep 17 00:00:00 2001 From: Radu Ciocan Date: Sat, 6 Jul 2024 23:01:01 +0100 Subject: [PATCH 05/12] feat: listmonk template --- public/templates/listmonk.png | Bin 0 -> 4113 bytes templates/listmonk/docker-compose.yml | 56 ++++++++++++++++++++++++++ templates/listmonk/index.ts | 52 ++++++++++++++++++++++++ templates/templates.ts | 14 +++++++ 4 files changed, 122 insertions(+) create mode 100644 public/templates/listmonk.png create mode 100644 templates/listmonk/docker-compose.yml create mode 100644 templates/listmonk/index.ts diff --git a/public/templates/listmonk.png b/public/templates/listmonk.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6f5618e77b9f875388c82b392de5bfb3217aa5 GIT binary patch literal 4113 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 import('./open-webui/index').then((m) => m.generate), + }, + { + id: 'listmonk', + name: 'Listmonk', + version: 'v3.0.0', + description: 'High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.', + logo: 'listmonk.png', + links: { + github: 'https://github.com/knadh/listmonk', + website: 'https://listmonk.app/', + docs: 'https://listmonk.app/docs/', + }, + tags: ['email', 'newsletter', 'mailing-list'], + load: () => import('./listmonk/index').then((m) => m.generate), } ]; From 0f0f32a40d3cb34815e7501761299382b6d7c9d0 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:06:40 -0600 Subject: [PATCH 06/12] Update index.ts --- templates/doublezero/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/doublezero/index.ts b/templates/doublezero/index.ts index f98636476..1268974fd 100644 --- a/templates/doublezero/index.ts +++ b/templates/doublezero/index.ts @@ -16,10 +16,10 @@ export function generate(schema: Schema): Template { "DOUBLEZERO_PORT=4000", `HASH=${mainServiceHash}`, `SECRET_KEY_BASE=${secretKeyBase}`, - "AWS_ACCESS_KEY_ID=", - "AWS_SECRET_ACCESS_KEY=", - "AWS_REGION=", - "SQS_URL=", + "AWS_ACCESS_KEY_ID=your-aws-access-key", + "AWS_SECRET_ACCESS_KEY=your-aws-secret-key, + "AWS_REGION=your-aws-region", + "SQS_URL=your-aws-sqs-url", "SYSTEM_EMAIL=", ]; From e8648732bebbb44632e2a24a4ce820f6d43ce209 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:07:19 -0600 Subject: [PATCH 07/12] Update index.ts --- templates/doublezero/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/doublezero/index.ts b/templates/doublezero/index.ts index 1268974fd..72304728f 100644 --- a/templates/doublezero/index.ts +++ b/templates/doublezero/index.ts @@ -17,7 +17,7 @@ export function generate(schema: Schema): Template { `HASH=${mainServiceHash}`, `SECRET_KEY_BASE=${secretKeyBase}`, "AWS_ACCESS_KEY_ID=your-aws-access-key", - "AWS_SECRET_ACCESS_KEY=your-aws-secret-key, + "AWS_SECRET_ACCESS_KEY=your-aws-secret-key", "AWS_REGION=your-aws-region", "SQS_URL=your-aws-sqs-url", "SYSTEM_EMAIL=", From 60b19616c12ba60d8b886516960d83dc869a8ebb Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:15:17 -0600 Subject: [PATCH 08/12] Update docker-compose.yml --- templates/listmonk/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/listmonk/docker-compose.yml b/templates/listmonk/docker-compose.yml index e7395e7d6..e17b76577 100644 --- a/templates/listmonk/docker-compose.yml +++ b/templates/listmonk/docker-compose.yml @@ -2,7 +2,7 @@ services: db: image: postgres:13 ports: - - "4432:5432" + - 5432 networks: - dokploy-network environment: From 295bd06918677d702ad8475f54a340de95cb7f98 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:17:14 -0600 Subject: [PATCH 09/12] Update templates.ts --- templates/templates.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/templates.ts b/templates/templates.ts index 77e9fc43d..b41a2028b 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -346,6 +346,7 @@ export const templates: TemplateData[] = [ tags: ['email', 'newsletter', 'mailing-list'], load: () => import('./listmonk/index').then((m) => m.generate), }, + { id: 'doublezero', name: 'Double Zero', version: 'v0.2.1', From 35ff65a871c9cc538eea18217e9c4ad7249e0354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20T=C3=B8n=20L=C3=B8vhaug?= Date: Mon, 8 Jul 2024 10:16:26 +0200 Subject: [PATCH 10/12] Fix spelling --- .../application/advanced/traefik/show-traefik-config.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx index 6b5415044..a3fb4f302 100644 --- a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx +++ b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx @@ -29,7 +29,7 @@ export const ShowTraefikConfig = ({ applicationId }: Props) => { Traefik Modify the traefik config, in rare cases you may need to add - specific config, becarefull because modifying incorrectly can break + specific config, be careful because modifying incorrectly can break traefik and your application From eabe14e4c38e2c3d6d8361c2779455a32ad8993f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Wed, 10 Jul 2024 22:40:13 -0600 Subject: [PATCH 11/12] refactor(setup): add constraints to dokploy services --- server/setup/postgres-setup.ts | 3 +++ server/setup/redis-setup.ts | 3 +++ server/setup/registry-setup.ts | 3 +++ server/setup/traefik-setup.ts | 3 +++ 4 files changed, 12 insertions(+) diff --git a/server/setup/postgres-setup.ts b/server/setup/postgres-setup.ts index ce5bfccc2..d292f877e 100644 --- a/server/setup/postgres-setup.ts +++ b/server/setup/postgres-setup.ts @@ -26,6 +26,9 @@ export const initializePostgres = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/redis-setup.ts b/server/setup/redis-setup.ts index 40886bd09..82f568e46 100644 --- a/server/setup/redis-setup.ts +++ b/server/setup/redis-setup.ts @@ -23,6 +23,9 @@ export const initializeRedis = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/registry-setup.ts b/server/setup/registry-setup.ts index 94d592f7f..085ed365d 100644 --- a/server/setup/registry-setup.ts +++ b/server/setup/registry-setup.ts @@ -43,6 +43,9 @@ export const initializeRegistry = async ( RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/traefik-setup.ts b/server/setup/traefik-setup.ts index 889988d66..4cd011cd4 100644 --- a/server/setup/traefik-setup.ts +++ b/server/setup/traefik-setup.ts @@ -41,6 +41,9 @@ export const initializeTraefik = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { From 86bb119052e26e668ecc0433344e9f4c96194500 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:24:36 -0600 Subject: [PATCH 12/12] chore(version): bump version --- package.json | 314 +++++++++++++++++++++++++-------------------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/package.json b/package.json index 5883df66e..502ff347c 100644 --- a/package.json +++ b/package.json @@ -1,159 +1,159 @@ { - "name": "dokploy", - "version": "v0.3.1", - "private": true, - "license": "Apache-2.0", - "type": "module", - "scripts": { - "build": "npm run build-server && npm run build-next", - "start": "node dist/server.mjs", - "build-server": "tsx esbuild.config.ts", - "build-next": "next build", - "setup": "tsx -r dotenv/config setup.ts && sleep 5 && pnpm run migration:run", - "reset-password": "node dist/reset-password.mjs", - "dev": "tsx watch -r dotenv/config ./server/server.ts --project tsconfig.server.json ", - "studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", - "migration:generate": "drizzle-kit generate --config ./server/db/drizzle.config.ts", - "migration:run": "tsx -r dotenv/config migration.ts", - "migration:up": "drizzle-kit up --config ./server/db/drizzle.config.ts", - "migration:drop": "drizzle-kit drop --config ./server/db/drizzle.config.ts", - "db:push": "drizzle-kit --config ./server/db/drizzle.config.ts", - "db:truncate": "tsx -r dotenv/config ./server/db/reset.ts", - "db:studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", - "lint": "biome lint", - "db:seed": "tsx -r dotenv/config ./server/db/seed.ts", - "db:clean": "tsx -r dotenv/config ./server/db/reset.ts", - "docker:build": "./docker/build.sh", - "docker:push": "./docker/push.sh", - "docker:build:canary": "./docker/build.sh canary", - "docker:push:canary": "./docker/push.sh canary", - "version": "echo $(node -p \"require('./package.json').version\")", - "test": "vitest --config __test__/vitest.config.ts" - }, - "dependencies": { - "@aws-sdk/client-s3": "3.515.0", - "@codemirror/lang-json": "^6.0.1", - "@codemirror/lang-yaml": "^6.1.1", - "@codemirror/language": "^6.10.1", - "@codemirror/legacy-modes": "6.4.0", - "@dokploy/trpc-openapi": "0.0.4", - "@faker-js/faker": "^8.4.1", - "@hookform/resolvers": "^3.3.4", - "@lucia-auth/adapter-drizzle": "1.0.7", - "@octokit/auth-app": "^6.0.4", - "@octokit/webhooks": "^13.2.7", - "@radix-ui/react-accordion": "1.1.2", - "@radix-ui/react-alert-dialog": "^1.0.5", - "@radix-ui/react-avatar": "^1.0.4", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-dialog": "^1.0.5", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-popover": "^1.0.7", - "@radix-ui/react-progress": "^1.0.3", - "@radix-ui/react-radio-group": "^1.1.3", - "@radix-ui/react-scroll-area": "^1.0.5", - "@radix-ui/react-select": "^2.0.0", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toggle": "^1.0.3", - "@radix-ui/react-tooltip": "^1.0.7", - "@tanstack/react-query": "^4.36.1", - "@tanstack/react-table": "^8.16.0", - "@trpc/client": "^10.43.6", - "@trpc/next": "^10.43.6", - "@trpc/react-query": "^10.43.6", - "@trpc/server": "^10.43.6", - "@uiw/codemirror-theme-github": "^4.22.1", - "@uiw/react-codemirror": "^4.22.1", - "@xterm/addon-attach": "0.10.0", - "@xterm/xterm": "^5.4.0", - "bcrypt": "5.1.1", - "bl": "6.0.11", - "boxen": "^7.1.1", - "bullmq": "5.4.2", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.0", - "cmdk": "^0.2.0", - "copy-to-clipboard": "^3.3.3", - "copy-webpack-plugin": "^12.0.2", - "date-fns": "3.6.0", - "dockerode": "4.0.2", - "dockerode-compose": "^1.4.0", - "dockerstats": "2.4.2", - "dotenv": "16.4.5", - "drizzle-orm": "^0.30.8", - "drizzle-zod": "0.5.1", - "hi-base32": "^0.5.1", - "input-otp": "^1.2.4", - "js-yaml": "4.1.0", - "k6": "^0.0.0", - "lodash": "4.17.21", - "lucia": "^3.0.1", - "lucide-react": "^0.312.0", - "nanoid": "3", - "next": "^14.1.3", - "next-themes": "^0.2.1", - "node-os-utils": "1.3.7", - "node-pty": "1.0.0", - "node-schedule": "2.1.1", - "octokit": "3.1.2", - "otpauth": "^9.2.3", - "postgres": "3.4.4", - "public-ip": "6.0.2", - "qrcode": "^1.5.3", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-hook-form": "^7.49.3", - "recharts": "^2.12.3", - "slugify": "^1.6.6", - "sonner": "^1.4.0", - "superjson": "^2.2.1", - "swagger-ui-react": "^5.17.14", - "tailwind-merge": "^2.2.0", - "tailwindcss-animate": "^1.0.7", - "tar-fs": "3.0.5", - "use-resize-observer": "9.1.0", - "ws": "8.16.0", - "xterm-addon-fit": "^0.8.0", - "zod": "^3.23.4" - }, - "devDependencies": { - "@biomejs/biome": "1.7.1", - "@types/bcrypt": "5.0.2", - "@types/dockerode": "3.3.23", - "@types/js-yaml": "4.0.9", - "@types/lodash": "4.17.4", - "@types/node": "^18.17.0", - "@types/node-os-utils": "1.3.4", - "@types/node-schedule": "2.1.6", - "@types/qrcode": "^1.5.5", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", - "@types/swagger-ui-react": "^4.18.3", - "@types/tar-fs": "2.0.4", - "@types/ws": "8.5.10", - "autoprefixer": "^10.4.14", - "drizzle-kit": "^0.21.1", - "esbuild": "0.20.2", - "localtunnel": "2.0.2", - "postcss": "^8.4.31", - "prettier": "^3.2.4", - "prettier-plugin-tailwindcss": "^0.5.11", - "tailwindcss": "^3.4.1", - "tsx": "^4.7.0", - "typescript": "^5.4.2", - "vite-tsconfig-paths": "4.3.2", - "vitest": "^1.6.0", - "xterm-readline": "1.1.1" - }, - "ct3aMetadata": { - "initVersion": "7.25.2" - }, - "engines": { - "node": "^18.18.0", - "pnpm": ">=8.15.4" - } + "name": "dokploy", + "version": "v0.3.2", + "private": true, + "license": "Apache-2.0", + "type": "module", + "scripts": { + "build": "npm run build-server && npm run build-next", + "start": "node dist/server.mjs", + "build-server": "tsx esbuild.config.ts", + "build-next": "next build", + "setup": "tsx -r dotenv/config setup.ts && sleep 5 && pnpm run migration:run", + "reset-password": "node dist/reset-password.mjs", + "dev": "tsx watch -r dotenv/config ./server/server.ts --project tsconfig.server.json ", + "studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", + "migration:generate": "drizzle-kit generate --config ./server/db/drizzle.config.ts", + "migration:run": "tsx -r dotenv/config migration.ts", + "migration:up": "drizzle-kit up --config ./server/db/drizzle.config.ts", + "migration:drop": "drizzle-kit drop --config ./server/db/drizzle.config.ts", + "db:push": "drizzle-kit --config ./server/db/drizzle.config.ts", + "db:truncate": "tsx -r dotenv/config ./server/db/reset.ts", + "db:studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", + "lint": "biome lint", + "db:seed": "tsx -r dotenv/config ./server/db/seed.ts", + "db:clean": "tsx -r dotenv/config ./server/db/reset.ts", + "docker:build": "./docker/build.sh", + "docker:push": "./docker/push.sh", + "docker:build:canary": "./docker/build.sh canary", + "docker:push:canary": "./docker/push.sh canary", + "version": "echo $(node -p \"require('./package.json').version\")", + "test": "vitest --config __test__/vitest.config.ts" + }, + "dependencies": { + "@aws-sdk/client-s3": "3.515.0", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/lang-yaml": "^6.1.1", + "@codemirror/language": "^6.10.1", + "@codemirror/legacy-modes": "6.4.0", + "@dokploy/trpc-openapi": "0.0.4", + "@faker-js/faker": "^8.4.1", + "@hookform/resolvers": "^3.3.4", + "@lucia-auth/adapter-drizzle": "1.0.7", + "@octokit/auth-app": "^6.0.4", + "@octokit/webhooks": "^13.2.7", + "@radix-ui/react-accordion": "1.1.2", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-avatar": "^1.0.4", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-progress": "^1.0.3", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-scroll-area": "^1.0.5", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toggle": "^1.0.3", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^4.36.1", + "@tanstack/react-table": "^8.16.0", + "@trpc/client": "^10.43.6", + "@trpc/next": "^10.43.6", + "@trpc/react-query": "^10.43.6", + "@trpc/server": "^10.43.6", + "@uiw/codemirror-theme-github": "^4.22.1", + "@uiw/react-codemirror": "^4.22.1", + "@xterm/addon-attach": "0.10.0", + "@xterm/xterm": "^5.4.0", + "bcrypt": "5.1.1", + "bl": "6.0.11", + "boxen": "^7.1.1", + "bullmq": "5.4.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", + "cmdk": "^0.2.0", + "copy-to-clipboard": "^3.3.3", + "copy-webpack-plugin": "^12.0.2", + "date-fns": "3.6.0", + "dockerode": "4.0.2", + "dockerode-compose": "^1.4.0", + "dockerstats": "2.4.2", + "dotenv": "16.4.5", + "drizzle-orm": "^0.30.8", + "drizzle-zod": "0.5.1", + "hi-base32": "^0.5.1", + "input-otp": "^1.2.4", + "js-yaml": "4.1.0", + "k6": "^0.0.0", + "lodash": "4.17.21", + "lucia": "^3.0.1", + "lucide-react": "^0.312.0", + "nanoid": "3", + "next": "^14.1.3", + "next-themes": "^0.2.1", + "node-os-utils": "1.3.7", + "node-pty": "1.0.0", + "node-schedule": "2.1.1", + "octokit": "3.1.2", + "otpauth": "^9.2.3", + "postgres": "3.4.4", + "public-ip": "6.0.2", + "qrcode": "^1.5.3", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-hook-form": "^7.49.3", + "recharts": "^2.12.3", + "slugify": "^1.6.6", + "sonner": "^1.4.0", + "superjson": "^2.2.1", + "swagger-ui-react": "^5.17.14", + "tailwind-merge": "^2.2.0", + "tailwindcss-animate": "^1.0.7", + "tar-fs": "3.0.5", + "use-resize-observer": "9.1.0", + "ws": "8.16.0", + "xterm-addon-fit": "^0.8.0", + "zod": "^3.23.4" + }, + "devDependencies": { + "@biomejs/biome": "1.7.1", + "@types/bcrypt": "5.0.2", + "@types/dockerode": "3.3.23", + "@types/js-yaml": "4.0.9", + "@types/lodash": "4.17.4", + "@types/node": "^18.17.0", + "@types/node-os-utils": "1.3.4", + "@types/node-schedule": "2.1.6", + "@types/qrcode": "^1.5.5", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", + "@types/swagger-ui-react": "^4.18.3", + "@types/tar-fs": "2.0.4", + "@types/ws": "8.5.10", + "autoprefixer": "^10.4.14", + "drizzle-kit": "^0.21.1", + "esbuild": "0.20.2", + "localtunnel": "2.0.2", + "postcss": "^8.4.31", + "prettier": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.11", + "tailwindcss": "^3.4.1", + "tsx": "^4.7.0", + "typescript": "^5.4.2", + "vite-tsconfig-paths": "4.3.2", + "vitest": "^1.6.0", + "xterm-readline": "1.1.1" + }, + "ct3aMetadata": { + "initVersion": "7.25.2" + }, + "engines": { + "node": "^18.18.0", + "pnpm": ">=8.15.4" + } }