diff --git a/apps/dokploy/public/templates/zipline.png b/apps/dokploy/public/templates/zipline.png new file mode 100644 index 00000000..2b8f6972 Binary files /dev/null and b/apps/dokploy/public/templates/zipline.png differ diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 100802e5..5ed07e20 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -423,6 +423,21 @@ 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), + }, { id: "soketi", name: "Soketi", diff --git a/apps/dokploy/templates/zipline/docker-compose.yml b/apps/dokploy/templates/zipline/docker-compose.yml new file mode 100644 index 00000000..808b0b89 --- /dev/null +++ b/apps/dokploy/templates/zipline/docker-compose.yml @@ -0,0 +1,37 @@ +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:3.7.9 + restart: unless-stopped + environment: + - CORE_RETURN_HTTPS=${ZIPLINE_RETURN_HTTPS} + - CORE_SECRET=${ZIPLINE_SECRET} + - CORE_HOST=0.0.0.0 + - CORE_PORT=${ZIPLINE_PORT} + - CORE_DATABASE_URL=postgres://postgres:postgres@postgres/postgres + - CORE_LOGGER=${ZIPLINE_LOGGER} + volumes: + - "../files/uploads:/zipline/uploads" + - "../files/public:/zipline/public" + depends_on: + - "postgres" + +volumes: + pg_data: diff --git a/apps/dokploy/templates/zipline/index.ts b/apps/dokploy/templates/zipline/index.ts new file mode 100644 index 00000000..ce0172e4 --- /dev/null +++ b/apps/dokploy/templates/zipline/index.ts @@ -0,0 +1,32 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, +} from "@/templates/utils"; + +export function generate(schema: Schema): Template { + const randomDomain = generateRandomDomain(schema); + const secretBase = generateBase64(64); + + const domains: DomainSchema[] = [ + { + host: randomDomain, + port: 3000, + serviceName: "zipline", + }, + ]; + + const envs = [ + "ZIPLINE_PORT=3000", + `ZIPLINE_SECRET=${secretBase}`, + "ZIPLINE_RETURN_HTTPS=false", + "ZIPLINE_LOGGER=true", + ]; + + return { + envs, + domains, + }; +}