From 9922c0ed66f0c95105a5870bd2f4ba2dd5c60ae2 Mon Sep 17 00:00:00 2001 From: Vladislav-CS Date: Thu, 8 Aug 2024 18:58:00 +0300 Subject: [PATCH] Initial commit --- apps/dokploy/public/templates/zipline.png | Bin 0 -> 27499 bytes apps/dokploy/templates/templates.ts | 14 +++++ .../templates/zipline/docker-compose.yml | 49 ++++++++++++++++++ apps/dokploy/templates/zipline/index.ts | 18 +++++++ 4 files changed, 81 insertions(+) create mode 100644 apps/dokploy/public/templates/zipline.png create mode 100644 apps/dokploy/templates/zipline/docker-compose.yml create mode 100644 apps/dokploy/templates/zipline/index.ts diff --git a/apps/dokploy/public/templates/zipline.png b/apps/dokploy/public/templates/zipline.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8f6972d5edcf5bd61db6ebae6aac342150472b GIT binary patch literal 27499 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˕|s{@L$t4Dq}u7x`k^_Bp!g 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 literal 0 HcmV?d00001 diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 6e4867ba..265d0f0d 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -408,4 +408,18 @@ export const templates: TemplateData[] = [ tags: ["database", "spreadsheet", "low-code", "nocode"], load: () => import("./teable/index").then((m) => m.generate), }, + { + id: "zipline", + name: "Zipline", + version: "v3.7.9", + description: "A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!", + logo: "zipline.png", + links: { + github: "https://github.com/diced/zipline", + website: "https://zipline.diced.sh/", + docs: "https://zipline.diced.sh/docs/", + }, + tags: ["media system", "storage"], + load: () => import("./zipline/index").then((m) => m.generate), + } ]; diff --git a/apps/dokploy/templates/zipline/docker-compose.yml b/apps/dokploy/templates/zipline/docker-compose.yml new file mode 100644 index 00000000..451fa962 --- /dev/null +++ b/apps/dokploy/templates/zipline/docker-compose.yml @@ -0,0 +1,49 @@ +version: '3' +services: + postgres: + image: postgres:15 + networks: + - dokploy-network + restart: unless-stopped + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + - POSTGRES_DATABASE=postgres + volumes: + - pg_data:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 10s + timeout: 5s + retries: 5 + + zipline: + image: ghcr.io/diced/zipline + networks: + - dokploy-network + ports: + - ${ZIPLINE_PORT} + labels: + - traefik.enable=true + - traefik.http.routers.${HASH}.rule=Host(`${ZIPLINE_HOST}`) + - traefik.http.services.${HASH}.loadbalancer.server.port=${ZIPLINE_PORT} + restart: unless-stopped + environment: + - CORE_RETURN_HTTPS=false + - CORE_SECRET=${ZIPLINE_SECRET} + - CORE_HOST=0.0.0.0 + - CORE_PORT=3000 + - CORE_DATABASE_URL=postgres://postgres:postgres@postgres/postgres + - CORE_LOGGER=true + volumes: + - './uploads:/zipline/uploads' + - './public:/zipline/public' + depends_on: + - 'postgres' + +volumes: + pg_data: + +networks: + dokploy-network: + external: true \ No newline at end of file diff --git a/apps/dokploy/templates/zipline/index.ts b/apps/dokploy/templates/zipline/index.ts new file mode 100644 index 00000000..24e16ec9 --- /dev/null +++ b/apps/dokploy/templates/zipline/index.ts @@ -0,0 +1,18 @@ +import { generateBase64, generateHash, generateRandomDomain, type Schema, type Template } from "@/templates/utils" + +export function generate(schema: Schema): Template { + const mainServiceHash = generateHash(schema.projectName); + const randomDomain = generateRandomDomain(schema); + const secretBase = generateBase64(64); + + const envs = [ + `ZIPLINE_HOST=${randomDomain}`, + `ZIPLINE_PORT=3000`, + `ZIPLINE_SECRET=${secretBase}`, + `HASH=${mainServiceHash}`, + ] + + return { + envs + } +} \ No newline at end of file