diff --git a/apps/dokploy/public/templates/coder.svg b/apps/dokploy/public/templates/coder.svg
new file mode 100644
index 00000000..56d2f77c
--- /dev/null
+++ b/apps/dokploy/public/templates/coder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/docmost.png b/apps/dokploy/public/templates/docmost.png
new file mode 100644
index 00000000..9bc8d210
Binary files /dev/null and b/apps/dokploy/public/templates/docmost.png differ
diff --git a/apps/dokploy/public/templates/hi-events.svg b/apps/dokploy/public/templates/hi-events.svg
new file mode 100644
index 00000000..0e373509
--- /dev/null
+++ b/apps/dokploy/public/templates/hi-events.svg
@@ -0,0 +1,39 @@
+
+
+
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/infisical.jpg b/apps/dokploy/public/templates/infisical.jpg
new file mode 100644
index 00000000..404f5811
Binary files /dev/null and b/apps/dokploy/public/templates/infisical.jpg differ
diff --git a/apps/dokploy/public/templates/influxdb.png b/apps/dokploy/public/templates/influxdb.png
new file mode 100644
index 00000000..8fc62a7f
Binary files /dev/null and b/apps/dokploy/public/templates/influxdb.png differ
diff --git a/apps/dokploy/public/templates/macos.png b/apps/dokploy/public/templates/macos.png
new file mode 100644
index 00000000..617122c8
Binary files /dev/null and b/apps/dokploy/public/templates/macos.png differ
diff --git a/apps/dokploy/public/templates/vaultwarden.svg b/apps/dokploy/public/templates/vaultwarden.svg
new file mode 100644
index 00000000..71866afd
--- /dev/null
+++ b/apps/dokploy/public/templates/vaultwarden.svg
@@ -0,0 +1,19 @@
+
diff --git a/apps/dokploy/public/templates/windows.png b/apps/dokploy/public/templates/windows.png
new file mode 100644
index 00000000..61ced455
Binary files /dev/null and b/apps/dokploy/public/templates/windows.png differ
diff --git a/apps/dokploy/templates/coder/docker-compose.yml b/apps/dokploy/templates/coder/docker-compose.yml
new file mode 100644
index 00000000..27bb14bd
--- /dev/null
+++ b/apps/dokploy/templates/coder/docker-compose.yml
@@ -0,0 +1,39 @@
+services:
+ coder:
+ image: ghcr.io/coder/coder:v2.15.3
+ networks:
+ - dokploy-network
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ group_add:
+ - "998"
+ depends_on:
+ db:
+ condition: service_healthy
+ environment:
+ - CODER_ACCESS_URL
+ - CODER_HTTP_ADDRESS
+ - CODER_PG_CONNECTION_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}?sslmode=disable
+
+ db:
+ image: postgres:17
+ networks:
+ - dokploy-network
+ environment:
+ - POSTGRES_PASSWORD
+ - POSTGRES_USER
+ - POSTGRES_DB
+ healthcheck:
+ test:
+ [
+ "CMD-SHELL",
+ "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}",
+ ]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+ volumes:
+ - db_coder_data:/var/lib/postgresql/data
+
+volumes:
+ db_coder_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/coder/index.ts b/apps/dokploy/templates/coder/index.ts
new file mode 100644
index 00000000..c3f066d6
--- /dev/null
+++ b/apps/dokploy/templates/coder/index.ts
@@ -0,0 +1,30 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 7080,
+ serviceName: "coder",
+ },
+ ];
+
+ const envs = [
+ "CODER_ACCESS_URL=",
+ "CODER_HTTP_ADDRESS=0.0.0.0:7080",
+ "",
+ "POSTGRES_DB=coder",
+ "POSTGRES_USER=coder",
+ "POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/docmost/docker-compose.yml b/apps/dokploy/templates/docmost/docker-compose.yml
new file mode 100644
index 00000000..a6ebbd4f
--- /dev/null
+++ b/apps/dokploy/templates/docmost/docker-compose.yml
@@ -0,0 +1,47 @@
+version: "3"
+
+services:
+ docmost:
+ image: docmost/docmost:0.4.1
+ depends_on:
+ - db
+ - redis
+ environment:
+ - APP_URL
+ - APP_SECRET
+ - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
+ - REDIS_URL=redis://redis:6379
+ restart: unless-stopped
+ networks:
+ - dokploy-network
+ volumes:
+ - docmost:/app/data/storage
+
+ db:
+ image: postgres:16-alpine
+ environment:
+ - POSTGRES_DB
+ - POSTGRES_USER
+ - POSTGRES_PASSWORD
+ restart: unless-stopped
+ networks:
+ - dokploy-network
+ volumes:
+ - db_docmost_data:/var/lib/postgresql/data
+
+ redis:
+ image: redis:7.2-alpine
+ restart: unless-stopped
+ networks:
+ - dokploy-network
+ volumes:
+ - redis_docmost_data:/data
+
+networks:
+ dokploy-network:
+ external: true
+
+volumes:
+ docmost:
+ db_docmost_data:
+ redis_docmost_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/docmost/index.ts b/apps/dokploy/templates/docmost/index.ts
new file mode 100644
index 00000000..16f7afa6
--- /dev/null
+++ b/apps/dokploy/templates/docmost/index.ts
@@ -0,0 +1,29 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 3000,
+ serviceName: "docmost",
+ },
+ ];
+
+ const envs = [
+ "POSTGRES_DB=docmost",
+ "POSTGRES_USER=docmost",
+ "POSTGRES_PASSWORD=STRONG_DB_PASSWORD",
+ "APP_URL=http://localhost:3000",
+ "APP_SECRET=VERY_STRONG_SECRET",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/gitea/docker-compose.yml b/apps/dokploy/templates/gitea/docker-compose.yml
index 679936fb..72e0754e 100644
--- a/apps/dokploy/templates/gitea/docker-compose.yml
+++ b/apps/dokploy/templates/gitea/docker-compose.yml
@@ -1,7 +1,7 @@
version: "3.8"
services:
gitea:
- image: gitea/gitea:1.22.2
+ image: gitea/gitea:1.22.3
environment:
- USER_UID=${USER_UID}
- USER_GID=${USER_GID}
@@ -21,7 +21,7 @@ services:
- db
db:
- image: postgres:16
+ image: postgres:17
restart: always
environment:
- POSTGRES_USER=gitea
diff --git a/apps/dokploy/templates/hi-events/docker-compose.yml b/apps/dokploy/templates/hi-events/docker-compose.yml
new file mode 100644
index 00000000..0ce5b7e7
--- /dev/null
+++ b/apps/dokploy/templates/hi-events/docker-compose.yml
@@ -0,0 +1,45 @@
+services:
+ all-in-one:
+ image: daveearley/hi.events-all-in-one:v0.8.0-beta.1
+ restart: always
+ environment:
+ - VITE_FRONTEND_URL=https://${DOMAIN}
+ - APP_FRONTEND_URL=https://${DOMAIN}
+ - VITE_API_URL_CLIENT=https://${DOMAIN}/api
+ - VITE_API_URL_SERVER=http://localhost:80/api
+ - VITE_STRIPE_PUBLISHABLE_KEY
+ - LOG_CHANNEL=stderr
+ - QUEUE_CONNECTION=sync
+ - MAIL_MAILER=array
+ - APP_KEY
+ - JWT_SECRET
+ - FILESYSTEM_PUBLIC_DISK=public
+ - FILESYSTEM_PRIVATE_DISK=local
+ - APP_CDN_URL=https://${DOMAIN}/storage
+ - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
+ - MAIL_MAILER
+ - MAIL_HOST
+ - MAIL_PORT
+ - MAIL_FROM_ADDRESS
+ - MAIL_FROM_NAME
+ depends_on:
+ - postgres
+
+ postgres:
+ image: elestio/postgres:16
+ restart: always
+ networks:
+ - dokploy-network
+ environment:
+ - POSTGRES_DB
+ - POSTGRES_USER
+ - POSTGRES_PASSWORD
+ volumes:
+ - pg_hi-events_data:/var/lib/postgresql/data
+
+networks:
+ dokploy-network:
+ external: true
+
+volumes:
+ pg_hi-events_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/hi-events/index.ts b/apps/dokploy/templates/hi-events/index.ts
new file mode 100644
index 00000000..f799bb73
--- /dev/null
+++ b/apps/dokploy/templates/hi-events/index.ts
@@ -0,0 +1,41 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 80,
+ serviceName: "all-in-one",
+ },
+ ];
+
+ const envs = [
+ "# change domain here",
+ "DOMAIN=my-events.com",
+ "",
+ "POSTGRES_DB=hievents",
+ "POSTGRES_USER=hievents",
+ "POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
+ "",
+ "VITE_STRIPE_PUBLISHABLE_KEY=",
+ "",
+ "APP_KEY=my-app-key",
+ "JWT_SECRET=STRONG_JWT_SECRET",
+ "",
+ "MAIL_MAILER=",
+ "MAIL_HOST=",
+ "MAIL_PORT=",
+ "MAIL_FROM_ADDRESS=",
+ "MAIL_FROM_NAME=",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/infisical/docker-compose.yml b/apps/dokploy/templates/infisical/docker-compose.yml
new file mode 100644
index 00000000..3baca926
--- /dev/null
+++ b/apps/dokploy/templates/infisical/docker-compose.yml
@@ -0,0 +1,87 @@
+services:
+ db-migration:
+ depends_on:
+ db:
+ condition: service_healthy
+ image: infisical/infisical:v0.90.1-postgres
+ environment:
+ - NODE_ENV=production
+ - ENCRYPTION_KEY
+ - AUTH_SECRET
+ - SITE_URL
+ - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
+ - REDIS_URL=redis://redis:6379
+ - SMTP_HOST
+ - SMTP_PORT
+ - SMTP_FROM_NAME
+ - SMTP_USERNAME
+ - SMTP_PASSWORD
+ - SMTP_SECURE=true
+ command: npm run migration:latest
+ pull_policy: always
+ networks:
+ - dokploy-network
+
+ backend:
+ restart: unless-stopped
+ depends_on:
+ db:
+ condition: service_healthy
+ redis:
+ condition: service_started
+ db-migration:
+ condition: service_completed_successfully
+ image: infisical/infisical:v0.90.1-postgres
+ pull_policy: always
+ environment:
+ - NODE_ENV=production
+ - ENCRYPTION_KEY
+ - AUTH_SECRET
+ - SITE_URL
+ - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
+ - REDIS_URL=redis://redis:6379
+ - SMTP_HOST
+ - SMTP_PORT
+ - SMTP_FROM_NAME
+ - SMTP_USERNAME
+ - SMTP_PASSWORD
+ - SMTP_SECURE=true
+ networks:
+ - dokploy-network
+
+ redis:
+ image: redis:7.4.1
+ env_file: .env
+ restart: always
+ environment:
+ - ALLOW_EMPTY_PASSWORD=yes
+ networks:
+ - dokploy-network
+ volumes:
+ - redis_infisical_data:/data
+
+ db:
+ image: postgres:14-alpine
+ restart: always
+ environment:
+ - POSTGRES_PASSWORD
+ - POSTGRES_USER
+ - POSTGRES_DB
+ volumes:
+ - pg_infisical_data:/var/lib/postgresql/data
+ networks:
+ - dokploy-network
+ healthcheck:
+ test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
+ interval: 5s
+ timeout: 10s
+ retries: 10
+
+volumes:
+ pg_infisical_data:
+ redis_infisical_data:
+
+networks:
+ dokploy-network:
+ external: true
+
diff --git a/apps/dokploy/templates/infisical/index.ts b/apps/dokploy/templates/infisical/index.ts
new file mode 100644
index 00000000..6d212774
--- /dev/null
+++ b/apps/dokploy/templates/infisical/index.ts
@@ -0,0 +1,93 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 8080,
+ serviceName: "backend",
+ },
+ ];
+
+ const envs = [
+ "# THIS IS A SAMPLE ENCRYPTION KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
+ "ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218",
+ "",
+ "# THIS IS A SAMPLE AUTH_SECRET KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
+ "AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE=",
+ "# Postgres creds",
+ "POSTGRES_PASSWORD=infisical",
+ "POSTGRES_USER=infisical",
+ "POSTGRES_DB=infisical",
+ "",
+ "# Website URL",
+ "# Required",
+ "SITE_URL=http://localhost:8080",
+ "",
+ "# Mail/SMTP",
+ "SMTP_HOST=",
+ "SMTP_PORT=",
+ "SMTP_NAME=",
+ "SMTP_USERNAME=",
+ "SMTP_PASSWORD=",
+ "",
+ "# Integration",
+ "# Optional only if integration is used",
+ "CLIENT_ID_HEROKU=",
+ "CLIENT_ID_VERCEL=",
+ "CLIENT_ID_NETLIFY=",
+ "CLIENT_ID_GITHUB=",
+ "CLIENT_ID_GITHUB_APP=",
+ "CLIENT_SLUG_GITHUB_APP=",
+ "CLIENT_ID_GITLAB=",
+ "CLIENT_ID_BITBUCKET=",
+ "CLIENT_SECRET_HEROKU=",
+ "CLIENT_SECRET_VERCEL=",
+ "CLIENT_SECRET_NETLIFY=",
+ "CLIENT_SECRET_GITHUB=",
+ "CLIENT_SECRET_GITHUB_APP=",
+ "CLIENT_SECRET_GITLAB=",
+ "CLIENT_SECRET_BITBUCKET=",
+ "CLIENT_SLUG_VERCEL=",
+ "",
+ "CLIENT_PRIVATE_KEY_GITHUB_APP=",
+ "CLIENT_APP_ID_GITHUB_APP=",
+ "",
+ "# Sentry (optional) for monitoring errors",
+ "SENTRY_DSN=",
+ "",
+ "# Infisical Cloud-specific configs",
+ "# Ignore - Not applicable for self-hosted version",
+ "POSTHOG_HOST=",
+ "POSTHOG_PROJECT_API_KEY=",
+ "",
+ "# SSO-specific variables",
+ "CLIENT_ID_GOOGLE_LOGIN=",
+ "CLIENT_SECRET_GOOGLE_LOGIN=",
+ "",
+ "CLIENT_ID_GITHUB_LOGIN=",
+ "CLIENT_SECRET_GITHUB_LOGIN=",
+ "",
+ "CLIENT_ID_GITLAB_LOGIN=",
+ "CLIENT_SECRET_GITLAB_LOGIN=",
+ "",
+ "CAPTCHA_SECRET=",
+ "",
+ "NEXT_PUBLIC_CAPTCHA_SITE_KEY=",
+ "",
+ "PLAIN_API_KEY=",
+ "PLAIN_WISH_LABEL_IDS=",
+ "",
+ "SSL_CLIENT_CERTIFICATE_HEADER_KEY=",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/influxdb/docker-compose.yml b/apps/dokploy/templates/influxdb/docker-compose.yml
new file mode 100644
index 00000000..1327c602
--- /dev/null
+++ b/apps/dokploy/templates/influxdb/docker-compose.yml
@@ -0,0 +1,11 @@
+services:
+ influxdb:
+ image: influxdb:2.7.10
+ restart: unless-stopped
+ volumes:
+ - influxdb2-data:/var/lib/influxdb2
+ - influxdb2-config:/etc/influxdb2
+
+volumes:
+ influxdb2-data:
+ influxdb2-config:
\ No newline at end of file
diff --git a/apps/dokploy/templates/influxdb/index.ts b/apps/dokploy/templates/influxdb/index.ts
new file mode 100644
index 00000000..550b680e
--- /dev/null
+++ b/apps/dokploy/templates/influxdb/index.ts
@@ -0,0 +1,19 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 8086,
+ serviceName: "influxdb",
+ },
+ ];
+ return {
+ domains,
+ };
+}
diff --git a/apps/dokploy/templates/macos/docker-compose.yml b/apps/dokploy/templates/macos/docker-compose.yml
new file mode 100644
index 00000000..585c1bf9
--- /dev/null
+++ b/apps/dokploy/templates/macos/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ macos:
+ image: dockurr/macos:1.14
+ volumes:
+ - macos-storage:/storage
+ environment:
+ - VERSION
+ devices:
+ # If in .env string 'KVM=N' is not commented, you need to comment line below
+ - /dev/kvm
+ cap_add:
+ - NET_ADMIN
+ stop_grace_period: 2m
+
+volumes:
+ macos-storage:
\ No newline at end of file
diff --git a/apps/dokploy/templates/macos/index.ts b/apps/dokploy/templates/macos/index.ts
new file mode 100644
index 00000000..ebda4106
--- /dev/null
+++ b/apps/dokploy/templates/macos/index.ts
@@ -0,0 +1,33 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 8006,
+ serviceName: "macos",
+ },
+ ];
+
+ const envs = [
+ "# https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-select-the-macos-version",
+ "VERSION=15",
+ "",
+ "# Uncomment this if your PC/VM or etc does not support virtualization technology",
+ "# KVM=N",
+ "",
+ "DISK_SIZE=64G",
+ "RAM_SIZE=4G",
+ "CPU_CORES=2",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/nocodb/docker-compose.yml b/apps/dokploy/templates/nocodb/docker-compose.yml
index 726cf5e6..3d5c9ee7 100644
--- a/apps/dokploy/templates/nocodb/docker-compose.yml
+++ b/apps/dokploy/templates/nocodb/docker-compose.yml
@@ -1,7 +1,7 @@
version: "3.8"
services:
nocodb:
- image: nocodb/nocodb:0.251.1
+ image: nocodb/nocodb:0.257.2
restart: always
environment:
NC_DB: "pg://root_db?u=postgres&p=password&d=root_db"
@@ -11,7 +11,7 @@ services:
- nc_data:/usr/app/data
root_db:
- image: postgres:14.7
+ image: postgres:17
restart: always
networks:
- dokploy-network
diff --git a/apps/dokploy/templates/soketi/docker-compose.yml b/apps/dokploy/templates/soketi/docker-compose.yml
index 1784cdc7..d38cbb08 100644
--- a/apps/dokploy/templates/soketi/docker-compose.yml
+++ b/apps/dokploy/templates/soketi/docker-compose.yml
@@ -2,8 +2,7 @@ version: "3"
services:
soketi:
- image: quay.io/soketi/soketi:1.4-16-debian
- container_name: soketi
+ image: quay.io/soketi/soketi:1.6.1-16-debian
environment:
SOKETI_DEBUG: "1"
SOKETI_HOST: "0.0.0.0"
diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts
index c43ffc20..28af7c56 100644
--- a/apps/dokploy/templates/templates.ts
+++ b/apps/dokploy/templates/templates.ts
@@ -125,7 +125,7 @@ export const templates: TemplateData[] = [
{
id: "uptime-kuma",
name: "Uptime Kuma",
- version: "1.21.4",
+ version: "1.23.15",
description:
"Uptime Kuma is a free and open source monitoring tool that allows you to monitor your websites and applications.",
logo: "uptime-kuma.png",
@@ -218,7 +218,6 @@ export const templates: TemplateData[] = [
version: "v1.5.6",
description:
"Documenso is the open source alternative to DocuSign for signing documents digitally",
-
links: {
github: "https://github.com/documenso/documenso",
website: "https://documenso.com/",
@@ -231,7 +230,7 @@ export const templates: TemplateData[] = [
{
id: "nocodb",
name: "NocoDB",
- version: "0.251.1",
+ version: "0.257.2",
description:
"NocoDB is an opensource Airtable alternative that turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart spreadsheet.",
@@ -441,7 +440,7 @@ export const templates: TemplateData[] = [
{
id: "soketi",
name: "Soketi",
- version: "v1.4-16",
+ version: "v1.6.1-16",
description:
"Soketi is your simple, fast, and resilient open-source WebSockets server.",
logo: "soketi.png",
@@ -485,7 +484,7 @@ export const templates: TemplateData[] = [
{
id: "gitea",
name: "Gitea",
- version: "1.22.2",
+ version: "1.22.3",
description:
"Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD.",
logo: "gitea.png",
@@ -557,6 +556,124 @@ export const templates: TemplateData[] = [
tags: ["cloud", "monitoring"],
load: () => import("./portainer/index").then((m) => m.generate),
},
+ {
+ id: "influxdb",
+ name: "InfluxDB",
+ version: "2.7.10",
+ description:
+ "InfluxDB 2.7 is the platform purpose-built to collect, store, process and visualize time series data.",
+ logo: "influxdb.png",
+ links: {
+ github: "https://github.com/influxdata/influxdb",
+ website: "https://www.influxdata.com/",
+ docs: "https://docs.influxdata.com/influxdb/v2/",
+ },
+ tags: ["self-hosted", "open-source", "storage", "database"],
+ load: () => import("./influxdb/index").then((m) => m.generate),
+ },
+ {
+ id: "infisical",
+ name: "Infisical",
+ version: "0.90.1",
+ description:
+ "All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.",
+ logo: "infisical.jpg",
+ links: {
+ github: "https://github.com/Infisical/infisical",
+ website: "https://infisical.com/",
+ docs: "https://infisical.com/docs/documentation/getting-started/introduction",
+ },
+ tags: ["self-hosted", "open-source"],
+ load: () => import("./infisical/index").then((m) => m.generate),
+ },
+ {
+ id: "docmost",
+ name: "Docmost",
+ version: "0.4.1",
+ description:
+ "Docmost, is an open-source collaborative wiki and documentation software.",
+ logo: "docmost.png",
+ links: {
+ github: "https://github.com/docmost/docmost",
+ website: "https://docmost.com/",
+ docs: "https://docmost.com/docs/",
+ },
+ tags: ["self-hosted", "open-source", "manager"],
+ load: () => import("./docmost/index").then((m) => m.generate),
+ },
+ {
+ id: "vaultwarden",
+ name: "Vaultwarden",
+ version: "1.32.3",
+ description:
+ "Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs",
+ logo: "vaultwarden.svg",
+ links: {
+ github: "https://github.com/dani-garcia/vaultwarden",
+ website: "",
+ docs: "https://github.com/dani-garcia/vaultwarden/wiki",
+ },
+ tags: ["open-source"],
+ load: () => import("./vaultwarden/index").then((m) => m.generate),
+ },
+ {
+ id: "hi-events",
+ name: "Hi.events",
+ version: "0.8.0-beta.1",
+ description:
+ "Hi.Events is a self-hosted event management and ticket selling platform that allows you to create, manage and promote events easily.",
+ logo: "hi-events.svg",
+ links: {
+ github: "https://github.com/HiEventsDev/hi.events",
+ website: "https://hi.events/",
+ docs: "https://hi.events/docs",
+ },
+ tags: ["self-hosted", "open-source", "manager"],
+ load: () => import("./hi-events/index").then((m) => m.generate),
+ },
+ {
+ id: "windows",
+ name: "Windows (dockerized)",
+ version: "4.00",
+ description: "Windows inside a Docker container.",
+ logo: "windows.png",
+ links: {
+ github: "https://github.com/dockur/windows",
+ website: "",
+ docs: "https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-use-it",
+ },
+ tags: ["self-hosted", "open-source", "os"],
+ load: () => import("./windows/index").then((m) => m.generate),
+ },
+ {
+ id: "macos",
+ name: "MacOS (dockerized)",
+ version: "1.14",
+ description: "MacOS inside a Docker container.",
+ logo: "macos.png",
+ links: {
+ github: "https://github.com/dockur/macos",
+ website: "",
+ docs: "https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-use-it",
+ },
+ tags: ["self-hosted", "open-source", "os"],
+ load: () => import("./macos/index").then((m) => m.generate),
+ },
+ {
+ id: "coder",
+ name: "Coder",
+ version: "2.15.3",
+ description:
+ "Coder is an open-source cloud development environment (CDE) that you host in your cloud or on-premises.",
+ logo: "coder.svg",
+ links: {
+ github: "https://github.com/coder/coder",
+ website: "https://coder.com/",
+ docs: "https://coder.com/docs",
+ },
+ tags: ["self-hosted", "open-source", "builder"],
+ load: () => import("./coder/index").then((m) => m.generate),
+ },
{
id: "stirling",
name: "Stirling PDF",
diff --git a/apps/dokploy/templates/uptime-kuma/docker-compose.yml b/apps/dokploy/templates/uptime-kuma/docker-compose.yml
index ccd77552..0d4ade73 100644
--- a/apps/dokploy/templates/uptime-kuma/docker-compose.yml
+++ b/apps/dokploy/templates/uptime-kuma/docker-compose.yml
@@ -1,7 +1,7 @@
version: "3.8"
services:
uptime-kuma:
- image: louislam/uptime-kuma:1
+ image: louislam/uptime-kuma:1.23.15
restart: always
volumes:
- uptime-kuma-data:/app/data
diff --git a/apps/dokploy/templates/vaultwarden/docker-compose.yml b/apps/dokploy/templates/vaultwarden/docker-compose.yml
new file mode 100644
index 00000000..456f585b
--- /dev/null
+++ b/apps/dokploy/templates/vaultwarden/docker-compose.yml
@@ -0,0 +1,14 @@
+services:
+ vaultwarden:
+ image: vaultwarden/server:1.32.3
+ restart: always
+ environment:
+ DOMAIN: ${DOMAIN}
+ SIGNUPS_ALLOWED: ${SIGNUPS_ALLOWED}
+ volumes:
+ - vaultwarden:/data
+ ports:
+ - 80
+
+volumes:
+ vaultwarden:
diff --git a/apps/dokploy/templates/vaultwarden/index.ts b/apps/dokploy/templates/vaultwarden/index.ts
new file mode 100644
index 00000000..66aa1465
--- /dev/null
+++ b/apps/dokploy/templates/vaultwarden/index.ts
@@ -0,0 +1,28 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 80,
+ serviceName: "vaultwarden",
+ },
+ ];
+
+ const envs = [
+ "# Deactivate this with 'false' after you have created your account so that no strangers can register",
+ "SIGNUPS_ALLOWED=true",
+ "# required when using a reverse proxy; your domain; vaultwarden needs to know it's https to work properly with attachments",
+ "DOMAIN=https://vaultwarden.example.com",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}
diff --git a/apps/dokploy/templates/windows/docker-compose.yml b/apps/dokploy/templates/windows/docker-compose.yml
new file mode 100644
index 00000000..8a083370
--- /dev/null
+++ b/apps/dokploy/templates/windows/docker-compose.yml
@@ -0,0 +1,17 @@
+services:
+ windows:
+ image: dockurr/windows:4.00
+ volumes:
+ - win-storage:/storage
+ environment:
+ - VERSION
+ - KVM
+ devices:
+ # If in .env string 'KVM=N' is not commented, you need to comment line below
+ - /dev/kvm
+ cap_add:
+ - NET_ADMIN
+ stop_grace_period: 2m
+
+volumes:
+ win-storage:
\ No newline at end of file
diff --git a/apps/dokploy/templates/windows/index.ts b/apps/dokploy/templates/windows/index.ts
new file mode 100644
index 00000000..5e2728cb
--- /dev/null
+++ b/apps/dokploy/templates/windows/index.ts
@@ -0,0 +1,39 @@
+import {
+ type DomainSchema,
+ type Schema,
+ type Template,
+ generateRandomDomain,
+} from "../utils";
+
+export function generate(schema: Schema): Template {
+ const domains: DomainSchema[] = [
+ {
+ host: generateRandomDomain(schema),
+ port: 8006,
+ serviceName: "windows",
+ },
+ ];
+
+ const envs = [
+ "# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version",
+ "VERSION=win11",
+ "",
+ "# Uncomment this if your PC/VM or etc does not support virtualization technology",
+ "# KVM=N",
+ "",
+ "DISK_SIZE=64G",
+ "RAM_SIZE=4G",
+ "CPU_CORES=2",
+ "",
+ "USERNAME=Dokploy",
+ "PASSWORD=",
+ "",
+ "# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-language",
+ "LANGUAGE=English",
+ ];
+
+ return {
+ domains,
+ envs,
+ };
+}