diff --git a/apps/dokploy/public/templates/ontime.png b/apps/dokploy/public/templates/ontime.png new file mode 100644 index 00000000..e7aaee29 Binary files /dev/null and b/apps/dokploy/public/templates/ontime.png differ diff --git a/apps/dokploy/templates/ontime/docker-compose.yml b/apps/dokploy/templates/ontime/docker-compose.yml new file mode 100644 index 00000000..2c04bcb3 --- /dev/null +++ b/apps/dokploy/templates/ontime/docker-compose.yml @@ -0,0 +1,14 @@ +services: + ontime: + image: getontime/ontime:v3.8.0 + ports: + - 4001 + - 8888 + - 9999 + volumes: + - ontime-data:/data/ + environment: + - TZ + restart: unless-stopped +volumes: + ontime-data: diff --git a/apps/dokploy/templates/ontime/index.ts b/apps/dokploy/templates/ontime/index.ts new file mode 100644 index 00000000..17cac25d --- /dev/null +++ b/apps/dokploy/templates/ontime/index.ts @@ -0,0 +1,25 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 4001, + serviceName: "ontime", + }, + ]; + + const envs = ["TZ=UTC"]; + + return { + domains, + envs, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index f6ed672c..5b5ae9da 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -881,8 +881,8 @@ export const templates: TemplateData[] = [ }, tags: ["forum", "community", "discussion"], load: () => import("./discourse/index").then((m) => m.generate), - }, - { + }, + { id: "immich", name: "Immich", version: "v1.121.0", @@ -896,8 +896,8 @@ export const templates: TemplateData[] = [ }, tags: ["photos", "videos", "backup", "media"], load: () => import("./immich/index").then((m) => m.generate), - }, - { + }, + { id: "twenty", name: "Twenty CRM", version: "latest", @@ -911,8 +911,8 @@ export const templates: TemplateData[] = [ }, tags: ["crm", "sales", "business"], load: () => import("./twenty/index").then((m) => m.generate), - }, - { + }, + { id: "yourls", name: "YOURLS", version: "1.9.2", @@ -926,8 +926,8 @@ export const templates: TemplateData[] = [ }, tags: ["url-shortener", "php"], load: () => import("./yourls/index").then((m) => m.generate), - }, - { + }, + { id: "ryot", name: "Ryot", version: "v7.10", @@ -942,4 +942,19 @@ export const templates: TemplateData[] = [ tags: ["media", "tracking", "self-hosted"], load: () => import("./ryot/index").then((m) => m.generate), }, + { + id: "ontime", + name: "Ontime", + version: "v3.8.0", + description: + "Ontime is browser-based application that manages event rundowns, scheduliing and cuing", + logo: "ontime.png", + links: { + github: "https://github.com/cpvalente/ontime/", + website: "https://getontime.no", + docs: "https://docs.getontime.no", + }, + tags: ["event"], + load: () => import("./ontime/index").then((m) => m.generate), + }, ];