* feat: upgrade Seafile template to 14.0
* fix(seafile): pin seafile-mc 14.0.9 and sdoc-server 2.0.11 instead of moving -latest tags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The template pins 2.10.7, which is fifteen minor releases behind the
current Dagu release. The compose file, basic auth variables, volume,
and port are unchanged and still valid on 2.25.4.
* fix(navi-music): update to version 4.3.0
* feat(navi-music): update entrypoint for improved startup behavior
* fix(navi-music): pin yt-cipher by digest (it only publishes a moving master tag)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add Puppetflow with Postgres template
* chore: bump Puppetflow templates to v2026.10.25
* feat: add second Puppetflow queue worker
* fix: send Puppetflow logs to stderr
* fix: harden Puppetflow Dokploy deployments
* fix: keep Dokploy default certificate handling
* fix: use Dokploy default HTTP domains
* chore: bump Puppetflow templates to v2026.10.26
* fix: configure Puppetflow locale and connection timeout
* chore: bump Puppetflow templates to v2026.10.27
* chore: bump Puppetflow templates to v2026.10.28
* chore: bump Puppetflow templates to v2026.10.29
* chore: bump Puppetflow templates to 2026.10.30
* chore: bump Puppetflow templates to 2026.10.32
* fix: align Pinokio production browser config
* chore: bump Puppetflow templates to v2026.11.1
* chore: bump Puppetflow templates to v2026.11.3
* chore: bump Puppetflow templates to v2026.11.4
* chore: bump Puppetflow templates to v2026.11.5
* chore: bump Puppetflow templates to v2026.11.6
* chore: bump Puppetflow templates to v2026.11.7
* fix(puppetflow): use service names instead of container_name
Templates must not set container_name; Compose service names already
resolve inside the project, so REDIS_HOST, PINOKIO_HOST, DB_HOST and the
internal URLs now point at them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(puppetflow): pinokio has no v2026.11.7 image, use v2026.11.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Update Uptime Kuma image to 'next' version
Uptime Kuma "latest" status is stuck at older version and the official resource recommends to use the "next" tag to get the latest version.
* fix(uptime-kuma): pin 2.5.8 instead of the moving next tag
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(appwrite): bump template to 2.6.1
- Update appwrite/appwrite images to 2.6.1 and console to 1.2.97
- Add ExifTool service for image metadata stripping
- Add S3 path-style, VCS Entire, and maintenance queue variables
- Add maintenance scheduler interval and worker pool sizing
- Harden healthcheck with readiness marker and raise PostgreSQL shm
- Bump orchestrator to 2.2.4
- Remove duplicate _APP_CONSOLE_HOSTNAMES entry
* feat(appwrite): bump template to 2.6.2
* fix(appwrite): keep wildcard routers below console
Dokploy generates the console/API routers without a priority, so Traefik
falls back to rule length. A Sites/Functions HostRegexp rooted at the apex
also matches the console host and is longer, so it 404s the console.
The generated router names include a per-domain serial, so the template
cannot set their priority. Pin the template-owned wildcard routers to the
lowest priority instead, for both web and websecure.
* feat(appwrite): bump template to 2.7.0
- appwrite/appwrite 2.6.2 -> 2.7.0 across all services
- Console 1.2.108 -> 1.2.138 (and fix VITE_APPWRITE_VERSION default)
- browser 0.3.8 -> 0.3.10
- orchestrator 2.2.4 -> 4.0.0
- add server key rotation vars (V2, CURRENT, OLDEST)
- add realtime limits, DNS_EXTERNAL, ALLOWED_INTERNAL_ADDRESSES, DB_MAX_CONNECTIONS
- add alert config, APNs push and DOMAIN_FUNCTIONS_FALLBACK
- add the optional appwrite-hansi code review service
- raise worker max coroutines from 79 to 83
* fix(appwrite): ship the reviews worker disabled by default
The self-hosted console profile keeps features.reviews off, so the Reviews
screen only shows up behind the internal debug flag. Running appwrite-hansi
without it means a container that cannot be configured from the UI, so keep
the service and its _APP_REVIEWS_* variables commented out and document the
three steps to opt in.
* chore: update the dossier version and disable germany's BA
* fix(dossier): match meta.json version to the v1.9.0 image
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(openwa): bump template to 0.25.0
- Update OpenWA image to 0.25.0
- Add 75s stop grace period for the longer bounded teardown
* feat(openwa): enable the MCP server by default
- Add mcp_enabled and mcp_readonly template variables
- Pass MCP_ENABLED and MCP_READONLY to the container
- Keep the read-only tool tier as the safe default
* feat(openwa): enable Swagger UI by default
Add an enable_swagger variable, wired to ENABLE_SWAGGER, so /api/docs is
served despite the upstream production default.
* feat: add calnode template
* feat: add commas to fix template
* feat: replace logo
* fix: add url prefix
* fix: Remove default value for litestream url when unconfigured
* fix(calnode): pin the exact 0.12.0 tag instead of the moving 0.12 tag
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* chore(libredb-studio): bump image to 1.2.0
* fix(libredb-studio): set version to 1.2.0 and update the engine counts
meta.json still pinned 1.0.0 while docker-compose.yml pulls 1.2.0, which the
blueprint rules require to match. The description also carried the 0.18.2
driver and engine counts; 1.2.0 ships 42 drivers reaching 69 named engines.
* fix: reject deprecated Docker Compose version field
* chore: remove deprecated version field in docker compose
* chore(orbit): drop the obsolete compose version key
orbit was merged after this PR was opened and still had version: '3.8' at
the end of the file, which the new validator check rejects.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* libredb-studio: bump to 1.0.0
* fix(libredb-studio): match meta.json version to the 1.0.0 image
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add Falco template
* fix: verify Falco template in Dokploy
* fix: make Telegram optional in Falco template
* fix(falco): default MONITORED_HOST so the template deploys out of the box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add Legejo template
* feat(legejo): pass the whole environment and list the optional variables
---------
Co-authored-by: Markus Rådberg <3110202+jularboolean@users.noreply.github.com>
* feat: add Shoutrrr social media scheduler template
* docs: record Shoutrrr deployment verification
* docs: clarify Shoutrrr health checks and polling units
* feat: add Dossier template
* docs: note Dossier dashboard timezone limitation
* fix(dossier): derive the password hash at startup so the template deploys
DOSSIER_PASSWORD must be an argon2id hash and the template shipped it empty
behind a :? guard, so the deploy always failed. The template now generates
DOSSIER_ADMIN_PASSWORD and the container hashes it with the bundled
hash-password tool before starting; a user-provided DOSSIER_PASSWORD hash
still takes precedence.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix(convex): update GHCR image path from get-convex to convex & bump convex version
* fix(convex): set meta version to the pinned image commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add standalone Harbor initialization source
* feat: add Harbor Dokploy blueprint and validation
* docs: record GitHub publication and remote build validation
* chore: scope Harbor contribution for upstream review
* chore(harbor): keep the PR inside blueprints/
Drop the repo-level validate-harbor workflow and the .gitignore entry; the
blueprint's own tools/ and tests/ still document how it was validated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: remove status-page, no longer in use
* chore: remove unused domain (status-page removed)
* fix(uptimekit): pin dash 5.2.1 and clickhouse 26.8-alpine instead of latest
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(uptimekit): select the bundled ClickHouse as time-series backend
UptimeKit 5.x defaults TIMESERIES_BACKEND to timescale, which needs the
TimescaleDB extension that postgres:18-alpine doesn't ship, so dash
crash-looped. The template already bundles ClickHouse.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix(senddock): report the floating image tag in template metadata
The compose file tracks ghcr.io/arkhe-systems/senddock:latest, but meta.json still
named 0.8.0 as the version. Nothing derives that field from the image, so the gallery
badge and the softwareVersion in the page metadata froze at 0.8.0 while a fresh
install already pulled 0.8.3, which reads as a template shipping a release with
defects that were fixed since.
Declaring latest matches what the other blueprints do when the image is not pinned to
a fixed tag, and it cannot drift again on the next release.
* fix(senddock): pin image to 0.8.3 and report that version
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
0.18.1 fixes GHSA-jwvh-6phv-j9jh, whose affected range this blueprint was
squarely inside: it sets STORAGE_PROVIDER=sqlite, and the advisory covers
every release from 0.8.0 through 0.18.0 on a server store.
The blueprint also seeds two accounts, admin and user. Where those two go
to different people who share a browser profile, that is the shape the
defect needs: the second to sign in received the first one's browser copy
of the workspace, with its saved connection passwords and its query
history. Both passwords come from this template's own generated secrets,
so by default the two logins belong to one deployer and nothing crosses a
privacy boundary; it is handing USER_PASSWORD to someone else that opens
it.
0.18.2 then adds a run of fixes across the PostgreSQL family, the
wire-compatible engines, MySQL, MongoDB, Redis and Oracle.
meta.json also said twenty-six drivers. Databend became a connection type
of its own in 0.18.1, where it had been reached as a relative of the MySQL
type, so the count is twenty-seven. The fifty-four named engines are
unchanged, because Databend only moved from one side of that sum to the
other.
One line is added beside the bump, because testing the upgrade turned up a
lockout the blueprint could not recover from. Since 0.18.0 ADMIN_PASSWORD
seeds the account table only while it is empty, so an operator who edits
it in Dokploy's Environment panel gets 401 on the new password while the
old one, which the panel no longer shows, still works. The app logs the
way out, "set ADMIN_PASSWORD_RESET=true and restart", but the compose
environment list is an allowlist: typing that variable into the same panel
never reached the container, so the advice could not be followed without
editing the blueprint itself. ADMIN_PASSWORD_RESET is now passed through
with an empty default. Measured on 0.18.2 with this file: empty leaves the
container with the variable defined and blank, both accounts sign in
normally and neither reset line appears in the log; with it set to true the
new password returns 200 and the old one 401; with the flag removed again
the new password keeps working. There is no USER equivalent in the
application, which the comment says, so that account is changed from
Studio's own Accounts screen.
Co-authored-by: yusuf-gundogdu <devgundogdu86@gmail.com>
* chore: remove duplicate appwrite-2 template (appwrite already provides this)
* chore: remove duplicate appwrite-2 template
The appwrite template is on 2.x (2.5.0 after #1215), so appwrite-2 is a
duplicate. The original removal was undone by a later merge of main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: update appwrite template to 2.4.0 with MariaDB, node-24/26, console domain
* feat: enable DocumentsDB and VectorsDB by default in appwrite 2.4.0 template
* feat: update appwrite template to 2.4.0 with MariaDB, node-24/26, console domain
* fix(appwrite): repair 2.4.0 template structure and console setup
- Restore [config] table so config.env/config.isolated parse correctly
(the env block had been swallowed into config.mounts[0], leaving the
deployment with no environment variables)
- Add missing mongo-entrypoint.sh mount so the mongodb service can start
- Remove the mariadb [[config.domains]] entry: it exposed the DB on
main_domain and duplicated the appwrite-console route
- Route the dedicated console domain via config.domains and drop the
broken HostRegexp Traefik labels; set _APP_CONSOLE_URL/HOSTNAMES
- Bump appwrite-console image to 1.2.55-self-hosted (2.4.0 console)
- Restore the pinned appwrite-builds volume name
- Drop the removed Appwrite Assistant env/service
* feat(appwrite): apply remaining 2.4.0 hardening (clickhouse logs, browser)
- ClickHouse: add the two 2.4.0 config mounts (clickhouse-config.xml for
system-log retention, clickhouse-init.sh to backfill TTLs on existing
tables) plus CLICKHOUSE_ALWAYS_RUN_INITDB_SCRIPTS=1; the files are
generated via [[config.mounts]] and bind-mounted from ../files/
- Browser: bump appwrite/browser 0.3.4 -> 0.3.6, set ALLOWED_HOSTS=appwrite
and public DNS resolvers to block SSRF to internal services
- Bump appwrite/geo 0.3.1 -> 0.3.2 (matches 2.4.0)
* feat(appwrite): bump template to 2.5.0
Update the Appwrite blueprint to the 2.5.0 release (published
2026-10-13), which only moves images with no new environment
variables:
- appwrite/appwrite 2.4.0 -> 2.5.0 across all services
- appwrite/new console 1.2.55-self-hosted -> 1.2.74-self-hosted
- openruntimes/executor 0.29.0 -> 1.1.2
Brings project passkeys, interval-based function schedules, and
runtime containers that survive executor restarts.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(umami): update to v3.4.0
* fix(umami): generate the database password instead of hardcoding "umami"
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add Cachkey template
* fix(cachkey): name the public service after the template, env as array
* fix(cachkey): unique internal API service name, APP_URL note
Single-node Wazuh 4.14.8 (manager, indexer, dashboard) adapted from the
official wazuh-docker single-node setup:
- internal TLS PKI generated on first deploy by wazuh-certs-generator into a
named volume (no host files)
- indexer internal users hashed from generated passwords before the security
index is initialized; no default credentials
- dashboard served over HTTP behind Traefik on the template domain
- agent ports 1514/1515 published on the host (raw TCP, can't go through
Traefik)
Closes#440
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Build from CopilotKit/OpenDots commit 625452e (package.json 0.1.0, upstream has
no tags yet) instead of the moving main branch, and set meta.json version to
0.1.0-625452e instead of "latest".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The template mounted the host's /var/run/tailscale, which does not exist on a
standard Dokploy server, so DockTail could never reach tailscaled. Use the
upstream sidecar setup: a pinned tailscale/tailscale container (userspace
networking, state and socket in named volumes) authenticated with
TAILSCALE_AUTH_KEY, sharing its socket with DockTail.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolves the conflicts with canary and removes the top-level version key from
the templates added since this PR was opened.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of #1191 (which targets main) onto canary:
- app/ and build-scripts/ dependency bumps from #1191
- signoz, timescaledb, valkey template.toml fixes from #1191
- supabase: kept canary's version (already parses under toml 4 after #1131/#1149)
- appwrite-2 (merged after #1191 was opened): escape the backslash in the
mongo entrypoint (\! -> \\!), which toml 4 rejects as an invalid escape
All 559 blueprints/*/template.toml parse with toml@4.2.0.
Co-authored-by: narcisonunez <narcisonunez@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
create-heyo-docs@0.2.3 writes "@heyo-sh/heyo-docs": "latest", which now resolves
to 3.4.1 and no longer exports heyoDocs, so astro build fails. Scaffold with
create-heyo-docs@3.1.0, pin @heyo-sh/heyo-docs@3.4.1, and set meta version.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
minio/minio images are no longer pullable. Run chrislusf/seaweedfs:4.48
as the 'minio' service with S3 on port 9000 and the same credentials, so
MINIO_ENDPOINT and the k3s ExternalName stay unchanged. Buckets are
created with weed shell in minio-init.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
As offered by the author: the portal depends on a new, unpinned image of
the author's own; the base template uses only official images.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
reloopsh/* images only publish a moving 'latest' tag (fe-dashboard also has
commit tags, the rest don't), so every image is pinned to the digest of the
2026-10-06 build. meta.json version reflects that build date.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The panel's mysql client requires TLS when loading the schema
("SSL is required, but the server does not support it") and MariaDB 10.11
doesn't offer it, so migrations failed and the panel returned 500. MariaDB
11.4 enables TLS by default. Also pin hydrodactyl to v6.4.1 and redis to
7-alpine, drop the MySQL-only auth flag and wait for a healthy database.
Verified on Dokploy: panel returns 200 «Hydrodactyl», database healthy.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The template shipped every S3_* variable empty while the compose requires
them, so it could never deploy. Feedbacks needs an HTTPS S3 endpoint in
production: the template now ships SeaweedFS (minio images are no longer
pullable) with a self-signed cert generated on first start and trusted via
NODE_EXTRA_CA_CERTS, plus a one-shot bucket job. External S3 can still be
used by overriding S3_*. The image digest is pinned in the compose file.
Verified on Dokploy: feedbacks returns 200, all services healthy.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With a 512m heap Elasticsearch 9 still uses ~1 GiB of anonymous memory
(direct buffers, metaspace, code cache, threads), so the 1 GiB
mem_limit got it SIGKILLed in a loop on the server (no shutdown log,
restart every ~1 min). bootstrap.memory_lock made it worse by pinning
pages. Remove memory_lock/memlock ulimits and raise ES_MEM_LIMIT to
1.5 GiB while keeping the heap at 512m.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Set ES_JAVA_OPTS=-Xms512m -Xmx512m and xpack.ml.enabled=false so
Elasticsearch fits its 1 GiB mem_limit on small hosts, and give the
healthcheck a 120s start_period so a slow first boot does not abort
the depends_on chain.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"storage-${domain}" pushes the first DNS label of Dokploy's generated
sslip.io hosts past 63 characters, so the storage domain never resolves
and browser uploads can't reach it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
localhost resolves to ::1 first in the image, but Next.js listens on IPv4
0.0.0.0 only, so the healthcheck always failed and Traefik never routed to
the unhealthy container (404).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The standalone image was deployed with no database, no Redis and no config,
so celery fell back to amqp://guest@127.0.0.1:5672 and the web never came up
(502); the domain also pointed at port 3000 while the image serves on 80.
Pin pretix/standalone:2026.8.0, add postgres:16 and redis:7, configure
pretix via PRETIX_* env vars (url, secret, database, redis cache/sessions,
celery broker/backend, mail), route the domain to port 80, and set meta
version and tags.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Host port 53 is usually already bound on Dokploy servers (systemd-resolved),
so publishing 53:8053 made the deploy fail. Publish DNS on SABLE_DNS_PORT
(default 1053; set to 53 once the host port is free) so the web console
works out of the box. Pin ghcr.io/drudge/sable to the 1.6.1 release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
busybox wget resolves localhost to ::1 first, but Nitro listens on
0.0.0.0 (IPv4 only), so the healthcheck always failed. The container
never became healthy and Traefik never routed the domain (404).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fluxer v1 images now refuse to start in production without
FLUXER_PROFILE_PSEUDONYM_SECRET (api unhealthy, users-shard crash loop).
Generate it as a template variable and pass it to all services.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MinIO images on quay.io/Docker Hub are no longer publicly pullable, so the
deploy failed at image pull. Storage now runs SeaweedFS (S3 on port 9000,
credentials orbit/MINIO_PASSWORD) and the bucket service uses mc from the
orbit-bucket image to create orbit-uploads and set its CORS rule for the
app origin (browser presigned PUT uploads).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
server and worker both mount the fresh named volume "data" at /data. The image
ships /data/media as a symlink, and when both containers are created at the same
time Docker populates the volume twice and fails with
"failed to create symlink ... /data/media: file exists". Ordering the worker
after the server makes the first-time copy happen once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dokploy writes [[config.mounts]] files to ../files/, not next to the
compose file. ./mongo-entrypoint.sh did not exist, so Docker created an
empty directory at /mongo-entrypoint.sh and bash exited 126.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"${disabled}" is not a Dokploy helper, so ZITADEL_TLSMODE was not a valid
--tlsMode value and zitadel exited 1 on start. Default the variable to the
literal value "disabled" (users can switch it to "external" behind HTTPS).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The product's own copy rule reads a numeral in front of a bare "engines" as the
count of drivers it ships, which is twenty-six. Fifty-four is the total once the
twenty-eight engines that speak an existing driver's wire protocol are counted,
so it needs the narrower noun the upstream README uses for the same figure.
Dokploy does not substitute variables in object items of an env array, so the
three [[config.env]] tables reached the container as literal ${...} and the app
started with empty ADMIN_PASSWORD, USER_PASSWORD and JWT_SECRET. The
[config.env] table form, which every other blueprint in this repo uses,
substitutes correctly. Same change as #1201.
0.18.0 is the current release. The description's engine count moves with it:
this release ships twenty-six drivers reaching fifty-four named engines,
where 0.17.0 reached forty-six.
Adds the blueprints/opendots entry for CopilotKit/OpenDots. No official
image is published, so the compose builds both app and browser targets
from the upstream repo, exposes 4310 only, and persists /data. Secrets
(OWNER_TOKEN, BROWSER_SECRET) are generated per deploy; the browser runs
without a compose profile because Dokploy does not activate profiles.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
Kaneo now ships web and API in one image (ghcr.io/usekaneo/kaneo,
API served under /api on port 5173). The old ghcr.io/usekaneo/api
image exits on start with "AUTH_SECRET is not set", so fresh
deployments of this template are broken.
- Replace backend/frontend services with the single kaneo service
- Set AUTH_SECRET and KANEO_CLIENT_URL; drop JWT_ACCESS and BACKEND_HOST
- Use one domain instead of separate frontend/backend domains
- Add healthchecks and wait for Postgres to be healthy
0.16.2 was current when this branch was last refreshed. The description also
said sixteen engines; 0.17.0 reaches eighteen, because Prometheus and Apache
Kafka were added since.
Adds the appwrite-mqtt push broker (MQTT over WebSocket on mqtt.<domain>), replaces the removed _APP_CONSOLE_URL_SCHEME with _APP_CONSOLE_URL, adds _APP_PWNED_PASSWORDS_DSN, and moves the console to 1.1.159, orchestrator to 2.2.2 and autogravity to 0.0.11 to match the stock 2.3.0 installer.
Dokploy v0.29.3 to v0.29.13 deploys templates with isolated deployment on unless the template sets isolated = false (older releases always isolate, v0.29.14+ never does by default). That mode attaches every service to an external <appName> network and never creates <appName>_default, so the orchestrator starts build jobs on a network that does not exist and the executor puts runtimes on a network of its own. The orchestrator cannot create or join networks itself, and the repo validator rejects a networks section, so the template opts out of isolation to keep the default network every service shares.
Run the headless Orca runtime (orca serve) on Dokploy. Orca publishes
no container image, so the compose builds one from the pinned upstream
release AppImage (amd64 or arm64) on Ubuntu 24.04, following the
official headless Linux server guide.
The runtime is served on one domain for both the WebSocket endpoint and
the web client. ORCA_PAIRING_ADDRESS sets the address advertised in
pairing links, and ORCA_SERVE_ARGS passes extra serve flags such as
--mobile-pairing for the Orca mobile app.
S3-compatible gateway over a POSIX backend with versioning, flat-file IAM
and the built-in WebUI exposed on the domain; S3 API and admin API ports
stay internal per the upstream Docker guide.
openruntimes-executor resolves its own container with gethostname()
against Docker's name filter. With hostname "exc1" the filter never
matches "<project>-openruntimes-executor-1", so the executor crash
loops with "Own container not found" (appwrite/appwrite#13016).
Mirror the appwrite blueprint: set hostname to the service name (a
substring of the generated container name) and point _APP_EXECUTOR_HOST
at http://openruntimes-executor/v1. Avoids container_name, which the
compose validator rejects and which is not deployment-unique.
openruntimes-executor looks itself up in Docker by matching its hostname
against the container name. Without container_name the generated name is
"<project>-openruntimes-executor-1", so the lookup fails and the executor
crash loops with "Own container not found" (appwrite/appwrite#13016),
leaving site/function deployments stuck in "building".
Add a console_domain variable (defaults to console.<main_domain>) and
route the Console, API (/v1) and Realtime (/v1/realtime) on that host,
while keeping the existing main-domain routes intact. Point
_APP_CONSOLE_DOMAIN and _APP_CONSOLE_HOSTNAMES at the console host so
the Console can reach the API on its own origin and can be protected
independently (e.g. Cloudflare Access).
Picks up the 2.1 and 2.2 releases on top of the 2.0 rebuild: console
1.1.96 self-hosted build, orchestrator 2.2.0, the autogravity service, and
the env changes from those releases (executions are ClickHouse only, the
pool adapter and legacy logging providers are gone).
Use depends_on conditions so appwrite does not start before its backing
services are healthy. Compose rejects interpolation in depends_on keys,
so postgresql is referenced by its literal service name.
Appwrite serves function/site previews on <sub>.<functionsDomain> and
<unique>.<sitesDomain>. Dokploy rejects wildcard hosts in template.toml,
so add Traefik HostRegexp labels on the appwrite service, matching the
existing appwrite blueprint.
Also disable _APP_ROUTER_AUTO_CERTIFICATES since Dokploy terminates TLS
and the bundled Appwrite Traefik is not deployed.
Add a self-hosted Appwrite 2.2 stack adapted from the official
docker-compose, using Dokploy domains instead of the bundled Traefik.
- Fix the compose file so it parses: drop the dangling networks block that
duplicated the appwrite service and created phantom gateway/runtimes
services
- Pin all images to explicit versions (appwrite/appwrite:2.2.0, etc.)
- Add restart: unless-stopped to the always-on services and to the
separate-profile workers
- Bump metabase/metabase image from v0.50.8 to v0.63.18
- Bump postgres from 14 to 16 and persist data with a named volume
- Generate the database password via the password helper instead of
hardcoding it
- Add restart policy, expose port and depends_on with healthchecks
Clearing ANON_KEY and SERVICE_ROLE_KEY is a supported mode — Envoy guards
every legacy branch — but four places broke when you did it. storage,
studio, functions and the realtime healthcheck all read the legacy pair
directly, and storage can never use an sb_ key because it calls PostgREST
at rest:3000 and never traverses the gateway. All four now resolve
${ANON_KEY:-${ANON_KEY_ASYMMETRIC}}. Verified with docker compose config
against a real deployment env: all six land on the ES256 JWTs and the
healthcheck token is non-empty.
Storage S3 block, with the three traps: REGION is read as the S3 signing
region when STORAGE_S3_REGION is unset, and this template ships it as
"stub"; STORAGE_S3_DISABLE_CHECKSUM is needed for providers that reject
the SDK's CRC32 and appears in no upstream file; GLOBAL_S3_PROTOCOL is
in the official compose and read nowhere in supabase/storage. Also noted
that imgproxy needs no S3 config — storage hands it a presigned URL.
STORAGE_TENANT_ID is the top-level key prefix, so it is permanent.
Two more warnings from a real first deploy: the domain is interpolated at
creation, so editing the Domains tab later leaves API_EXTERNAL_URL — and
therefore every token's iss — pointing at the old host; and the ES256
six-value swap does not touch the legacy pair.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three fixes found by deploying this blueprint and testing it surface by surface.
The functions service sets SUPABASE_URL to the internal gateway address, while
Auth signs tokens with API_EXTERNAL_URL as the issuer. Supabase's own edge
function JWT helper (_shared/jwt/default.ts) derives its expected issuer from
SUPABASE_URL unless SB_JWT_ISSUER is set, so it rejects every valid token with
an issuer mismatch. Passing SB_JWT_ISSUER through fixes that, and is inert for
functions that do not read it.
The ES256 procedure had three problems. It told you to clone supabase/supabase,
which is a very large monorepo, for one 7 KB script; fetching that file is
enough and node is its only requirement. It omitted --update-env, without which
only four of the six values are printed at all — ANON_KEY_ASYMMETRIC and
SERVICE_ROLE_KEY_ASYMMETRIC reach .env alone, so "replace all six with the ones
it prints" could not be followed. And the script exits 1 after writing the keys,
because it then looks for a docker-compose.yml to patch that is not there and
need not be, since this blueprint already wires all four variables; that made a
successful run look like a failure.
Also documents that pg_graphql is not installed on a fresh database, so the
/graphql/v1 route the gateway already exposes answers with an error until one
statement is run. The hosted platform ships it enabled, so this is a real
difference for code moving across.
Verified against a live deployment: the documented steps run as written, all six
values land, and the issuer now matches so edge-function JWT verification
succeeds. Blueprint validators and generate-meta --check all pass.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017DjX4ai6xiixeV8knW9Hpa
Appwrite 2.0 replaces the engine, ships the new root-path console and
defaults new installs to PostgreSQL, so the template is rebuilt from the
stock 2.0.0 installer output rather than bumped:
- PostgreSQL (appwrite/postgres) is the database; MariaDB/MongoDB and
their init mounts are dropped.
- Combined worker/scheduler topology (appwrite-worker, appwrite-task-scheduler)
replaces the per-queue worker containers.
- New services: orchestrator (builds), clickhouse (usage/executions),
appwrite-geo; executor bumped to 0.29.0, console to appwrite/new.
- Console is served at / with the API on /v1 and /.well-known and the
realtime server on /v1/realtime.
- Runtime and build containers join the stack's own Compose network and
the builds volume is pinned per project via COMPOSE_PROJECT_NAME.
The template generates SUPABASE_PUBLIC_URL, API_EXTERNAL_URL and
ADDITIONAL_REDIRECT_URLS with https://, which is right for a public domain with
a certificate. Dokploy creates the template's domain with none, so until one is
enabled the domain answers on http only and those three values point at a
scheme that does not respond.
Measured on a live deploy: the stack reports 11/11 healthy and the gateway
answers http with Studio's 401 basic-auth challenge, while https returns 404 —
so nothing looks broken, but Studio's own calls fail, Envoy's CORS check
compares Origin against the https string and refuses, and GoTrue builds its
issuer, OAuth redirects and email links from the dead scheme.
Also records that Let's Encrypt cannot rescue a private address: an sslip.io
name pointing at a Tailscale 100.x or a LAN address cannot be validated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A multi-agent audit of the Envoy port compared the blueprint against
supabase/supabase@master, against Dokploy's own source, and against the repo's
conventions. Three findings survived an adversarial refute pass and two more
were traced to the same cause. All five are divergences from official that
predate this branch, but they sit on the surface this branch touches.
- template.toml: API_EXTERNAL_URL gains /auth/v1, matching official
docker/.env.example:101 since supabase e7abda8d (PR #47640, 2026-07-07).
Without it GoTrue advertises https://<domain>/callback for every OAuth and
SAML flow, and Envoy's lds routes bare /callback to the `/` catch-all — that
is Studio, not auth. Measured: /auth/v1/authorize returns GoTrue's 400, while
/callback returns Studio's 401 basic-auth challenge.
- template.toml: add the /volumes/functions/deno.jsonc import map and point
main/index.ts at it, and take official's `hello` sample. Upstream shipped
these in 9ef9f1b8 (2026-08-14) and f5f897a2 (2026-08-28); the blueprint's
functions volume was still at the 2023-era deno.land/std sample with
importMapPath = null, so no function written against current Supabase docs
could resolve @supabase/server. Also injects SUPABASE_FUNCTION_SLUG.
- docker-compose.yml: restore official's SELinux flags on the shared functions
directory — `:z` not `:Z`, and `:ro` back on Studio's copy. `:Z` applies a
private MCS label, so mounting one host directory into two containers with
it revokes the first container's access on an SELinux host. Every other bind
flag in the file already matched official; these three were the only drift.
- meta.json: version becomes 2026.08.03-3. The images are unchanged from
official's 2026.08.03 snapshot, so 2026.08.17 advertised a state the template
does not ship.
- template.toml: API_GW_HTTP_PORT is inert, because the port is pinned by
`expose` and by the domain block. The comment above it said the opposite.
- instructions.md: two operational gaps the audit surfaced. Renaming kong to
api-gw makes Dokploy reject a redeploy of an existing service until the
domain's Service Name is edited. And the Postgres data directory is a bind
mount, so Dokploy's Volume Backups cannot see it, deleting the service
destroys it regardless of the delete-volumes toggle, and "redeploy with fresh
volumes" does not reset the database.
Re-verified end to end on Docker 29.4.0: all three repo validators pass, all 11
services healthy, and the eight original checks still pass. Two new ones: the
hello sample returns 200 {"message":"Hello from Edge Functions!"} for both
sb_publishable_ and sb_secret_ keys — proving the import map resolves — and
/auth/v1/settings and /auth/v1/authorize reach GoTrue.
Note a deliberate behaviour change from official: the new sample declares
auth: ["publishable","secret"], so a legacy anon JWT now gets a 401 with an
explanatory INVALID_API_KEY body where the old sample accepted it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Official Supabase made Envoy the default API gateway on 2026-08-11 (PR #48153,
self-hosted release 0.8.0) and shipped a CORS fix for /pg/ routes on 2026-08-17
(PR #49136) that only Envoy carries. This blueprint still shipped Kong.
Changes:
- docker-compose.yml: rename `kong` to `api-gw`, on envoyproxy/envoy:v1.39.0.
TCP healthcheck because the image has no curl or wget. Expose 8000 only —
Envoy has no 8443 listener. Env vars follow official: ANON_KEY /
SERVICE_ROLE_KEY replace SUPABASE_ANON_KEY / SUPABASE_SERVICE_KEY, every
KONG_* is dropped, and SUPABASE_PUBLIC_URL is added for #49136. Rename the
three internal references to the gateway, and add official's `functions`
healthcheck.
- template.toml: swap the two Kong mounts for the four envoy ones, copied from
supabase/supabase@master. serviceName becomes `api-gw`; KONG_HTTP_PORT
becomes API_GW_HTTP_PORT and KONG_HTTPS_PORT is dropped.
- meta.json: version marker names the Envoy switch.
- instructions.md: Kong replaced by Envoy in all four places, plus a note that
Studio's basic-auth credential is a SHA1+base64 hash of DASHBOARD_PASSWORD
computed by Envoy's entrypoint at startup.
Two Dokploy adaptations, deliberate and both needed:
- No `networks:` aliases block and no `ports:` mapping — validate-docker-compose
rejects both. The alias exists upstream only for backwards compatibility, and
nothing here still points at `kong`.
- cds.yaml points the realtime cluster at `realtime`, not at official's
`realtime-dev.supabase-realtime` container_name, because this blueprint sets
no container_name. lds.template.yaml is byte-identical to official, so the
Host header realtime uses for tenant resolution is unchanged.
Verified locally against Docker 29.4.0 / Compose v5.1.2, rendering the template
the way Dokploy does. All 11 services healthy; legacy keys work; sb_publishable_
is blocked by RLS while sb_secret_ reads the row; Studio basic auth challenges
and accepts; /realtime/v1/api/tenants and /realtime/v1/api/openapi return 403
and the /rest/v1/ root stays service-role only; an OPTIONS to /pg/ returns
access-control-allow-origin matching SUPABASE_PUBLIC_URL; a realtime channel
join over ?apikey=sb_publishable_… replies status ok; and the sample edge
function returns its response.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Self-hosted OpenStatus (status pages + uptime monitoring) following the
official docker-compose.github-packages.yaml setup: local libSQL database,
one-shot migration runner built from the pinned upstream commit, workflows,
API server, dashboard, status-page, and the private-location ingest server.
All app images pinned to upstream commit e1a9825; Tinybird analytics run in
no-op mode by default.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Same root cause as odoo_19 (#1108, fixed in #1110): the compose file
bind-mounts ../files/config over /etc/odoo, but with mounts = [] the
directory is empty, hiding the image's /etc/odoo/odoo.conf. As a result
wait-for-psql.py crashes with configparser.NoSectionError: No section:
'options' and the web container never starts.
Ship odoo.conf through the template config mount instead, with
proxy_mode enabled so websocket/POS/livechat work behind Traefik.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(postiz): pass all social provider env vars and fix Temporal healthcheck
* fix(postiz): drop env vars Postiz does not read, unset NOT_SECURED
- GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET are not read by Postiz:
the Google auth provider and GMB both use YOUTUBE_CLIENT_ID
(google.provider.ts, gmb.provider.ts).
- NEXT_PUBLIC_FRONTEND_URL does not exist in the Postiz codebase.
- Postiz checks NOT_SECURED for truthiness only, so the string
"false" still enables insecure mode; remove the variable so
secure cookies are actually on for the HTTPS deployment.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* data permission right & Traefik configuration
Permession to write on data directory is mandatory for odoo server to run
Added Traefik configuration to allow POS and live chat to run
* fix(odoo_19): provide odoo.conf via config mount and enable proxy_mode
The empty ../files/config bind mount was hiding the image's
/etc/odoo/odoo.conf, crashing wait-for-psql.py (NoSectionError:
'options') in a restart loop. Ship odoo.conf through the template
mount instead, with proxy_mode enabled so websocket/POS/livechat
work behind Traefik (threaded mode serves /websocket on 8069, so
no extra routing is needed). Revert the manual Traefik labels
(invalid compose: labels must be a mapping; Dokploy generates
routing from template.toml) and the chown command (the named
volume already gets odoo ownership from the image).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
- Force the MySQL healthcheck over TCP: with --host=localhost it pings the unix socket, which answers during MySQL's temporary init phase before networking is up, so db-import started too early and failed with connect error 111.
- Serialize the SOAP bootstrap after the admin bootstrap: both jobs insert into acore_auth.account concurrently and hit a MySQL deadlock (Error 1213) that bootstrap-account does not retry.
- Default REQUIRE_EMAIL_VERIFICATION to false via a new PORTAL_REQUIRE_EMAIL_VERIFICATION variable: the template ships empty SMTP settings, so the portal crash-looped on first deploy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ghcr.io/plausible/community-edition v2.1.5 -> v3.2.1 (latest stable release)
- clickhouse-server 24.3.3.102-alpine -> 24.12-alpine, matching the official
CE v3.2.1 compose.yml
- CLICKHOUSE_SKIP_USER_SETUP=1 on the events db: required by ClickHouse
24.11+ images so Plausible can connect as the passwordless default user
(without it the app crash-loops with AUTHENTICATION_FAILED)
- plausible-data volume + TMPDIR per the official v3 compose
Deploy-verified on a Dokploy instance: fresh import, all 3 containers
running, HTTP 200 on the domain with the Plausible login page.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
#1107 targeted main instead of canary and was squash-merged there. This merge
brings blueprints/openseo into canary and keeps both histories converged so
the next canary->main release stays conflict-free.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Add OpenSEO template
OpenSEO is an open source, self-hosted alternative to Semrush and
Ahrefs (keyword research, rank tracking, backlinks, site audits).
Requires a DataForSEO API key, which the template leaves blank for
the user to fill in via the Dokploy UI.
* openseo: pin image to v0.1.6 and set ALLOWED_HOST so Vite preview accepts the Dokploy domain
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
* fix(appwrite): enable HTTPS for function API endpoint
* appwrite: document that _APP_OPTIONS_FORCE_HTTPS=enabled requires an HTTPS domain
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat: update calcom image version and add QOL Env Var for public signup
* fix: add quotes to env var definition
* fix: add more information for selfhosting
* feat: add env vars and config for Email SMTP Creds
* chore(calcom): bump meta.json version to v6.2.0 and fix ARM comment line reference
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
* feat: add Instatic template
Instatic is a self-hosted, open-source visual CMS combining a canvas
editor, content engine, and static site publisher. Deployed as a
single container backed by SQLite, with uploads and DB on one
persistent volume.
Signed-off-by: Tekena Solomon <tekena157@gmail.com>
* fix: add init container to fix Instatic storage volume permissions
Signed-off-by: Tekena Solomon <tekena157@gmail.com>
* fix(instatic): accept both https and http public origins so the setup wizard works before HTTPS is enabled
---------
Signed-off-by: Tekena Solomon <tekena157@gmail.com>
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
- rustrak-full: the Next.js standalone UI bound to $HOSTNAME (container id),
so Traefik got connection refused and the UI domain returned 502 (pre-existing
on canary, confirmed by deploying both #1102 and canary). HOSTNAME=0.0.0.0
was deploy-verified: UI 200 "Rustrak - Error Tracking System".
- trmnl-larapaper: #1101 bumped to 0.33.0 (Apr 2026); upstream is at 0.40.0.
0.40.0 was deploy-verified on the same template: healthy, /, /login,
/register, /up all 200.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Both Rustrak blueprints shipped abians7/* images pinned to v0.2.1, twelve
minor versions behind the current release, and linked to the old personal
repo. Updated to the official rustrak/* images on latest, refreshed the
metadata, and replaced the logo with the current mark.
The memory figure in the description is now measured rather than estimated:
32 MB resident at idle with SQLite, from docker stats on these images.
* feat: add postgres-pgadmin template
* feat: expose postgres via second domain
Add postgres_domain variable and second [[config.domains]] for
postgres:5432 alongside pgadmin:80, so both the DB and the web UI
are reachable via Dokploy domains.
* fix(postgres-pgadmin): drop HTTP domain on postgres:5432, pre-register server in pgAdmin, bump pgAdmin to 9.17
- Remove the second [[config.domains]] pointing an HTTP host at postgres:5432 (Traefik returned 502).
- Mount servers.json + pgpass via config.mounts so pgAdmin comes with the bundled PostgreSQL pre-registered and connects without a password prompt (pgpass is copied to the data volume with 0600 for uid 5050).
- Bump dpage/pgadmin4 8.13 -> 9.17.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
- ghcr.io/trixtylab/kotonoba:latest -> 1.0.19 (same digest as latest today); meta.json version 1.0.19.
- ADMIN_DOMAIN is documented upstream as a bare hostname, pass ${main_domain} without scheme.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Instatic is a self-hosted, open-source visual CMS combining a canvas
editor, content engine, and static site publisher. Deployed as a
single container backed by SQLite, with uploads and DB on one
persistent volume.
Signed-off-by: Tekena Solomon <tekena157@gmail.com>
- Changed frontend, backend, livekit, and garage URLs to HTTP for sslip.io compatibility.
- Added NODE_ENV set to "development".
- Introduced optional SMTP and integration keys with placeholders.
- Added operational and security settings including rate limits and cookie configurations.
- Introduced a new template.toml file for Nebulynk blueprint.
- Defined variables for frontend, backend, LiveKit, and garage domains.
- Configured PostgreSQL and storage S3 credentials with secure password generation.
- Set up environment variables for services including JWT and API keys.
- Specified domain configurations for frontend, backend, LiveKit, and garage services.
* feat: add DockRoute template
* fix: pass template env vars through to the dockroute container
The compose file had no environment block, so the DOCKROUTE_*/CLOUDFLARE_*
variables defined in template.toml never reached the container - switching
the provider to cloudflare from the Dokploy environment tab would have
silently stayed in the log dry-run mode.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Louez is an open-source equipment rental platform (AGPL-3.0): a booking
storefront with live availability plus a back office for reservations,
customers, PDF contracts and statistics.
The blueprint brings up the app, MySQL 8.4 and a private MinIO bucket for
product images. Louez installs its own database schema on first boot.
Didacta is a fair-code self-hosted LMS. The blueprint ships the app image
alongside a pgvector-enabled Postgres (the baseline migration runs
CREATE EXTENSION "vector", so a plain postgres image fails on first boot)
and Redis.
A single domain is enough: the container runs the API on :4000 and the web
on :3000, and Next.js rewrites /api/*, /healthz and /readyz to the internal
API, so the domain only targets port 3000.
* Add Langfuse template
Open-source LLM engineering platform: tracing, prompt management,
evaluation and cost/usage analytics for LLM apps.
Stack: langfuse-web + langfuse-worker (image tag 4), Postgres 17,
ClickHouse 25.12, Redis 7, MinIO. Adapted from the official
docker-compose.yml at https://github.com/langfuse/langfuse/blob/main/docker-compose.yml,
with all secrets generated via Dokploy's template.toml helpers instead
of the upstream hardcoded defaults.
MinIO gets its own domain because Langfuse's web UI issues presigned
S3 URLs that the browser fetches directly (media attached to traces),
so that endpoint has to be reachable from outside the internal network.
Validated locally with build-scripts/validate-template.ts,
validate-docker-compose.ts and generate-meta.js --check (all pass),
plus `docker compose config` with sample secrets to confirm the
langfuse-web override of LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT resolves
correctly. Not yet deployed on a live Dokploy instance.
* fix: bind langfuse-web to 0.0.0.0 so Traefik can reach it
Docker sets HOSTNAME to the container id, and Next.js standalone binds to
it, which resolves to a single network's IP. With Dokploy's proxy network
attached as a second network, Traefik got connection refused (502).
Setting HOSTNAME=0.0.0.0 fixes routing; verified with a live deploy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat: add Waxum template
* fix(waxum): pin SQLITE_PATH inside the mounted session volume
Waxum's default SQLite path already resolves inside
WHATSAPP_STORAGE_PATH, so this was already persisted, but make it
explicit so it doesn't depend on undocumented default derivation
surviving a redeploy.
Addresses: https://github.com/Dokploy/templates/pull/1074#pullrequestreview-4883962555
---------
Co-authored-by: fdciabdul <taqin2731@gmail.com>
* fix(supabase): generate the new API keys and wire up JWKS verification
The template has carried the plumbing for Supabase's new opaque API keys
since #872 — kong-entrypoint.sh builds the Lua translation expressions and
kong.yml registers the keys as key-auth credentials — and #1068 added the
studio/kong compose references while aligning with upstream.
But four of the variables that plumbing reads have never been declared in
template.toml, so they never reached the Environment tab:
SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY,
ANON_KEY_ASYMMETRIC, SERVICE_ROLE_KEY_ASYMMETRIC
kong-entrypoint.sh gates on the first two being non-empty, so every deploy
silently took the legacy-only branch and users had no field to fill in.
Generate them from [variables] instead:
- SUPABASE_PUBLISHABLE_KEY / SUPABASE_SECRET_KEY as opaque sb_* strings
- ANON_KEY / SERVICE_ROLE_KEY move to [variables] so ANON_KEY_ASYMMETRIC
and SERVICE_ROLE_KEY_ASYMMETRIC can reuse the same JWT
Kong substitutes whatever token those hold and every backend already
verifies HS256 with JWT_SECRET, so the opaque keys work without an EC
keypair (which the dokploy helpers cannot generate). Clients still only
ever hold an opaque string. JWT_KEYS / JWT_JWKS stay empty as a
documented opt-in for real ES256.
Also fixed while in here:
- JWT_JWKS was missing entirely. GOTRUE_JWT_KEYS was already enabled, so
anyone setting a real JWKS got Auth signing ES256 tokens that PostgREST,
Storage, Realtime and Functions had no way to verify. Wire it into all
four verifiers.
- Restore two routes kong.yml dropped: /realtime/v1/api/tenants and
/realtime/v1/api/openapi were reachable with the anon key, and the
PostgREST OpenAPI root at /rest/v1/ was anon-readable (supabase#42949).
Needs KONG_ROUTER_FLAVOR: expressions, as upstream sets.
- graphql-v1 had key-auth hide_credentials: true. key-auth runs before
request-transformer, so the apikey header was stripped before the Lua
expression could read it and service_role GraphQL requests were
silently downgraded to anon.
- DB_ENC_KEY was hardcoded to the well-known "supabaserealtime" default;
generate REALTIME_DB_ENC_KEY instead.
- functions/main/index.ts was the old remote-JWKS version pinned to
deno.land/x/jose@4.14.4; sync with upstream (jsr:@panva/jose@6 and
local SUPABASE_JWKS).
Verified against all 11 services running locally: an RLS-protected table
confirms anon and publishable keys are blocked while service_role and
secret keys read the row, so the opaque keys really are translated and
not downgraded. Storage and Realtime still verify HS256 with JWT_JWKS
empty. 21/22 end-to-end checks pass; the last was the test not following
Studio's redirect.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(supabase): match dokploy hash helper semantics (length = chars, not bytes)
Dokploy's generateHash(length) returns exactly `length` hex characters,
not `length` random bytes hex-encoded. Realtime requires DB_ENC_KEY to be
exactly 16 characters (AES-128), so ${hash:8} produced an 8-char key and
the realtime container crash-looped. Bump to ${hash:16}, and bump the
opaque API key segments to ${hash:22}/${hash:8} to match the intended
sb_<role>_<22>_<8> shape.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
* feat: add NaviMusic blueprint template with docker-compose and configuration support for NaviMusic #1058
* fix: align NaviMusic blueprint metadata
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* fix: remove invalid NaviMusic env comment
* fix: pin NaviMusic to 4.1.0 and keep container alive without credentials
4.1.1+ throws at startup unless a valid YouTube OAuth2 refresh token
(interactive device-code flow) is provided, so no placeholder config can
ever boot those tags. 4.1.0 is the newest release that boots without it.
Also wrap the entrypoint so a clean exit (empty/invalid DISCORD_TOKEN is
logged, not thrown) idles with instructions in the logs instead of
restart-looping; non-zero exits still hit the restart policy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat: add Novu self-hosted notification template
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: enhance Novu template with comprehensive environment variable configuration
Added a detailed environment variable section to the Novu template, including secrets, feature flags, service URLs, and database configurations. This update improves clarity and usability for self-hosted deployments.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* Update forgejo template; bumps Forgejo version to 15; fixes git push over ssh
* updates template compose and toml to use internal port mapping
* fix: bump Forgejo to 16, use expose per repo convention, drop HTTP domain on SSH port
- codeberg.org/forgejo/forgejo:15 -> :16 (current stable, 16.0.2)
- ports -> expose (repo convention since #1053; Traefik reaches the
container over the docker network, no host port publishing needed)
- remove the [[config.domains]] entry on port 22: Dokploy domains are
Traefik HTTP routers and cannot proxy SSH (returned 500 in testing)
- drop empty FORGEJO__server__SSH_PORT= and SSH_LISTEN_PORT overrides
(image defaults already listen on 22)
- clean comment/blank entries from template.toml env array
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: normalize template.toml mounts across all blueprints (closes#1047)
- 79 blueprints declared a bare [[config.mounts]] header (one empty array
element in TOML) -> replaced with the repo idiom 'mounts = []'
- 38 blueprints carried doc-style mount blocks (name/mountPath/description)
that don't match the schema (filePath/content) and are inert in Dokploy's
template processor -> removed; their named volumes already live in each
docker-compose.yml
- penpot: duplicate 'expose' map key made its docker-compose.yml invalid
YAML -> merged into one expose list
After this, validate-template.ts passes for all 502 blueprints. The
remaining validate-docker-compose.ts flags are the intentional host-port
templates (mail/game/streaming protocols: poste.io, mailu, oryx, fivem,
lodestone, etc.) which the validator does not yet model as exceptions.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: validator opt-out marker for intentional host ports + annotate rustdesk
The validate-docker-compose CI on this PR was failing on rustdesk's
hbbs/hbbr port mappings (21115-21119) — intentional host-published ports
for the RustDesk relay/rendezvous protocol, which Traefik cannot route.
Adds a '# dokploy: allow-host-ports' top-of-file marker that downgrades
the port-mapping errors to warnings for such protocol templates
(mail/game/streaming/VPN/remote-desktop), and annotates rustdesk.
Other exception templates (poste.io, mailu, oryx, fivem...) can be
annotated case-by-case as the weekly audit (#1049) surfaces them.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Align the template with the current upstream self-hosted stack
(supabase/postgres 17.6.1.136, studio 2026.08.03, kong 3.9.3),
remove the deprecated analytics/vector services and switch
Studio/pg-meta to the postgres role per upstream guidance.
Closes#1067
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* Add Yuvomi template
Privacy-first, self-hosted family planner.
- Image pinned to 0.71.10 (latest stable GHCR tag)
- 4 named volumes (data/backups/modules/documents)
- SESSION_SECRET via ${password:64} helper
- Single domain on port 3000
- Healthcheck wired
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* chore(yuvomi): bump image to 1.85.0
The PR pinned ghcr.io/ulsklyc/yuvomi:0.71.10, but upstream's latest
stable release is v1.85.0. Bump the compose image tag and meta.json
version to match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(templates): add Creed self-host template
Adds a Dokploy blueprint for Creed (creed.md), built from source since
no official Docker image exists yet. Requires an external Supabase
project (schema pushed via the Supabase CLI), so only what can be
generated locally (CREED_ENCRYPTION_SECRET) is auto-filled; Supabase,
Stripe, OpenRouter, Resend, and GitHub OAuth vars are left blank with
setup steps documented in the mounted README.
NEXT_PUBLIC_* vars are threaded through as Docker build args (not just
runtime env), since Next.js inlines them at build time and the app
hard-fails the build if NEXT_PUBLIC_SITE_URL is unset — this was
caught by an actual `docker compose build` run against the upstream
repo, not just template validation.
Verified with docker compose build/up: image builds cleanly, container
boots, / returns 200, and /api/health correctly reports "degraded"
with Supabase unconfigured as expected.
* Pin creed build context and refactor env
- Pin creed docker-compose build context to a specific commit
hash to ensure reproducible builds
- Expose port 3000 in docker-compose (use expose instead of ports)
- Update meta.json version from latest to the pinned hash e9b096d
- Convert template.toml env block from [config.env] to a single env
array
- Keep the README.md mount in place
* Modify docker-compose build context URL
Updated the build context URL to the main branch.
* fix(creed): pin build context and move env under [config]
Restore the commit pin so the inline Dockerfile matches the pre-monorepo
layout, and place env under [config] before domains so Dokploy imports
the environment correctly.
* Add Open Design template
Open Design is a local-first, open-source design tool that ships as a
single self-contained container (no external DB or cache). Adds the
blueprint (docker-compose.yml + template.toml + logo) and a meta.json entry.
* Use node-based healthcheck for Open Design template (matches upstream; verified locally)
* Pin Open Design image to 0.16.1 for reproducible deploys
Replace :latest with the immutable released tag ghcr.io/nexu-io/od:0.16.1
in docker-compose.yml and set the matching version in meta.json, per the
repo pinning convention (AGENTS.md). Tag 0.16.1 verified: /api/health
returns 200 and the node-based healthcheck passes.
* Allow both http and https origins for Open Design template
Dokploy's auto-generated domain is served over plain HTTP by default (no
cert), so OD_ALLOWED_ORIGINS=https://${main_domain} alone made the daemon
reject the browser's http origin with 403, breaking the app after the
onboarding shell loaded. List both schemes so the template works on the
default HTTP domain and after a user adds an HTTPS certificate. Verified
against a live deploy: listed origin -> 200, unlisted -> 403; the daemon
supports comma-separated multi-origin per deploy/README.md.
* Disable daemon API auth so the Open Design web UI loads
The daemon token-gates its API when bound to 0.0.0.0 (every container),
and a browser has no way to present that bearer token, so the web UI's
bootstrap calls all returned 401 and the app failed to load. Set
OD_DISABLE_API_AUTH=1 (the daemon's documented escape hatch) so the UI
works on deploy. Add a README noting the instance is then open (front it
with auth/HTTPS if internet-facing) and how to enable AI features.
Verified end to end against a live deploy on a real domain.
---------
Co-authored-by: Abhiigg <abhi@incrediblegoodguys.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
- Point the image at ghcr.io/arkhe-systems/senddock:latest so fresh
deploys always get the current release without a per-release PR.
- Remove DEPLOYMENT_MODE (self-host is the default now; the cloud flag
became the boolean CLOUD).
- Remove SENDDOCK_LICENSE_KEY (Pro license is activated from the
dashboard in 0.8; the env var is removed in 0.9).
* feat: add 9Router template (#1040)
* fix: pin the headroom sidecar instead of :latest
* fix: use http for BASE_URL per the repo URL convention
* fix: set NEXT_PUBLIC_BASE_URL so the browser hits the deployed domain
* feat(fmd-server): bump to version 0.16.0
* fix: use expose instead of ports
* fix: fmd-server image tag is 0.16.0 (upstream dropped the v prefix)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* ci: audit every blueprint on a schedule (#1047)
* ci: use RUNNER_TEMP and gate the fail step on the dispatch event
* ci: bound the step summary and publish the full report as an artifact
* ci: treat a missing file as a finding, and never truncate mid-fence
* feat: Add Fluxer template
* fix: populate config.env in template.toml
* fix: syntax in template.toml for config.env
* fix: use multiline string for config.env in template.toml
* fix: format config.env as valid string array in template.toml
* fix: update template.toml format to match standard env array structure
* add: template.toml with optional env vars and http guidance
* fix: change wording to avoid confusion
* fix: add more missing instructions
* fix: more wording changes
* fix: final wording improvements
* fix: comma missing from previous commit
* fix: drop no-op container_name from three blueprints (#1047)
* fix: drop the empty [[config.mounts]] block from vault
* fix: pin vault and scrutiny images, add the missing version header
* fix: meta.json of Poke blueprint
The current github/docs links was broken
before:
https://codeberg.org/ashley/poke
after:
https://codeberg.org/ashleyirispuppy/poke
* fix: broken links in some blueprints
* Add openhabittracker blueprint
* fix(affinepro): update to current AFFiNE images
The template pinned ghcr.io/toeverything/affine-graphql:stable-780dd83,
an ephemeral per-commit tag on the old image name that has since been
removed from GHCR, so the template could no longer pull and deploy.
- Switch both app and migration services to ghcr.io/toeverything/affine:stable,
the rolling stable tag recommended by the official self-host compose,
so the template no longer rots when per-commit tags are garbage-collected
- Move postgres to pgvector/pgvector:pg16 and set AFFINE_INDEXER_ENABLED=false,
matching the current upstream self-host compose requirements
- Add postgres/redis healthchecks and proper depends_on conditions so the
self-host-predeploy migration job runs only once the database is ready,
and the server starts only after migrations complete successfully
Closes#777
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(cockpit): persist config and storage volumes per upstream docs
The template mounted `html:/var/www/html` (freezing the app code from the
first deploy) and `data:/var/www/html/storage/data`, which misses uploaded
assets (stored under `storage/uploads`) and cache. Per the official Cockpit
persistent-storage docs, mount `config:/var/www/html/config` and
`storage:/var/www/html/storage` instead.
Closes#549
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(kener): define REDIS_URL and drop unused databases
Kener v4 requires Redis for its BullMQ queues, caching and scheduler,
so the app crashed on startup with "REDIS_URL is not defined in
environment variables" right after printing that it was running
(issue #976). The template also spun up both a postgres and a mariadb
container while DATABASE_URL pointed at SQLite, so neither database
was ever used (issue #282).
Changes, aligned with the upstream docker-compose.yml
(rajnandan1/kener):
- Add a redis:7-alpine service with a healthcheck and persistent
volume, wire REDIS_URL=redis://redis:6379 and make kener depend on
redis being healthy
- Remove the unused postgres and mysql services plus their env vars
and generated passwords; keep SQLite (upstream default) persisted
in the kener_db volume
- Set ORIGIN to https://<domain> instead of http://localhost:3000 so
CSRF protection works behind the generated domain
- Drop the stale /app/uploads bind mount (kener v4 only persists
/app/database) and the obsolete compose version key
Deploy-tested on a Dokploy instance: migrations and seed complete,
schedulers start, "Kener version 4.1.2 is running!", HTTP 200 on the
generated domain, both containers stable.
Closes#976Closes#282
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(homarr): use named volume for /appdata and hex encryption key
- Replace the relative bind mount `../homarr/appdata:/appdata` with a
named volume `homarr_appdata:/appdata` so the data survives cleanups
and can be backed up through Dokploy volume backups.
- Generate SECRET_ENCRYPTION_KEY with `${hash:64}` instead of
`${password:64}`: homarr requires a 64-character hex string
(`openssl rand -hex 32`) and the password helper emits non-hex
characters (g-z).
Closes#738
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(logto): fix postgres role error and update to 1.41.0
The postgres healthcheck ran pg_isready without -U while POSTGRES_USER
was set to logto, so every probe attempted to connect as role
"postgres" and spammed FATAL: role "postgres" does not exist.
Pass -U logto -d logto explicitly and set POSTGRES_DB.
Also fix LOGTO_ENDPOINT pointing at the admin domain instead of the
main domain, update Logto 1.27.0 -> 1.41.0, use ${password:32} for the
generated password, drop the ephemeral host port publishing and add
restart policies.
Closes#130
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(gitlab-ce): serve on the generated domain (remove removed unicorn config, pin omnibus)
The template set unicorn['worker_processes'] / unicorn['worker_timeout'] in
GITLAB_OMNIBUS_CONFIG. Unicorn was removed in GitLab 14.0, so on current
gitlab-ce images `gitlab-ctl reconfigure` aborts with "Removed configurations
found in gitlab.rb" and GitLab never starts serving — the generated domain
returned 502 Bad Gateway (issue #380).
Rewrite the template as the official all-in-one Omnibus setup:
- pin gitlab/gitlab-ce:19.1.2-ce.0 instead of :latest
- external_url http://<domain> with nginx listen_port 80 / listen_https false
(TLS terminates at Traefik)
- set gitlab_rails['initial_root_password'] from a generated template password
- puma single mode + prometheus monitoring off to keep memory reasonable
- drop the external postgres/redis containers (Omnibus bundles and manages
its own) and the broken ports entries ("2224" published a random host port
while sshd listens on 22)
Verified on a live Dokploy instance: domain serves the GitLab sign-in page
and root login with the generated password works.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(zitadel): wire EXTERNALDOMAIN/PORT/SECURE to the generated domain
Zitadel resolves its instance from the external domain/port/scheme, so the
template's ZITADEL_EXTERNALPORT=8080 made every generated URL (OIDC issuer,
login redirects) point at http://<domain>:8080 instead of the domain served
by Traefik, ending in {"code":5,"message":"Not Found"} (#516).
- Expose ZITADEL_EXTERNALDOMAIN / ZITADEL_EXTERNALPORT / ZITADEL_EXTERNALSECURE
as template env vars, defaulting to the generated domain over HTTP
(port 80, secure=false) so the routed domain and Zitadel's external config
always match; HTTPS users flip them to 443/true in the Env tab.
- Pin image to v4.16.0 (was latest) and keep the built-in login v1 via
ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED=false so no separate
login-v2 container is needed.
- Add the official readiness healthcheck, drop the unused /app/data volume,
bogus SMTP env keys, published port and obsolete compose version key.
Closes#516
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(immich): update to v3.0.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(automatisch): switch to official image and wire up DOMAIN to fix Bad Gateway
- Replace unofficial dockeriddonuts/automatisch:2.0 mirror (stale since Nov 2024)
with the official automatischio/automatisch:0.15.0 image
- Define DOMAIN in template.toml [config.env]: the compose referenced ${DOMAIN}
but it was never provided, so HOST resolved empty and the app generated
localhost URLs for the web app and webhooks
- Set API_URL/WEB_APP_URL so generated URLs don't carry the internal :3000 port
behind Traefik
- Add postgres healthcheck and gate the app on service_healthy to avoid the
boot-time migration race; worker now starts after main (official compose order)
- Drop unnecessary published port and no-op REDIS_* env on the redis service
- Bump meta.json version to 0.15.0
Closes#97
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(signoz): fix ClickHouse hostname resolution and IPv6 binding
- Override the ClickHouse image's config.d/docker_related_config.xml,
which listens on the IPv6 wildcard address ([::]) first and fails to
bind on hosts without IPv6 support; listen on 0.0.0.0 (IPv4) only and
disable the internal DNS cache so transient startup DNS failures for
zookeeper-1/clickhouse are not cached (issue #534).
- Set hostname: clickhouse (instead of container_name) so the server
identifies itself as the cluster host declared in cluster.xml.
- Remove the explicit signoz-net network: Dokploy attaches its own
networks automatically and the repo validator rejects explicit
networks; a fixed-name shared network also breaks service DNS across
deployments.
- Fix mount mismatch: template.toml created files/signoz/prometheus.xml
while the compose mounts ../files/signoz/prometheus.yml, so Docker
silently mounted a directory as the signoz prometheus config.
- Give the otel-collector domain its own generated host: both domains
previously shared the same host and path "/", creating two conflicting
Traefik routers where one service randomly won.
Closes#534
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(infisical): update to v0.162.6
- Bump image from v0.135.0-postgres to v0.162.6 (upstream dropped the
-postgres tag suffix after v0.146.0; plain tags are the postgres build)
- Remove the db-migration service: the standalone image runs database
migrations automatically on boot (auto-start-migrations), matching the
official docker-compose.prod.yml which no longer ships that service
- Generate ENCRYPTION_KEY (${hash:32}) and AUTH_SECRET (${base64:32})
per deployment instead of shipping hardcoded example secrets
- Fix SITE_URL to http://${main_domain} (no :8080; the domain is proxied)
- Refresh SMTP env names (SMTP_FROM_ADDRESS/SMTP_FROM_NAME; SMTP_SECURE
was removed upstream) and drop unused CLIENT_* env placeholders that
were never passed to the container
Closes#215
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: add databasus (postgresus renamed upstream)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(evolutionapi): enable integration flags and update version
Adds the integration enable env flags introduced in Evolution API v2.3.x
(N8N_ENABLED, OPENAI_ENABLED, EVOAI_ENABLED, DIFY_ENABLED, TYPEBOT_ENABLED,
CHATWOOT_ENABLED) so integrations no longer fail with 'N8n is disabled',
and pins the image to v2.3.7 instead of latest.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(rybbit): update to v2.7.0
The template shipped rybbit v1.5.1, which is no longer supported and is
vulnerable to known React2Shell exploits (see #659). Update to the
latest stable release v2.7.0 and align the stack with the upstream
docker-compose:
- Pin ghcr.io/rybbit-io/rybbit-backend and rybbit-client to v2.7.0
- Add the redis service now required by the backend (session tracking
and BullMQ queues), with password auth, AOF persistence and
noeviction policy per upstream
- Drop the DOMAIN_NAME env var (only used by the upstream Caddy
webserver, which Dokploy replaces with Traefik)
- Add DISABLE_TELEMETRY env and generate BETTER_AUTH_SECRET as base64
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(phpmyadmin): raise PHP upload limit so SQL imports over 2MB work
Without UPLOAD_LIMIT the phpMyAdmin image keeps PHP's default 2M
post_max_size/upload_max_filesize, so importing any SQL file larger
than 2MB fails with 'POST Content-Length exceeds the limit of
2097152 bytes' followed by a session_start error page.
- Add UPLOAD_LIMIT (512M) and MAX_EXECUTION_TIME (600) env vars,
configurable from the template env
- Wire the previously unused MYSQL_DATABASE env var into the compose
file, replacing the hardcoded 'tu_base_de_datos' placeholder, and
default it to 'phpmyadmin' instead of the system 'mysql' schema
Closes#236
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(openpanel): pin verified 2.2.1 images and fix ClickHouse interserver host
- Pin lindesvard/openpanel-api|dashboard|worker to 2.2.1 (verified working
end-to-end on a Dokploy instance) instead of the mutable :2 tag, so a
future broken 2.x release cannot silently break the template again —
which is how #615 originated when 2.0.0 shipped.
- Fix interserver_http_host to match the actual service name (op-ch),
aligning with upstream self-hosting config.
- Set meta.json version to the pinned 2.2.1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(wordpress): route loopback requests through Traefik to fix cURL error 28
WordPress resolves its own public domain to the server's public IP from
inside the container, so REST API / WP-Cron / Site Health loopback
requests depend on hairpin NAT, which times out (cURL error 28) on many
hosts. Pin the site domain to the dokploy-traefik container IP in
/etc/hosts at startup (with retries, since Traefik joins the compose
network shortly after the container starts) so loopback traffic stays
inside the Docker network for both HTTP and HTTPS. No-op fallback when
dokploy-traefik is not resolvable.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(minio): migrate to pgsty/minio community fork (upstream is source-only and archived)
MinIO Inc. stopped publishing Docker images and pre-built binaries in
October 2025 and archived the minio/minio repository in February 2026.
The official minio/minio image is frozen at RELEASE.2025-09-07T16-13-09Z
and no longer receives security fixes (the fix for CVE-2025-62506 was
never published as an image).
- Switch image to pgsty/minio:RELEASE.2026-06-18T00-00-00Z, the actively
maintained community fork (drop-in replacement, AGPLv3, same env vars,
same /data on-disk format, restores the full web console)
- Route the S3 API (port 9000) through its own generated domain instead
of publishing host port 9000, per repo conventions
- Update meta.json links/description to point at the maintained fork
Closes#469
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(nextcloud-aio): drop AIO branding, keep template id, pin nextcloud 33.0.6
The template ships plain nextcloud + mariadb + redis + cron, not the
nextcloud/all-in-one mastercontainer. Display name and description no
longer claim AIO; folder id is kept as nextcloud-aio to avoid breaking
existing installs. Image pinned to the current stable tag (33.0.6).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add MailCatcher NG template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: add per-template setup instructions (supabase, trigger.dev)
Adds instructions.md files for the Supabase and Trigger.dev templates and
renders them in the template browser as a new Instructions tab in the
template dialog (fetched from blueprints/<id>/instructions.md, rendered
with a small dependency-free markdown component).
Also removes the placeholder blueprints/ackee/instructions.md so it does
not surface as an empty Instructions tab.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Weblate template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Synapse (Matrix homeserver) template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Dify template
Dify 1.15.0 (open-source LLM app development platform): api + worker +
worker_beat + web + pgvector PostgreSQL (also used as the vector store) +
redis + sandbox + ssrf_proxy (squid) + plugin_daemon, fronted by an
internal nginx gateway that mirrors the upstream path routing.
Closes#88
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Sim Studio template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Steedos template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Silex template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add SpacetimeDB template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add CertMate template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add PostHog template
Based on the official hobby deployment, trimmed to run on a single
server: Django web + Celery worker, Node plugin-server (CDP, ingestion,
session replay, recording API), Rust capture/replay-capture/
feature-flags/hypercache, livestream, Caddy path router, Postgres,
Redis, Redpanda (Kafka), ZooKeeper, ClickHouse and MinIO.
Images are pinned to a tested master commit (PostHog no longer
publishes tagged releases); an init container fetches the matching
ClickHouse configuration, Kafka table schemas, funnel UDF binaries and
the GeoIP database at the same pinned ref.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Markup template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Frappe LMS template
Adds a Frappe LMS (Frappe Learning) template based on the erpnext-v16
blueprint pattern (configurator + create-site + workers + scheduler +
websocket + mariadb + 3x redis).
Pins ghcr.io/frappe/lms:v2.52.0, the latest upstream image that ships
the lms app (v2.52.1+ images are currently published without any apps
baked in). The image does not bundle the payments app, so create-site
clears lms's required_apps before install; paid-course checkout is
unavailable, everything else works. The backend is gated on a
create-site completion marker so gunicorn workers never serve (and
cache) a half-installed site during the 3-6 minute first boot.
Closes#517
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add TREK template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Oryx (SRS) media streaming template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: stop plugins service crash loop (logs-redis TLS default)
In production images LOGS_REDIS_TLS/TRACES_REDIS_TLS default to true, so
the logs-ingestion consumer (part of the plugin-server default mode) kept
attempting a TLS handshake against the plaintext Redis, timed out every
~11s and killed the process after 10 errors (restart loop every ~2.5 min).
Constrain the plugins service to the capability groups this template
ships (cdp_workflows, realtime_cohorts, feature_flags) and pin the redis
TLS flags to false as belt-and-braces.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add n8n queue mode template
n8n running in queue mode (EXECUTIONS_MODE=queue): main instance for the
editor/webhooks, a scalable pool of workers (deploy.replicas driven by the
N8N_WORKER_REPLICAS env var), Redis (Bull) as the queue broker and
PostgreSQL as the database. Pinned to the current stable n8nio/n8n:2.30.4.
Closes#455
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add bonfire template
Bonfire (social flavour) — federated social networking toolkit.
App + PostGIS + Meilisearch, mirroring upstream's reference deployments.
Closes#125
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add dagu blueprint
Dagu is a self-contained workflow engine with a Web UI for scheduling and
orchestrating jobs as DAGs defined in declarative YAML.
- Pin ghcr.io/dagucloud/dagu:2.10.7 and expose the Web UI on port 8080
- Set DAGU_HOST=0.0.0.0 so the service is reachable through the proxy
- Enable basic auth with a generated per-deploy admin password
- Persist /var/lib/dagu (DAGs, logs, run history) in a named volume
Claude-Session: https://claude.ai/code/session_01CRNT6sa2q2P9rUTokeoGhQ
* feat: add OneUptime template
Adds OneUptime (open-source observability platform: uptime monitoring,
status pages, incident management, on-call, logs/traces/metrics) as a
template, following upstream's current single-app architecture
(app + nginx ingress + postgres + redis + clickhouse + probe).
Closes#514
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Mailu template
Mailu 2024.06 mail server: front (nginx), admin, imap (dovecot),
smtp (postfix), antispam (rspamd), Roundcube webmail and redis.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat(templates): add systemprompt (#1032)
* feat(templates): add systemprompt
* fix header comment: accurate in both repos
* chore: normalize template tags to kebab-case (#987)
* feat: adds `check-links.js` to find broken links (#983)
* feat: add struxa template (#1037)
* feat: add struxa template
Adds a Dokploy blueprint for Struxa (github.com/struxadotcloud/struxa),
a self-hosted, open-source server management panel. Deploys the
published GHCR images (dashboard, watchkeeper, migrate) plus MySQL
and MinIO sidecars. The web service generates its RS256 JWT keypair
at startup via Node's built-in crypto module, since no Dokploy
template helper covers RSA key generation.
* fix: pin struxa images to latest floating tag
struxa's release workflow pushes a latest floating tag alongside
version tags on every stable release, matching the convention used
by ~44% of existing blueprints (version: "latest" in meta.json).
* fix: generate a 64-char DATABASE_ENCRYPTION_KEY
Dokploy's runtime \${hash:N} helper produces N hex characters, not N
bytes (the templates repo's local preview helpers.ts models it as
byte count, which is inconsistent with the platform). struxa's env
schema requires DATABASE_ENCRYPTION_KEY to be >=64 chars (it's hex
decoded to a 32-byte AES-256 key), so \${hash:32} only produced half
the required length. Confirmed against other blueprints (sim,
chatwoot, outline) which all use \${hash:64} for 64-char secrets.
* fix: address Copilot review comments
- Add explicit \`version: "3.8"\` to docker-compose.yml, matching the
documented template format.
- Pin minio/minio to a specific RELEASE tag (used elsewhere in the
repo: plane, posthog) instead of the floating latest tag.
- Default BETTER_AUTH_URL/APP_URL/CORS_ORIGIN to http://, matching
repo convention for Dokploy-fronted apps (TLS terminates at the
proxy).
* fix: rename web service to struxa
AGENTS.md convention: the primary Docker service name should match
the blueprint folder name. Renamed the web/dashboard service from
"web" to "struxa" in docker-compose.yml and updated
template.toml's config.domains.serviceName to match.
* Add PodFetch template (#1035)
* Add PodFetch template
* Use env array syntax in template.toml
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Address review: match version to image tag, expose admin_username variable, dark-mode friendly logo
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* fix(docker): share plugins and themes volumes across containers (#990)
* feat(directus): upgrade template to Directus 12.1.1 (#986)
* feat(directus): upgrade template to Directus 12.1.1
* feat(directus): add commented S3 env variables to template.toml
---------
Co-authored-by: Zakher Masri <46135573+zaaakher@users.noreply.github.com>
Co-authored-by: zakher <zakhermasri@gmail.com>
Co-authored-by: Jinjinov <dzindzinovic@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Stephan Fitzpatrick <stephan@knowsuchagency.com>
Co-authored-by: Mauricio Siu <mauricio@dokploy.com>
Co-authored-by: Edward Burton <ejb503@gmail.com>
Co-authored-by: Marko Kostich <markokosticdev@gmail.com>
Co-authored-by: Jakub Krzyżanowski <jakubkrzyz.kontakt@gmail.com>
Co-authored-by: SamTV12345 <40429738+SamTV12345@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mafly <110502739+Nekoplii@users.noreply.github.com>
* Add PodFetch template
* Use env array syntax in template.toml
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Address review: match version to image tag, expose admin_username variable, dark-mode friendly logo
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* feat: add struxa template
Adds a Dokploy blueprint for Struxa (github.com/struxadotcloud/struxa),
a self-hosted, open-source server management panel. Deploys the
published GHCR images (dashboard, watchkeeper, migrate) plus MySQL
and MinIO sidecars. The web service generates its RS256 JWT keypair
at startup via Node's built-in crypto module, since no Dokploy
template helper covers RSA key generation.
* fix: pin struxa images to latest floating tag
struxa's release workflow pushes a latest floating tag alongside
version tags on every stable release, matching the convention used
by ~44% of existing blueprints (version: "latest" in meta.json).
* fix: generate a 64-char DATABASE_ENCRYPTION_KEY
Dokploy's runtime \${hash:N} helper produces N hex characters, not N
bytes (the templates repo's local preview helpers.ts models it as
byte count, which is inconsistent with the platform). struxa's env
schema requires DATABASE_ENCRYPTION_KEY to be >=64 chars (it's hex
decoded to a 32-byte AES-256 key), so \${hash:32} only produced half
the required length. Confirmed against other blueprints (sim,
chatwoot, outline) which all use \${hash:64} for 64-char secrets.
* fix: address Copilot review comments
- Add explicit \`version: "3.8"\` to docker-compose.yml, matching the
documented template format.
- Pin minio/minio to a specific RELEASE tag (used elsewhere in the
repo: plane, posthog) instead of the floating latest tag.
- Default BETTER_AUTH_URL/APP_URL/CORS_ORIGIN to http://, matching
repo convention for Dokploy-fronted apps (TLS terminates at the
proxy).
* fix: rename web service to struxa
AGENTS.md convention: the primary Docker service name should match
the blueprint folder name. Renamed the web/dashboard service from
"web" to "struxa" in docker-compose.yml and updated
template.toml's config.domains.serviceName to match.
Dagu is a self-contained workflow engine with a Web UI for scheduling and
orchestrating jobs as DAGs defined in declarative YAML.
- Pin ghcr.io/dagucloud/dagu:2.10.7 and expose the Web UI on port 8080
- Set DAGU_HOST=0.0.0.0 so the service is reachable through the proxy
- Enable basic auth with a generated per-deploy admin password
- Persist /var/lib/dagu (DAGs, logs, run history) in a named volume
Claude-Session: https://claude.ai/code/session_01CRNT6sa2q2P9rUTokeoGhQ
n8n running in queue mode (EXECUTIONS_MODE=queue): main instance for the
editor/webhooks, a scalable pool of workers (deploy.replicas driven by the
N8N_WORKER_REPLICAS env var), Redis (Bull) as the queue broker and
PostgreSQL as the database. Pinned to the current stable n8nio/n8n:2.30.4.
Closes#455
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
In production images LOGS_REDIS_TLS/TRACES_REDIS_TLS default to true, so
the logs-ingestion consumer (part of the plugin-server default mode) kept
attempting a TLS handshake against the plaintext Redis, timed out every
~11s and killed the process after 10 errors (restart loop every ~2.5 min).
Constrain the plugins service to the capability groups this template
ships (cdp_workflows, realtime_cohorts, feature_flags) and pin the redis
TLS flags to false as belt-and-braces.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds a Frappe LMS (Frappe Learning) template based on the erpnext-v16
blueprint pattern (configurator + create-site + workers + scheduler +
websocket + mariadb + 3x redis).
Pins ghcr.io/frappe/lms:v2.52.0, the latest upstream image that ships
the lms app (v2.52.1+ images are currently published without any apps
baked in). The image does not bundle the payments app, so create-site
clears lms's required_apps before install; paid-course checkout is
unavailable, everything else works. The backend is gated on a
create-site completion marker so gunicorn workers never serve (and
cache) a half-installed site during the 3-6 minute first boot.
Closes#517
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Based on the official hobby deployment, trimmed to run on a single
server: Django web + Celery worker, Node plugin-server (CDP, ingestion,
session replay, recording API), Rust capture/replay-capture/
feature-flags/hypercache, livestream, Caddy path router, Postgres,
Redis, Redpanda (Kafka), ZooKeeper, ClickHouse and MinIO.
Images are pinned to a tested master commit (PostHog no longer
publishes tagged releases); an init container fetches the matching
ClickHouse configuration, Kafka table schemas, funnel UDF binaries and
the GeoIP database at the same pinned ref.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dify 1.15.0 (open-source LLM app development platform): api + worker +
worker_beat + web + pgvector PostgreSQL (also used as the vector store) +
redis + sandbox + ssrf_proxy (squid) + plugin_daemon, fronted by an
internal nginx gateway that mirrors the upstream path routing.
Closes#88
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds instructions.md files for the Supabase and Trigger.dev templates and
renders them in the template browser as a new Instructions tab in the
template dialog (fetched from blueprints/<id>/instructions.md, rendered
with a small dependency-free markdown component).
Also removes the placeholder blueprints/ackee/instructions.md so it does
not surface as an empty Instructions tab.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template ships plain nextcloud + mariadb + redis + cron, not the
nextcloud/all-in-one mastercontainer. Display name and description no
longer claim AIO; folder id is kept as nextcloud-aio to avoid breaking
existing installs. Image pinned to the current stable tag (33.0.6).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MinIO Inc. stopped publishing Docker images and pre-built binaries in
October 2025 and archived the minio/minio repository in February 2026.
The official minio/minio image is frozen at RELEASE.2025-09-07T16-13-09Z
and no longer receives security fixes (the fix for CVE-2025-62506 was
never published as an image).
- Switch image to pgsty/minio:RELEASE.2026-06-18T00-00-00Z, the actively
maintained community fork (drop-in replacement, AGPLv3, same env vars,
same /data on-disk format, restores the full web console)
- Route the S3 API (port 9000) through its own generated domain instead
of publishing host port 9000, per repo conventions
- Update meta.json links/description to point at the maintained fork
Closes#469
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
WordPress resolves its own public domain to the server's public IP from
inside the container, so REST API / WP-Cron / Site Health loopback
requests depend on hairpin NAT, which times out (cURL error 28) on many
hosts. Pin the site domain to the dokploy-traefik container IP in
/etc/hosts at startup (with retries, since Traefik joins the compose
network shortly after the container starts) so loopback traffic stays
inside the Docker network for both HTTP and HTTPS. No-op fallback when
dokploy-traefik is not resolvable.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Pin lindesvard/openpanel-api|dashboard|worker to 2.2.1 (verified working
end-to-end on a Dokploy instance) instead of the mutable :2 tag, so a
future broken 2.x release cannot silently break the template again —
which is how #615 originated when 2.0.0 shipped.
- Fix interserver_http_host to match the actual service name (op-ch),
aligning with upstream self-hosting config.
- Set meta.json version to the pinned 2.2.1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Without UPLOAD_LIMIT the phpMyAdmin image keeps PHP's default 2M
post_max_size/upload_max_filesize, so importing any SQL file larger
than 2MB fails with 'POST Content-Length exceeds the limit of
2097152 bytes' followed by a session_start error page.
- Add UPLOAD_LIMIT (512M) and MAX_EXECUTION_TIME (600) env vars,
configurable from the template env
- Wire the previously unused MYSQL_DATABASE env var into the compose
file, replacing the hardcoded 'tu_base_de_datos' placeholder, and
default it to 'phpmyadmin' instead of the system 'mysql' schema
Closes#236
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template shipped rybbit v1.5.1, which is no longer supported and is
vulnerable to known React2Shell exploits (see #659). Update to the
latest stable release v2.7.0 and align the stack with the upstream
docker-compose:
- Pin ghcr.io/rybbit-io/rybbit-backend and rybbit-client to v2.7.0
- Add the redis service now required by the backend (session tracking
and BullMQ queues), with password auth, AOF persistence and
noeviction policy per upstream
- Drop the DOMAIN_NAME env var (only used by the upstream Caddy
webserver, which Dokploy replaces with Traefik)
- Add DISABLE_TELEMETRY env and generate BETTER_AUTH_SECRET as base64
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds the integration enable env flags introduced in Evolution API v2.3.x
(N8N_ENABLED, OPENAI_ENABLED, EVOAI_ENABLED, DIFY_ENABLED, TYPEBOT_ENABLED,
CHATWOOT_ENABLED) so integrations no longer fail with 'N8n is disabled',
and pins the image to v2.3.7 instead of latest.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Bump image from v0.135.0-postgres to v0.162.6 (upstream dropped the
-postgres tag suffix after v0.146.0; plain tags are the postgres build)
- Remove the db-migration service: the standalone image runs database
migrations automatically on boot (auto-start-migrations), matching the
official docker-compose.prod.yml which no longer ships that service
- Generate ENCRYPTION_KEY (${hash:32}) and AUTH_SECRET (${base64:32})
per deployment instead of shipping hardcoded example secrets
- Fix SITE_URL to http://${main_domain} (no :8080; the domain is proxied)
- Refresh SMTP env names (SMTP_FROM_ADDRESS/SMTP_FROM_NAME; SMTP_SECURE
was removed upstream) and drop unused CLIENT_* env placeholders that
were never passed to the container
Closes#215
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Override the ClickHouse image's config.d/docker_related_config.xml,
which listens on the IPv6 wildcard address ([::]) first and fails to
bind on hosts without IPv6 support; listen on 0.0.0.0 (IPv4) only and
disable the internal DNS cache so transient startup DNS failures for
zookeeper-1/clickhouse are not cached (issue #534).
- Set hostname: clickhouse (instead of container_name) so the server
identifies itself as the cluster host declared in cluster.xml.
- Remove the explicit signoz-net network: Dokploy attaches its own
networks automatically and the repo validator rejects explicit
networks; a fixed-name shared network also breaks service DNS across
deployments.
- Fix mount mismatch: template.toml created files/signoz/prometheus.xml
while the compose mounts ../files/signoz/prometheus.yml, so Docker
silently mounted a directory as the signoz prometheus config.
- Give the otel-collector domain its own generated host: both domains
previously shared the same host and path "/", creating two conflicting
Traefik routers where one service randomly won.
Closes#534
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Replace unofficial dockeriddonuts/automatisch:2.0 mirror (stale since Nov 2024)
with the official automatischio/automatisch:0.15.0 image
- Define DOMAIN in template.toml [config.env]: the compose referenced ${DOMAIN}
but it was never provided, so HOST resolved empty and the app generated
localhost URLs for the web app and webhooks
- Set API_URL/WEB_APP_URL so generated URLs don't carry the internal :3000 port
behind Traefik
- Add postgres healthcheck and gate the app on service_healthy to avoid the
boot-time migration race; worker now starts after main (official compose order)
- Drop unnecessary published port and no-op REDIS_* env on the redis service
- Bump meta.json version to 0.15.0
Closes#97
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Zitadel resolves its instance from the external domain/port/scheme, so the
template's ZITADEL_EXTERNALPORT=8080 made every generated URL (OIDC issuer,
login redirects) point at http://<domain>:8080 instead of the domain served
by Traefik, ending in {"code":5,"message":"Not Found"} (#516).
- Expose ZITADEL_EXTERNALDOMAIN / ZITADEL_EXTERNALPORT / ZITADEL_EXTERNALSECURE
as template env vars, defaulting to the generated domain over HTTP
(port 80, secure=false) so the routed domain and Zitadel's external config
always match; HTTPS users flip them to 443/true in the Env tab.
- Pin image to v4.16.0 (was latest) and keep the built-in login v1 via
ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED=false so no separate
login-v2 container is needed.
- Add the official readiness healthcheck, drop the unused /app/data volume,
bogus SMTP env keys, published port and obsolete compose version key.
Closes#516
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template set unicorn['worker_processes'] / unicorn['worker_timeout'] in
GITLAB_OMNIBUS_CONFIG. Unicorn was removed in GitLab 14.0, so on current
gitlab-ce images `gitlab-ctl reconfigure` aborts with "Removed configurations
found in gitlab.rb" and GitLab never starts serving — the generated domain
returned 502 Bad Gateway (issue #380).
Rewrite the template as the official all-in-one Omnibus setup:
- pin gitlab/gitlab-ce:19.1.2-ce.0 instead of :latest
- external_url http://<domain> with nginx listen_port 80 / listen_https false
(TLS terminates at Traefik)
- set gitlab_rails['initial_root_password'] from a generated template password
- puma single mode + prometheus monitoring off to keep memory reasonable
- drop the external postgres/redis containers (Omnibus bundles and manages
its own) and the broken ports entries ("2224" published a random host port
while sshd listens on 22)
Verified on a live Dokploy instance: domain serves the GitLab sign-in page
and root login with the generated password works.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The postgres healthcheck ran pg_isready without -U while POSTGRES_USER
was set to logto, so every probe attempted to connect as role
"postgres" and spammed FATAL: role "postgres" does not exist.
Pass -U logto -d logto explicitly and set POSTGRES_DB.
Also fix LOGTO_ENDPOINT pointing at the admin domain instead of the
main domain, update Logto 1.27.0 -> 1.41.0, use ${password:32} for the
generated password, drop the ephemeral host port publishing and add
restart policies.
Closes#130
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Replace the relative bind mount `../homarr/appdata:/appdata` with a
named volume `homarr_appdata:/appdata` so the data survives cleanups
and can be backed up through Dokploy volume backups.
- Generate SECRET_ENCRYPTION_KEY with `${hash:64}` instead of
`${password:64}`: homarr requires a 64-character hex string
(`openssl rand -hex 32`) and the password helper emits non-hex
characters (g-z).
Closes#738
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Kener v4 requires Redis for its BullMQ queues, caching and scheduler,
so the app crashed on startup with "REDIS_URL is not defined in
environment variables" right after printing that it was running
(issue #976). The template also spun up both a postgres and a mariadb
container while DATABASE_URL pointed at SQLite, so neither database
was ever used (issue #282).
Changes, aligned with the upstream docker-compose.yml
(rajnandan1/kener):
- Add a redis:7-alpine service with a healthcheck and persistent
volume, wire REDIS_URL=redis://redis:6379 and make kener depend on
redis being healthy
- Remove the unused postgres and mysql services plus their env vars
and generated passwords; keep SQLite (upstream default) persisted
in the kener_db volume
- Set ORIGIN to https://<domain> instead of http://localhost:3000 so
CSRF protection works behind the generated domain
- Drop the stale /app/uploads bind mount (kener v4 only persists
/app/database) and the obsolete compose version key
Deploy-tested on a Dokploy instance: migrations and seed complete,
schedulers start, "Kener version 4.1.2 is running!", HTTP 200 on the
generated domain, both containers stable.
Closes#976Closes#282
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template mounted `html:/var/www/html` (freezing the app code from the
first deploy) and `data:/var/www/html/storage/data`, which misses uploaded
assets (stored under `storage/uploads`) and cache. Per the official Cockpit
persistent-storage docs, mount `config:/var/www/html/config` and
`storage:/var/www/html/storage` instead.
Closes#549
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template pinned ghcr.io/toeverything/affine-graphql:stable-780dd83,
an ephemeral per-commit tag on the old image name that has since been
removed from GHCR, so the template could no longer pull and deploy.
- Switch both app and migration services to ghcr.io/toeverything/affine:stable,
the rolling stable tag recommended by the official self-host compose,
so the template no longer rots when per-commit tags are garbage-collected
- Move postgres to pgvector/pgvector:pg16 and set AFFINE_INDEXER_ENABLED=false,
matching the current upstream self-host compose requirements
- Add postgres/redis healthchecks and proper depends_on conditions so the
self-host-predeploy migration job runs only once the database is ready,
and the server starts only after migrations complete successfully
Closes#777
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Kener v4 requires Redis for BullMQ background queues. Without it, the
application crashes on startup with 'REDIS_URL is not defined' error.
Changes:
- Add Redis 7 Alpine service with healthcheck
- Pin Kener image to v4.1.1 (was 'latest')
- Add REDIS_URL env var pointing to redis://redis:6379
- Remove unused postgres and mysql services (SQLite is the default)
- Remove unused env vars for removed DB services
- Use expose instead of ports (Dokploy convention)
- Add depends_on with service_healthy condition for Redis
Fixes https://github.com/Dokploy/templates/issues/976
Lines 11 and 65 still told contributors to add their entry to the root
meta.json, which was removed in #978 (metadata now lives in
blueprints/<id>/meta.json and the aggregate is generated at build time).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- gel: allow plain HTTP for the reverse proxy (GEL_SERVER_HTTP_ENDPOINT_SECURITY=optional), enable admin UI and point the domain at /ui
- keydb: remove HTTP domain and published port — pure Redis-protocol DB reachable via internal network
- leantime: image serves on 8080 (non-root nginx), add required LEAN_APP_URL and LEAN_SESSION_PASSWORD, use utf8mb4
- matomo: removed from this PR, already fixed in #765
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- chroma: mount volume at /data (chromadb 1.x data dir), drop legacy 0.x
env vars (IS_PERSISTENT/PERSIST_DIRECTORY) and point the domain to
/api/v2/heartbeat so the API-only service verifies with HTTP 200
- homebox: newer images panic on boot without HBOX_AUTH_API_KEY_PEPPER
(>=32 bytes); generate it via ${password:64} in template.toml
- languagetool: point the domain to /v2/languages (the API returns 400
on "/"), which responds HTTP 200
- restore gotify/jellyseerr/privatebin/speedtest-tracker meta.json to
canary so this PR no longer touches templates that already exist
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Multica backend is an API-only chi server with no route registered
at "/", so the generated backend domain (path "/") permanently answered
HTTP 404 even though the container was healthy. The web frontend already
proxies /api/*, /ws, /auth/* and /uploads/* to http://backend:8080 via
Next.js rewrites, and when NEXT_PUBLIC_WS_URL is unset the browser
derives the WebSocket URL from the page origin, so the backend never
needs to be exposed publicly.
- drop the backend [[config.domains]] entry and api_domain variable
- drop NEXT_PUBLIC_WS_URL so the WS URL falls back to the page origin
and goes through the frontend's /ws rewrite
- remove ephemeral host port publications (ports: "8080"/"3000");
Traefik reaches the containers over the docker network
Verified on a Dokploy instance: deploy done, frontend / -> 200 and
backend reachable through the proxy (/api/config -> 200).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The deploy failed with 'dependency failed to start: container db-1 is
unhealthy'. Root cause: the MariaDB 11.8 healthcheck allowed only ~40s
(start_period 10s + 3x10s retries) before flagging the container
unhealthy, which is not enough for the first-boot datadir
initialization on a modest VPS. Since create-site depended on
db:service_healthy, docker compose up -d aborted the whole deploy.
Fixes, following the pattern of the existing working erpnext template:
- Extend the db healthcheck window (start_period 120s, 30 retries) so
first-boot initialization does not mark the container unhealthy.
- Drop depends_on from the one-shot create-site and migration jobs and
gate create-site with wait-for-it (db/redis) inside its command, so
docker compose up -d returns without blocking on the multi-minute
site creation and cannot fail on transient health states.
Verified on a fresh deploy: all services up, create-site installed
frappe + erpnext and enabled the scheduler, frontend serves the
ERPNext login page with HTTP 200.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bootstrap died with exit 2 because Composer >= 2.9 enables
audit.block-insecure by default: shopware/core v6.7.8.2 is now affected
by 9 security advisories (all fixed in 6.7.10.1+), so
'composer create-project shopware/production:6.7.8.2' failed to resolve
dependencies and the whole stack never started.
- Bump the pinned Shopware version to 6.7.12.1 (latest, advisory-free).
- Disable audit.block-insecure in the bootstrap's global composer config
so advisories published after a version is pinned cannot brick fresh
one-click deploys.
- Use APP_URL=http://${main_domain} per template conventions; an https
APP_URL breaks storefront sales-channel matching when the Dokploy
domain is served over plain http.
Verified on a Dokploy instance: full bootstrap + deployment-helper
install completed in ~4 min, storefront and /admin both return HTTP 200.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The --password flag makes Glances prompt for a password interactively
via getpass, which fails in a non-TTY container. The container kept
crash-looping, so Traefik returned 404 for the domain. Glances also
does not read GLANCES_USERNAME/GLANCES_PASSWORD env vars, so the auth
setup was ineffective. Run the web server with GLANCES_OPT=-w and drop
the unused password env vars from the compose file and template.toml.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FORCE_SSL=true + FRONTEND_URL=https:// made Rails 301-redirect every
request to https, which Traefik answered with a sustained 404 because
Dokploy-generated template domains are http-only. Default to
FORCE_SSL=false and FRONTEND_URL=http://${main_domain} (matching the
repo convention); users who terminate TLS can flip these afterwards.
Verified on a Dokploy instance: fresh deploy of chatwoot/chatwoot:v4.12.1
migrates and answers HTTP 200 with the onboarding page.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The official postgres:18 image moved PGDATA from /var/lib/postgresql/data
to /var/lib/postgresql. Mounting the volume at the old path made the
entrypoint abort and the postgresql container restart-loop, failing the
deploy with "dependency postgresql failed to start". Mounting the volume
at /var/lib/postgresql fixes the deploy; server responds 200 on
/if/flow/initial-setup/.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The compose file referenced ${SERVICE_PASSWORD_ENCRYPT} and
${SERVICE_PASSWORD_WEB}, but template.toml defines the variables as
SETTINGS_ENCRYPTION_KEY and DUPLICATI__WEBSERVICE_PASSWORD, so both
values rendered empty at deploy time. Also removed the leftover
SERVICE_URL_DUPLICATI_8200 passthrough entry and added
DUPLICATI__WEBSERVICE_ALLOWED_HOSTNAMES=* so the Duplicati web server
(2.0.8+) accepts requests forwarded by Traefik for the configured
domain instead of rejecting unknown Host headers.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template pointed PS_DATA_SOURCE_URI at a placeholder connection
string (postgresql://user:password@host:5432/db), so the PowerSync
service could never connect and crash-looped, leaving the domain
returning Traefik 404s.
Changes:
- Add a bundled Postgres 17 service with wal_level=logical, a
healthcheck, and a persistent volume; powersync waits for it to be
healthy before starting.
- Replace the base64-encoded config env var with a readable
powersync.yaml mounted via [[config.mounts]]. Replication reads from
the powersync database and bucket storage uses a separate
powersync_storage database (Postgres storage requires a database
distinct from the replication source).
- Add an init SQL mount that creates the storage database, a demo
"lists" table synced by the default sync rules, and the powersync
publication required for logical replication.
- Replace the unsupported sync_config block with standard sync_rules,
and add an HS256 dev key so client auth works out of the box.
- Remove host port mapping (Traefik routes to the container port) and
point the template domain at /probes/liveness since PowerSync has no
route on "/".
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The postgres:18-alpine image moved PGDATA from /var/lib/postgresql/data
to /var/lib/postgresql, so mounting the volume at the old path made the
entrypoint abort and the db container restart forever, failing the
service_healthy dependency for dash and status-page.
- Mount db_data at /var/lib/postgresql (postgres 18 layout)
- Remove host port mappings (Dokploy routes via domains/Traefik)
- Generate POSTGRES_PASSWORD and CLICKHOUSE_PASSWORD with ${password:32}
instead of hardcoded credentials
- Drop unused DASH_PORT/STATUS_PAGE_PORT env and dangling empty
[[config.mounts]] section in template.toml
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The tb-node image runs as the non-root "thingsboard" user (uid 799), but
the freshly created /data named volume is owned by root, so
"touch /data/.thingsboard-installed" failed with permission denied after
every successful install. Combined with "set -e" and "restart: on-failure",
the init container kept re-running the installer forever and the main
thingsboard service (gated on service_completed_successfully) never
started, leaving the domain returning 404.
Running the init service as root lets the marker be written so the init
completes and stays idempotent across redeploys. Also widened the main
service healthcheck start window (start_period 300s, retries 10) so the
slow first boot on modest VPS hardware is not marked unhealthy while
docker compose up --wait is in progress.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The postgres:18 image moved its data directory from
/var/lib/postgresql/data to /var/lib/postgresql, and its entrypoint
now fails hard when a volume is mounted at the old path. This made
paperless-ngx-db restart-loop and never reach healthy, so the deploy
errored with 'dependency paperless-ngx-db failed to start'.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The container was restart-looping because the built-in IdP fatals with
"invalid iss value, URL must start with https://" when OCIS_URL uses
plain http, which caused the sustained 502.
- Set owncloud_url to https://${main_domain} so the IdP issuer is valid
and ocis server stays up.
- oCIS 8.x unconditionally answers 308 -> https:// whenever it receives
X-Forwarded-Proto: http (services/proxy https_redirect middleware), so
the domain check then died on a redirect loop into a non-existent 443
router. Add a small nginx gateway in front of oCIS that forwards
requests with X-Forwarded-Proto: https (what a TLS-terminating proxy
sends) and point the Dokploy domain at gateway:8080.
- Update the README notes accordingly.
Verified on a live Dokploy instance: deploy done, GET / returns
HTTP 200 with title "ownCloud".
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
NodeLink requires the Authorization header on every API route,
including /version, so the healthcheck's unauthenticated fetch always
got a 401 and the container stayed permanently unhealthy. Traefik
skips unhealthy containers, so the assigned domain returned a
sustained 404 even though the deploy finished successfully.
Pass the container's NODELINK_SERVER_PASSWORD as the Authorization
header in the healthcheck fetch; the container now reaches a healthy
state and the domain routes to the server (401 on / without
credentials, 200 on /version with the password), as expected for a
Lavalink-compatible server.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
evolutioncrm:
- Point the evo-crm-frontend domain at port 80 instead of 5173: the
community frontend image serves the built app via nginx on port 80
(5173 is the vite dev port), so the domain returned 502.
- Set EVOLUTION_API_ONLY_SERVER=true on evo-crm: the community image
ships without the Rails dashboard views (the UI lives in the separate
evo-crm-frontend service), so the default root route (dashboard#index)
can never render and returned 406 for every request. With the flag the
root serves the API status JSON; all /api routes are unaffected.
- Drop the evolution-go-* volumes that were left over from the other
template.
evolutiongo:
- Evolution GO has no route on "/" and answers 503 (LICENSE_REQUIRED)
on API routes until a license is activated through the bundled
manager UI, so the single domain never responded. Add a small nginx
gateway that redirects "/" to /manager/login and proxies everything
else (WebSockets included) 1:1 to evolution-go:8080, and point the
domain at it.
- Persist /app/dbdata and /app/logs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The named volume mounted at /home/coder/.config was created root-owned
(the path does not exist in the codercom/code-server image), so
code-server running as uid 1000 failed with
"EACCES: permission denied, mkdir '/home/coder/.config/code-server'"
and restarted in a loop, leaving Traefik returning 404. The .config
directory already lives inside /home/coder, which is persisted by the
code-server-home volume, so the extra volume is unnecessary.
Verified: deploy done, container healthy, domain on port 8080 returns
HTTP 200 with the code-server login page.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The template deployed but returned a persistent HTTP 500: MARIADB_DATABASE
pre-created the wallabag database, so the image entrypoint detected an
existing database, skipped bin/console wallabag:install and left an empty
schema. Only MARIADB_ROOT_PASSWORD is set now, letting the entrypoint
create the database/user and run the installer on first boot (matching the
official wallabag docker-compose).
Also:
- build SYMFONY__ENV__DOMAIN_NAME from the generated domain with the http
scheme so assets/redirects match how the domain is served
- point SYMFONY__ENV__REDIS_HOST at the wallabag-redis service (default is
'redis', which does not resolve here)
- randomize SYMFONY__ENV__SECRET instead of relying on the image's
hardcoded default
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Reword two docker-compose comments so the literal string
"dokploy-network" no longer appears. The compose never declared the
network manually (Dokploy attaches it automatically); the automated
template check was tripping on the comment text alone.
- meta.json: keep canary's richer description and tags
(kanban, project-management), bumping only the version to v1.3.1.
Deploy-verified on a test Dokploy instance: full stack booted in 465s
and proxy:80 answered HTTP 200 with the Plane landing page.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Zulip 12 rejects requests forwarded by an untrusted reverse proxy with
a 500 "Proxy-Misconfiguration: Incorrect reverse proxy IPs set in
Zulip" error page. TRUST_GATEWAY_IP=True only whitelists the
container's default-route gateway IP, but Dokploy's Traefik connects
from its own container IP on the (dynamically-subnetted) compose
network, so it was never trusted.
Replace TRUST_GATEWAY_IP with LOADBALANCER_IPS covering the RFC1918
ranges, which Zulip feeds into nginx set_real_ip_from / its trusted
proxy list, so Traefik is trusted regardless of which Docker subnet it
connects from.
Also align meta.json version with the shipped image tag (12.1-0).
Note: the zulip-server image ships a HEALTHCHECK (/health, 300s start
period) and first boot runs full migrations, so Traefik only exposes
the router once the container turns healthy — expect several minutes
of 404 on the domain right after the first deploy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
engram `cloud serve` only registers /health, /sync/* and /dashboard/*;
Go's ServeMux answers "404 page not found" at the root path, which is
indistinguishable from a Traefik router miss. The deploy itself was fine
(both containers healthy), but the default domain pointed at `/` and
kept returning 404. Adding `path = "/dashboard"` routes the app's real
browser surface (login page / dashboard).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The previous merge of origin/canary into this branch was committed with
unresolved conflict markers in docker-compose.yml and template.toml,
producing invalid YAML/TOML. It also carried over the old kong
eval-based entrypoint, which made the kong container unhealthy and
failed the deploy (dependency kong failed to start).
This commit restores the known-good template structure from canary
(kong-entrypoint.sh, declarative kong.yml with JWKS/asymmetric key
routes, vector + analytics stack, correct domains) and applies only
the version bumps intended by this PR:
- studio 2026.04.27 -> 2026.06.03-sha-0bca601
- gotrue v2.186.0 -> v2.189.0
- postgrest v14.8 -> v14.12
- realtime v2.76.5 -> v2.102.3
- storage-api v1.48.26 -> v1.60.4
- postgres-meta v0.96.3 -> v0.96.6
- edge-runtime v1.71.2 -> v1.74.0
- postgres 15.8.1.085 -> 17.6.1.136
- supavisor 2.7.4 -> 2.9.5
Deploy-tested on Dokploy: all 13 containers running, kong healthy,
studio dashboard reachable through kong (HTTP 200).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The filerun/filerun image runs as user filerun (1001:1001), but /var/www/html
is created as root in the image, so the named volume inherits root:root
ownership. The entrypoint's first-run installer then fails to download
filerun.zip into /var/www/html (Permission denied) and the container
crash-loops with exit 1.
- Add a busybox init service that chowns the html and user-files volumes to
1001:1001 before filerun starts (gated via service_completed_successfully).
- Drop the user: "99:100" override, which is meant for pre-chowned host bind
mounts in the upstream example, not named volumes.
- Remove the UTF-8 BOM at the start of the file, the legacy links: entry and
the obsolete version: key.
Verified on a live Dokploy deploy: HTTP 200 with page title
"FileRun :: Installation".
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- heyform/community-edition:latest now points at v3.0.0-rc.* which hangs
after Mongoose init and never binds port 8000 (502 behind Traefik).
Pin the last stable release v0.1.0 (boots and serves the UI).
- eqalpha/keydb:6.3.3 does not exist on Docker Hub; use the multi-arch
alpine tag instead.
Deploy-tested on a Dokploy instance: HTTP 200, HeyForm UI renders.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The vabene1111/recipes 2.x image starts gunicorn on unix:/tmp/tandoor.sock
unless TANDOOR_PORT is set, so Traefik got 502. Set TANDOOR_PORT=8080 and
point the domain to 8080 (80 was never listening).
Deploy-tested on a Dokploy instance: HTTP 200, setup page renders.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- move each template's metadata to blueprints/<id>/meta.json (442 files, byte-identical roundtrip with the old root meta.json)
- generate the served meta.json at build time into app/public/meta.json (gitignored); pnpm dev/build run the generator first
- CI validates every blueprints/<id>/meta.json via generate-meta.js --check (required fields, id/folder match, logo exists, folder<->meta bidirectionality) and rejects any committed root meta.json
- remove root meta.json, dedupe-and-sort-meta.js and build-scripts/process-meta.js (obsolete)
- update CONTRIBUTING.md, AGENTS.md and README.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(plane): update template to Plane v1.x (stable)
The existing template targeted v0.27.1 which is heavily outdated.
This updates it to match Plane's current official deployment config.
Changes:
- Images: v0.27.1 → stable (currently v1.2.3) from Docker Hub
- Remove explicit commands from frontend services (built into images)
- Postgres: 17-alpine → 15.7-alpine (matches Plane's supported version)
- Valkey: 7.2.5 → 7.2.11
- Proxy: add admin + live dependencies, proxy_config/proxy_data volumes
- Add LIVE_SERVER_SECRET_KEY, APP_DOMAIN, SITE_ADDRESS env vars
- Add RABBITMQ_USER/PASSWORD/VHOST (new v1.x env var names)
- Fix RABBITMQ_DEFAULT_USER bug (was hardcoded string, not variable)
- Fix DATABASE_URL to use template variables directly
- Fix AWS_ACCESS_KEY_ID to match MINIO_ROOT_USER literal
- Remove deprecated: version key, SENTRY_*, NGINX_PORT
- Remove unused env_file from plane-redis
- Add restart policies to all services
* fix(plane): replace MinIO with RustFS (Apache 2.0)
MinIO's open-source edition is effectively dead:
- Admin UI stripped (March 2025)
- Docker images discontinued (October 2025)
- GitHub repo in maintenance mode (December 2025)
- Marked as "NO LONGER MAINTAINED" (February 2026)
RustFS is an S3-compatible drop-in replacement:
- Apache 2.0 license (no AGPL restrictions)
- Same S3 API on port 9000
- Written in Rust, 2.3x faster than MinIO for small objects
- Active development with built-in web console
* fix(plane): address CI and convention issues
- Add back version: "3.8" (required by Dokploy conventions)
- Update meta.json: version v0.27.1 → v1.2.3
- Run process-meta to fix pre-existing strapi duplicate
- Migrator restart: "no" → on-failure
* fix(plane): address review feedback
- Pin RustFS to 1.0.0-alpha.90 (no latest tag)
- WEB_URL and CORS_ALLOWED_ORIGINS use http (Dokploy handles TLS)
* Add Docker Compose configuration for Maxio service
* Add template configuration for maxio service
* Add Maxio logo
* Add Maxio metadata to meta.json
Added metadata for Maxio including links and tags.
* Run node dedupe-and-sort-meta.js
* Fix name from Maxio to MaxIO
* Make suggested updates
* Add missing restart policy
* Make improvements
* feat: add billmora template
* feat: standardize configuration and volume mounts
* feat: hardcode Laravel automations in docker-compose.yml
* fix(billmora): migration race condition
* refactor(billmora): simplify service deploy architecture and standardize blueprint
* feat(billmora): ensure initial data is seeded on startup
* fix(billmora): use storage-based .env persistence to resolve directory mount error
* fix(billmora): revert to separate services for worker and scheduler
* refactor(billmora): remove APP_TIMEZONE from blueprint configuration
* fix(billmora): correct links structure and lowercase tags in meta.json
* fix(billmora): remove invalid volume mounts from template.toml
* fix(billmora): process root meta.json to resolve duplicated templates
* Update Supabase Docker configuration and template
- Updated Supabase Studio and GoTrue images to the latest versions.
- Modified healthcheck commands for the Studio service.
- Enhanced environment variable configuration in docker-compose.yml for better flexibility.
- Updated Logflare API key references and added new S3 protocol access keys in template.toml.
- Introduced custom entrypoint script for Kong to handle Lua expressions and environment variable substitution.
- Added new routes and plugins for enhanced authentication and authorization in Kong configuration.
* Refactor Supabase Docker Compose and Template Configuration
- Removed container name prefixes from services in docker-compose.yml for consistency.
- Increased healthcheck retries and start periods for several services to improve stability.
- Updated healthcheck timeout and retry configurations for the analytics service.
- Adjusted appname generation logic in template.toml to ensure proper naming for services.
- Cleaned up commented sections in template.toml for clarity.
* feat: add rustrak and rustrak-full templates
- rustrak: server-only with SQLite, single service, no external DB
- rustrak-full: server + Next.js dashboard + PostgreSQL
Both use abians7/rustrak-server:v0.2.1, Sentry-compatible error tracking
* chore: update rustrak logo to new design
Introduce Arche, a self-hosted AI workspace platform, with relevant metadata including description, logo, and GitHub link. This addition enhances the diversity of tools available in the project.
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Adds a Dokploy template for Taiga (taigaio/taiga-back, taiga-front,
taiga-events, taiga-protected) wired through an nginx gateway, with
RabbitMQ and Postgres backing services.
Diverges from prior PR #547 in two ways:
- Strips trailing inline `# ...` comments from env values in
template.toml. Those comments were captured as part of the value when
Dokploy expanded them into docker-compose, polluting strings like
TAIGA_SCHEME, EMAIL_BACKEND, etc. and breaking Django URL/email
configuration at runtime.
- Adds explicit SUBPATH= and RABBITMQ_VHOST env entries that PR #547
referenced but never set, so variable expansion no longer falls back
to empty/undefined.
Validated locally with build-scripts/validate-template.ts,
build-scripts/validate-docker-compose.ts, and meta.json required-field
+ dedupe-and-sort checks. No runtime deploy was performed locally.
Co-authored-by: Richard Nevins <richjnevins@gmail.com>
* refactor(docker-compose): update PostgreSQL and Redis images, adjust environment variables
* chore(meta.json): update Discourse version to 2026.1.4
* chore(docker-compose): comment out DISCOURSE_FORCE_HTTPS for production
* fix(docker-compose): update Discourse app port to 80 for production
* feat: add libredb-studio compose
Adds LibreDB Studio — an MIT-licensed, AI-powered open-source SQL IDE (PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB, Redis).
This commit adds the docker-compose.yml. The template.toml and meta.json entry follow in the same branch.
Image: ghcr.io/libredb/libredb-studio
Repo: https://github.com/libredb/libredb-studio
* feat: add libredb-studio template.toml
Adds the Dokploy template.toml for LibreDB Studio.
Defines auto-generated secrets (admin password, user password, JWT secret), exposes port 3000 on the primary domain, and persists data via a mount at /app/data.
* feat: add libredb-studio to meta.json
Registers LibreDB Studio in the template catalog index (meta.json), alphabetically-independent top entry. Completes the LibreDB Studio template (compose + template.toml + meta entry).
* fix: sort libredb-studio entry alphabetically in meta.json
Moves the libredb-studio entry to its correct alphabetical position between librechat and libredesk so meta.json remains sorted by id. Resolves the failing "Validate and Process Meta.json" check (duplicates/sort-order validation).
* fix: expand libredb-studio tags to match meta.json formatting
Formats the libredb-studio "tags" array as a multi-line block to match the output of dedupe-and-sort-meta.js, making the entry byte-identical to the canonical processed file. Resolves the failing "Validate and Process Meta.json" check.
* fix: remove invalid mounts block from libredb-studio template.toml
Removes the [[config.mounts]] block, which failed validation because Dokploy requires a 'content' field for file mounts. Data persistence is already handled by the named volume (libredb-data:/app/data) in docker-compose.yml, so no file mount is needed. Resolves the failing "Validate Docker Compose Files" check.
* fix: correct indentation of libredb-studio tags in meta.json
Adjusts the indentation of the "tags" key to 4 spaces so the libredb-studio entry is byte-identical to the output of dedupe-and-sort-meta.js. Resolves the remaining "Validate and Process Meta.json" check failure.
* feat: add libredb-studio logo
Adds the libredb-studio.svg logo to blueprints/libredb-studio/ so it matches the "logo" field in meta.json. Resolves the "Validate Blueprints Structure and Meta" check, which verifies that each meta.json logo has a corresponding file in its blueprint folder.
* fix: bump libredb-studio image to v0.9.27
Updates the image tag from v0.9.13 to v0.9.27 (current release) so reviewers can test against the latest version.
* fix: update LibreDB Studio version to v0.9.27
Update version field from v0.9.13 to v0.9.27 in meta.json
* fix(blueprint): remove v prefix from image tag
GHCR tags do not use v prefix (0.9.27 not v0.9.27)
* fix(meta): remove v prefix from version field
GHCR tags do not use v prefix (0.9.27 not v0.9.27)
* feat(appwrite): update template to 1.9.5
Move default datastore to MongoDB (DocumentsDB), add worker-screenshots,
worker-executions and task-interval, bump all images to 1.9.5, expand v5
function runtimes, and provide mongo bootstrap files via config.mounts.
MariaDB kept as a supported alternative. PostgreSQL/embedding (VectorsDB)
and bundled Traefik intentionally excluded.
* fix(appwrite): re-add compose version header and add mongodb tag
Address review: restore "version: 3.8" header (repo convention across
blueprints) and add the mongodb tag to meta.json to reflect the new
default datastore.
* (fix): add container_name to appwrite executor so it can find itself
The openruntimes executor v0.25 discovers its own container by listing
containers whose name matches its hostname (exc1). Without
container_name, compose names the container <project>-openruntimes-executor-1,
the lookup fails with 'Own container not found' and the executor
crash-loops, breaking all function/site builds and executions with
'Could not resolve host: exc1'. Matches upstream appwrite 1.9.5 compose.
Verified end-to-end on a fresh Dokploy v0.29.8 server: executor healthy,
function build + execution succeed.
* (fix): route wildcard sites/functions subdomains to appwrite
Dokploy domains only support exact hosts, so Appwrite-generated preview
and execution URLs (<id>.sites.<domain>, <id>.functions.<domain>) hit
Dokploy traefik with no matching router: 404 over HTTP and the traefik
default self-signed certificate over HTTPS ('site is insecure').
Add HostRegexp routers on the appwrite service for *.sites and
*.functions domains on both web and websecure entrypoints. HTTPS for
these subdomains still requires the user to provide a wildcard
certificate (DNS-01 resolver or uploaded wildcard/Origin CA cert);
with tls=true routers in place traefik picks it up via SNI once added.
Verified on a live Dokploy v0.29.8 deployment: site subdomains route
correctly over HTTP and HTTPS after adding the labels.
* (chore): remove wildcard routing comment
* (fix): drop container_name, use service-name hostname for executor self-discovery
container_name is disallowed by repo conventions and fails CI validation.
The executor discovers its own container by matching gethostname()
against Docker container names (substring filter), so hostname
openruntimes-executor matches <project>-openruntimes-executor-1 and
_APP_EXECUTOR_HOST can use the DNS-resolvable service name.
Also read the MongoDB healthcheck password from the container env
(MONGO_INITDB_ROOT_PASSWORD) instead of interpolating _APP_DB_ROOT_PASS
at render time, so shell-special characters in generated passwords
cannot break authentication.
Both verified on a live Dokploy v0.29.8 deployment: executor healthy,
function execution succeeds, mongodb healthcheck passes.
---------
Co-authored-by: ChiragAgg5k <chirag@appwrite.io>
* feat(senddock): add SendDock template
SendDock is an open-source, self-hosted email marketing platform with
BYO SMTP. The template ships postgres + redis + the canonical
ghcr.io/arkhe-systems/senddock image, with healthchecks, named
volumes and the env vars required for a working install.
The senddock service runs migrations on startup via goose and serves
the Vue dashboard on port 8080. PUBLIC_URL is wired to the Dokploy
domain helper so unsubscribe links and broadcasts work out of the
box. License key is left empty by default, which gives users the
free Core experience; setting SENDDOCK_LICENSE_KEY unlocks the Pro
features.
Running dedupe-and-sort-meta.js per CONTRIBUTING removed an
unrelated duplicate strapi entry that already existed in the index
(same version, same logo, listed twice). The senddock entry is the
intended addition.
* fix(senddock): apply review fixes and bump to 0.6.4.1
- Add required `version: "3.8"` declaration to docker-compose.yml per AGENTS.md
- Convert template.toml env from sub-table to array-of-strings syntax
- Bump image and meta.json version to 0.6.4.1 (latest stable, fixes Redis rate-limiter restart loop affecting 0.4.x-0.6.4)
* fix(senddock): correct website and docs URLs to senddock.dev
* fix(senddock): bump to 0.6.5.1
---------
Co-authored-by: Sebastian Vargas <juanse@MacBook-Air-de-Sebastian.local>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update Autobase to version 2.7
Update autobase console image tag in blueprints/autobase/docker-compose.yml from 2.5.2 to 2.7.2 and bump the corresponding package version in meta.json to 2.7.2 to keep metadata in sync with the deployed image.
* Add dbdesk_studio_data Docker volume
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add Velix API one-click template
Self-hosted WhatsApp API with multi-instance support, webhooks, n8n
node, and Chatwoot integration. Includes PostgreSQL 16 and Redis 7.
* fix: use standard port integer literal
* feat: add Agent Zero autonomous AI agent blueprint
Added Agent Zero blueprint with SVG logo, Docker Compose configuration for v1.9, and template for deployment. Agent Zero is an open-source autonomous AI agent framework with memory and tool use capabilities.
* feat(meta): add documentation link to agent-zero metadata
Added docs URL to the links section in meta.json to provide direct access to the project documentation at https://www.agent-zero.ai/p/docs/
* fix: add length parameter to password helper
* Adding Windshift for Dokploy
* Added up-to-date version and better tags
* Updated logo with less transparency
* Update docker-compose.yml with latest version
Signed-off-by: Stefan Ernst <ernst.stefan@icloud.com>
---------
Signed-off-by: Stefan Ernst <ernst.stefan@icloud.com>
* feat: add qui template
qui is a fast, modern web interface for qBittorrent by autobrr,
allowing management of multiple qBittorrent instances from a single,
lightweight self-hosted application.
- docker-compose.yml: pinned ghcr.io/autobrr/qui:1.17.0, exposes 7476
internally (no host port; Dokploy's Traefik handles routing),
persistent named volume for /config.
- template.toml: maps the qui service port 7476 to the user-supplied
domain so Dokploy's Traefik can proxy it.
- meta.json: register the template with logo and tags.
* fix(qui): use latest image tag
ghcr.io/autobrr/qui has no v1.17.0 tag published; only 'latest' and
PR/dev tags are available. Switch the image and meta.json version to
'latest' so the template actually deploys.
* revert: restore duplicate strapi entry removed by dedupe script
The previous commit accidentally removed a pre-existing duplicate
strapi entry as a side effect of running process-meta. That entry
exists upstream and is unrelated to the qui template; restore it
verbatim.
* fix: deduplicate meta.json to pass CI validation
The upstream meta.json had a pre-existing duplicate strapi entry.
Remove it so dedupe-and-sort produces identical output to the committed
file, satisfying the validate-meta CI check.
* fix(qui): replace logo with autobrr org avatar (128x128)
Hermes is an open agent runtime from Nous Research. This template runs the
supervised gateway with:
- web dashboard (9119) behind Traefik, protected by the bundled basic-auth
provider (auth-gated mode triggers automatically once reachable off-loopback);
username admin, generated 128-char password
- OpenAI-compatible gateway API (8642), enabled and bound to 0.0.0.0 with a
generated bearer token (both off by default upstream)
Image pinned to v2026.6.19. Provider keys are configured from the dashboard
after deploy and persist in the hermes_data volume.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Add Dokploy configuration template for Spliit with environment variables and domain setup
* Fix : add double quote
* Fix : remove container name
* Fix : service name
* Fix : use good name of database
* Fix : change db name
* Add Ollama Chat Tone blueprint with Docker configuration, SVG logo, and metadata
* Update .gitignore and replace Ollama Chat Tone SVG with new design
* Add Ollama Chat Tone metadata to meta.json
* Update GitHub link in meta.json for Ollama Chat Tone
* Fix environment variable casing in docker-compose.yml and update template.toml with default values
* Remove duplicate .DS_Store entry from .gitignore
* Delete .DS_Store
Delete .DS_Store
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
* Create INSTRUCTIONS.md
* Rename INSTRUCTIONS.md to instructions.md
* feat: add Moltbot template (#683)
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add Openclaw template (#694)
* feat: rename Moltbot to Openclaw and update related configurations
* fix: update Openclaw image version to 2026.1.29 in docker-compose.yml
* fix: correct environment variable name for Openclaw gateway
* fix: correct volume path for Openclaw workspace in docker-compose.yml
* feat: rename Moltbot to Openclaw and update metadata
* fix: moving 'openclaw' entry below so the file looks sorted
* fix: add missing newline at end of meta.json
* fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan'
* feat: update Openclaw service configuration in docker-compose.yml and template.toml
- Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version.
- Enhanced environment variables for better configuration management.
- Added a new 'browser' service with health checks and updated volume paths.
* refactor: update environment variable configuration in docker-compose.yml for Openclaw service
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: cloudflared documentation links & env variables (#699)
* feat(blueprint): Cloudflare DDNS (#689)
* feat: added Cloudflare DDNS template
* fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env
* Fix realtime service name resolution (#563)
Expose the CONTAINER_PREFIX environment variable to kong service, then utilize it to format the URL of realtime service.
* fix(habitica): add user to mongodb replicaset to enable Dokploy DB backups (#574)
* fix: use environment variables from configuration in habitica-server
* feat: add users to mongodb replicaSet
This commit adds admin and habitica users + enables replicaSet auth by
introducing a keyfile.
Dokploy DB backups require specifying an user and password, so this
enables that feature for Habitica app.
* chore: less retries
* chore: do not start server until mongo is healthy
* fix: ensure habitica user exists for habitica db
* fix: remove BASE_URL to prevent infinite redirects
* fix: add missing ADMIN_EMAIL
---------
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
* Refactor wg-easy service configuration to work with latest wg-easy v15 (#598)
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* feat(blueprint): strapi template (#616)
* feat(blueprint): strapi template
* feat: strapi meta.json
* fix: strapi extra colon
* fix: docker syntax for expose and depends_on
* fix: change image base
* fix: strapi healthcheck
* fix: add jwt secret and admin jwt secret to strapi
* fix: strapi healthcheck start interval
* fix(template): strapi v5.33.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: Add Pulse monitoring template (#617)
* feat: Add Pulse monitoring template
- Add docker-compose.yml with healthcheck and Docker socket access
- Add template.toml with domain and authentication variables
- Add pulse.svg logo
- Add meta.json entry with monitoring, proxmox, docker tags
- Supports Proxmox VE, PBS, and Docker monitoring with real-time metrics
* fix: Update Pulse docs link to GitHub repository
- Replace non-existent docs.pulse.rcourtman.com with GitHub docs path
- Use canonical documentation location in Pulse repository
* update pulse links
* Update blueprints/pulse/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Fix Obsidian LiveSync template links pointing to CouchDB instead of plugin (#621)
* Initial plan
* Fix Obsidian LiveSync template links to point to correct project
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* feat: add SeaweedFS template (#630)
* feat: add SeaweedFS template
* chore: add specific seaweedfs version
* Update image versions in docker-compose for AList, Appsmith, and Budibase (#639)
* Update image versions in the docker-compose and meta.json files for AList, Appsmith, and Budibase.
* Update MinIO image version in docker-compose
Pins a specific MinIO image version RELEASE.2025-09-07T16-13-09Z
* refactor: add
* docs: update CONTRIBUTING.md with pull request guidelines
- Added guidelines for keeping pull requests small and focused.
- Emphasized the importance of testing contributions before submission to maintain a tidy PR queue.
* Add/trilium next (#671)
* feat/add trilium next template
* fix: test verify to pr
* fix: fix validation error in docker-compose
* fix: static version to trilium image
---------
Co-authored-by: jbello <jbello@raodsystem.com>
* feat: add wuzapi template (#679)
* feat: add wuzapi template
* chore: remove temporary meta_entry.json
* fix(wuzapi): remove explicit networks and simplify depends_on for Dokploy compatibility
* fix(wuzapi): remove invalid config.mounts from template.toml
* Update Docker images for wuzapi and PostgreSQL
fixed the version of the wuzapi docker image.
* feat: add PostgreSQL with PgDog template (#681)
* feat: add PostgreSQL with PgDog template
Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support.
- Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images
- Optional admin interface on port 6433
- Includes healthcheck and dependency management
* 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path
- Add [[config.mounts]] for pgdog.toml and users.toml
- Mount config files from ../files/ in docker-compose
- Change postgres volume to /var/lib/postgresql (postgres 18+ standard)
- Add explicit command with config paths to prevent warnings
* 🐛 fix(postgres-pgdog): correct binary path and use default config locations
- Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/
- Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog)
- Use image's default CMD with default config paths
* 🐛 fix(postgres-pgdog): remove invalid admin_port config field
- Remove admin_port from [general] section (not a valid field)
- Admin DB uses same port 6432 with special database name
- Remove commented admin domain config
* 🐛 fix(postgres-pgdog): enable external access via fixed port mapping
- Add fixed port 6432:6432 to postgres-pgdog service
- Remove HTTP domain config (incompatible with TCP protocol)
- Add comment for internal-only option
Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access.
* 🐛 fix(postgres-pgdog): use standard port format per convention
- Change port mapping from '6432:6432' to '6432' format
- Follows Dokploy template convention for port declarations
- External access requires checking Dokploy UI for assigned host port
* 📝 docs(postgres-pgdog): clarify port settings comment
* 🐛 fix(postgres-pgdog): default to internal access with opt-in external port
- Remove obsolete version field
- Port mapping commented by default for security
- Users uncomment to enable external access on port 6432
* Add IPFS Kubo template (#703)
* Add IPFS Kubo template
* Update init cmds
* Remove port forwarding
* uptime-kuma: Bump version to 2.1.0 (#706)
* Bump version to 2.1.0
* Update meta.json with new version number
* feat(blueprint): update trmnl-byos-laravel template (#704)
* upgrade nextcloud img version (#705)
* fix docker-compose variables and update github link (#701)
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
* Update InvoiceShelf compose to suit new changes (#693)
https://github.com/InvoiceShelf/docker/blob/89bf78cec6fae54db76f84e0a4dc6255a8da710e/upgrade-guide.md
* fix: superset template fixed versions, postgres volume mount and network instructions (#595)
* fix: superset version fixed, tweak network instructions
* chore: simplify mapbox key
* fix: volume mount
* deps: bump superset to 6.0.0
* feat: Add imgproxy template (#714)
* feat: Add imgproxy template
* fix: Configure docker-compose to match requirements
* fix: Process meta
* fix: Change logo name
* fix: Remove incorrect mounts
* fix: Expose 80 port instead of direct mapping
* fix: Change nginx cache keys default zone size and correct format negotiation
* fix: Escaping
* feat: update to new Evolution API image source and pin it to the latest version (#644)
* feat: Enhanced Nextcloud template with Redis, automated config, and improved setup (#672)
* Update docker-compose.yml
* fix: stable nextcloud, add redis, auto config, fixed mariadb
* fix: meta nextcloud
* fix: vars
* fix: non capital
* fix: template.toml
* fix: env vars
* fix: var naming
* fix: command
* fix: command
* another try
* keep it simple
* fix toml
* retry classic
* add: admin user
* no aito install
* feat: automated fixes
* fix file pasth
* fix: manual script
* fix: script
* fix: png logo
* fix: meta logo data
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add MediaFetch template (#688)
* feat: add MediaFetch template
* Corrected .toml
* .toml
* feat: add unleash template (#691)
* feat: add unleash template
* feat: update unleash template to version 7.4.0 and fix formatting
* feat: update database user in unleash template from postgres to unleash
* Update Notifuse template: replace PASETO with SECRET_KEY auth (#696)
* Update Notifuse template: replace PASETO with SECRET_KEY auth
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Change convex port mapping to expose and bump version (#730)
* chore: update convex backend and dashboard images, switch from port mapping to expose in docker-compose.yml
* fix: set default value for DISABLE_BEACON in docker-compose.yml
* Update grafana 12.4 (#731)
* Update grafana 12.4
* Update meta.json
* feat(blueprint): add Verdaccio - private node.js package registry (#735)
* feat: add tuwunel template for matrix (re-made) (#733)
* feat: add tuwunel template for matrix
* fix: replace HTML placeholder with actual SVG logo for tuwunel
* fix: remove enforcement and rename logo
* fix(cloudflared): opt-out of isolated deployment (#856)
Cloudflared requires network_mode: host which is mutually exclusive
with Docker networks. Setting isolated = false prevents Dokploy from
injecting networks into this compose.
Fixes https://github.com/Dokploy/dokploy/issues/4366
* Update Plunk template to use next version (#622)
* Update Plunk template to use next version
* Add domain configuration to config.env
* Remove NTFY from Plunk
* Added the frappe lending template (#665)
* added the frappe lending template
* removed the external network
* Add go2rtc (#720)
* Add go2rtc
* Update blueprints/go2rtc/docker-compose.yml
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Update blueprints/go2rtc/template.toml
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Apply suggestion from @greptile-apps[bot]
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Update docker-compose.yml
* Update template.toml
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Update Meilisearch 1.35.1 and fix Cyberchef logo (#722)
* fix: update CyberChef logo from SVG to PNG and remove old SVG file
* fix: update Meilisearch version to v1.35.1
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: vabs <njoy.today@gmail.com>
Co-authored-by: Jorge Gómez Zarzosa <34076979+jorgegomzar@users.noreply.github.com>
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
Co-authored-by: Benjamin Robinet <benjaminrobinet@users.noreply.github.com>
Co-authored-by: Naim Hasim <ainadanaim@gmail.com>
Co-authored-by: kadma <lolocruser@gmail.com>
Co-authored-by: José F. Bello <45277800+bellolongart@users.noreply.github.com>
Co-authored-by: jbello <jbello@raodsystem.com>
Co-authored-by: Harshal Rathore <76205196+HarshalRathore@users.noreply.github.com>
Co-authored-by: Vinicios Lugli <vinicioslugli@gmail.com>
Co-authored-by: Kien Ngo <github@kien.ngo>
Co-authored-by: Simon <97951171+SimonSchroffner@users.noreply.github.com>
Co-authored-by: Aaron McGuire <89317236+Aaron-McGuire@users.noreply.github.com>
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
Co-authored-by: Andrew Wong <andrew12345@live.com>
Co-authored-by: Vladyslav Prosolupov <vladyslavprosolupov@gmail.com>
Co-authored-by: Matheus Felipe <matheusfelipeog@gmail.com>
Co-authored-by: Sina Sebastian Eetezadi <code@eetezadi.com>
Co-authored-by: Luke Dunsmore <lukedunsmoto@gmail.com>
Co-authored-by: Dipanda Aser <aserdipanda@gmail.com>
Co-authored-by: Pierre <pierre@bazoge.com>
Co-authored-by: marcbodea <marcbodea@gmail.com>
Co-authored-by: Wladi <wladiarce@gmail.com>
Co-authored-by: Adrian Alfred C. Bonpin <adrianbonpin@gmail.com>
Co-authored-by: Dries Augustyns <augustyns.dries@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
The template helper's ${password:N} can emit URL-reserved characters
(!@#$%^&*), which corrupt ENGRAM_DATABASE_URL while Postgres receives
the raw password, causing intermittent connection failures on first
deploy. Postgres is not exposed (internal network only), so a static
internal password is safe and matches the convention used by the
umami and documenso templates. Real secrets (JWT, cloud token, admin
token) remain randomly generated.
Engram Cloud is a self-hosted persistent-memory sync server for AI
coding agents. Deploys the published ghcr.io/gentleman-programming/engram
image with a PostgreSQL backend, auto-generated auth secrets (cloud
token, admin token, JWT secret), and a domain on the dashboard/API port.
Add a "# ..." comment string before every entry in config.env, grouped
into labelled sections (Application, PostgreSQL, Redis, RabbitMQ,
storage, proxy, runtime) with blank-line separators. Because Dokploy
renders config.env entries verbatim into the generated .env, these
comment strings carry the documentation into the deployed .env file
(TOML # comments would be stripped at parse time and never reach it).
Same pattern already used by discord-tickets, garage-with-ui, tooljet
and rustfs. No variable values changed; all 39 vars preserved.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The v1.3.1 rewrite (669ad4a) reordered template.toml so that
[[config.domains]] preceded the bare `env = [...]` and `mounts = []`
keys. In TOML those keys then attach to the first config.domains table
element instead of [config], leaving config.env undefined. Dokploy reads
env from config.env, so the base64 export / deploy shipped with no
environment variables at all.
Move env/mounts back above [[config.domains]] (matching the original
template and other blueprints like documenso). config.env now resolves
to all 39 entries; the domain table keeps only serviceName/port/host.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Defaulting TRUSTED_PROXIES to 0.0.0.0/0 makes Caddy trust X-Forwarded-For /
X-Real-IP from any peer, allowing client-IP spoofing (CWE-348 / CWE-290) that
poisons rate-limiting and audit logs. In Dokploy the only upstream is Traefik on
the private dokploy-network, so trust Caddy's built-in `private_ranges` token
instead. Legitimate forwarded client IPs (Traefik is a private peer) still
resolve correctly; XFF from public-IP peers is rejected if the proxy is ever
exposed directly. Overridable via env for custom topologies.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The plane-proxy Caddyfile.ce ends with a `{$SITE_ADDRESS} { import plane_proxy }`
block. SITE_ADDRESS has no inline default upstream, so when it is unset the block
becomes keyless and Caddy aborts with:
adapting config using caddyfile: server block without any key is global
configuration, and if used, it must be first
Expose SITE_ADDRESS (:80, matching the proxy `expose: ["80"]` + domain port 80,
since Dokploy terminates TLS upstream) and TRUSTED_PROXIES (0.0.0.0/0, matching
the Caddyfile inline default) on the proxy env, and document both in template.toml
so they render into the generated env. Reported and verified by @RDeluxe in #912.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The plane-proxy image has hardcoded `reverse_proxy web:3000`/`api:8000`
in its Caddyfile with generic service names. In multi-stack Dokploy
deployments, those names collide with other stacks' containers (Next.js
apps frequently have a `web` service) on the shared dokploy-network —
the Plane domain ends up serving content from unrelated stacks.
Two-step fix:
1. Rename internal services with `plane-*` prefix (unique cluster-wide):
web/space/admin/live/api/worker/beat-worker/migrator → plane-*
2. Add `links:` block to the `proxy` service mapping the new names back
to the generic ones the Caddyfile expects (`plane-web:web` etc.).
Docker injects these into /etc/hosts, which has absolute priority
over DNS — Caddy resolves `web`/`api`/etc. directly to our renamed
containers, ignoring any collision on dokploy-network.
Also updates `API_BASE_URL` in template.toml and the `x-live-env` anchor
from `http://api:8000` → `http://plane-api:8000`.
No `networks:` declarations added (repo validator rejects them; Dokploy
manages networking automatically).
- Bump makeplane/* images v0.27.1 -> v1.3.1
- Pin minio to RELEASE.2025-04-22T22-12-26Z (last release with full admin
console before community-edition feature removal)
- Add YAML anchors (x-*-env) for env reuse across backend services
- Add healthchecks for postgres, valkey, rabbitmq
- api/worker/beat-worker wait for migrator via service_completed_successfully
(fixes race where backend booted before schema was migrated)
- Add restart policies (unless-stopped for long-running, on-failure for migrator)
- Migrate env_file -> inline environment (matches repo convention)
- Expose APP_RELEASE in template.toml [variables] for UI override
Bug fixes in template.toml:
- RABBITMQ_DEFAULT_USER was the literal string "rabbitmq_user" instead of
a variable reference; AMQP_URL was inconsistent with the broker user
- WEB_URL was missing the https:// scheme (broke OAuth/email links)
- DATABASE_URL/AMQP_URL referenced inline vars that Dokploy does not
resolve inside [config.env]; now use [variables] directly
- Remove dead vars: NGINX_PORT (Plane v1.x uses Caddy), SENTRY_DSN,
SENTRY_ENVIRONMENT
- Add WEBHOOK_ALLOWED_IPS/WEBHOOK_ALLOWED_HOSTS (SSRF guard default
introduced in Plane v1.x)
Cloudflared requires network_mode: host which is mutually exclusive
with Docker networks. Setting isolated = false prevents Dokploy from
injecting networks into this compose.
Fixes https://github.com/Dokploy/dokploy/issues/4366
Updates the Authentik blueprint from 2025.6.3 to the latest stable
2026.2.2, and bumps Postgres from 16-alpine to 18-alpine. Redis is
intentionally retained.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Open-source managed agents platform (Next.js + Go + pgvector).
Builds from source via remote git context since no pre-built images
are published. Exposes two Traefik domains: frontend (3000) and
backend (8080) for the CLI/daemon.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
* Create INSTRUCTIONS.md
* Rename INSTRUCTIONS.md to instructions.md
* feat: add Moltbot template (#683)
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add Openclaw template (#694)
* feat: rename Moltbot to Openclaw and update related configurations
* fix: update Openclaw image version to 2026.1.29 in docker-compose.yml
* fix: correct environment variable name for Openclaw gateway
* fix: correct volume path for Openclaw workspace in docker-compose.yml
* feat: rename Moltbot to Openclaw and update metadata
* fix: moving 'openclaw' entry below so the file looks sorted
* fix: add missing newline at end of meta.json
* fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan'
* feat: update Openclaw service configuration in docker-compose.yml and template.toml
- Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version.
- Enhanced environment variables for better configuration management.
- Added a new 'browser' service with health checks and updated volume paths.
* refactor: update environment variable configuration in docker-compose.yml for Openclaw service
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: cloudflared documentation links & env variables (#699)
* feat(blueprint): Cloudflare DDNS (#689)
* feat: added Cloudflare DDNS template
* fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env
* Fix realtime service name resolution (#563)
Expose the CONTAINER_PREFIX environment variable to kong service, then utilize it to format the URL of realtime service.
* fix(habitica): add user to mongodb replicaset to enable Dokploy DB backups (#574)
* fix: use environment variables from configuration in habitica-server
* feat: add users to mongodb replicaSet
This commit adds admin and habitica users + enables replicaSet auth by
introducing a keyfile.
Dokploy DB backups require specifying an user and password, so this
enables that feature for Habitica app.
* chore: less retries
* chore: do not start server until mongo is healthy
* fix: ensure habitica user exists for habitica db
* fix: remove BASE_URL to prevent infinite redirects
* fix: add missing ADMIN_EMAIL
---------
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
* Refactor wg-easy service configuration to work with latest wg-easy v15 (#598)
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* feat(blueprint): strapi template (#616)
* feat(blueprint): strapi template
* feat: strapi meta.json
* fix: strapi extra colon
* fix: docker syntax for expose and depends_on
* fix: change image base
* fix: strapi healthcheck
* fix: add jwt secret and admin jwt secret to strapi
* fix: strapi healthcheck start interval
* fix(template): strapi v5.33.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: Add Pulse monitoring template (#617)
* feat: Add Pulse monitoring template
- Add docker-compose.yml with healthcheck and Docker socket access
- Add template.toml with domain and authentication variables
- Add pulse.svg logo
- Add meta.json entry with monitoring, proxmox, docker tags
- Supports Proxmox VE, PBS, and Docker monitoring with real-time metrics
* fix: Update Pulse docs link to GitHub repository
- Replace non-existent docs.pulse.rcourtman.com with GitHub docs path
- Use canonical documentation location in Pulse repository
* update pulse links
* Update blueprints/pulse/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Fix Obsidian LiveSync template links pointing to CouchDB instead of plugin (#621)
* Initial plan
* Fix Obsidian LiveSync template links to point to correct project
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* feat: add SeaweedFS template (#630)
* feat: add SeaweedFS template
* chore: add specific seaweedfs version
* Update image versions in docker-compose for AList, Appsmith, and Budibase (#639)
* Update image versions in the docker-compose and meta.json files for AList, Appsmith, and Budibase.
* Update MinIO image version in docker-compose
Pins a specific MinIO image version RELEASE.2025-09-07T16-13-09Z
* refactor: add
* docs: update CONTRIBUTING.md with pull request guidelines
- Added guidelines for keeping pull requests small and focused.
- Emphasized the importance of testing contributions before submission to maintain a tidy PR queue.
* Add/trilium next (#671)
* feat/add trilium next template
* fix: test verify to pr
* fix: fix validation error in docker-compose
* fix: static version to trilium image
---------
Co-authored-by: jbello <jbello@raodsystem.com>
* feat: add wuzapi template (#679)
* feat: add wuzapi template
* chore: remove temporary meta_entry.json
* fix(wuzapi): remove explicit networks and simplify depends_on for Dokploy compatibility
* fix(wuzapi): remove invalid config.mounts from template.toml
* Update Docker images for wuzapi and PostgreSQL
fixed the version of the wuzapi docker image.
* feat: add PostgreSQL with PgDog template (#681)
* feat: add PostgreSQL with PgDog template
Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support.
- Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images
- Optional admin interface on port 6433
- Includes healthcheck and dependency management
* 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path
- Add [[config.mounts]] for pgdog.toml and users.toml
- Mount config files from ../files/ in docker-compose
- Change postgres volume to /var/lib/postgresql (postgres 18+ standard)
- Add explicit command with config paths to prevent warnings
* 🐛 fix(postgres-pgdog): correct binary path and use default config locations
- Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/
- Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog)
- Use image's default CMD with default config paths
* 🐛 fix(postgres-pgdog): remove invalid admin_port config field
- Remove admin_port from [general] section (not a valid field)
- Admin DB uses same port 6432 with special database name
- Remove commented admin domain config
* 🐛 fix(postgres-pgdog): enable external access via fixed port mapping
- Add fixed port 6432:6432 to postgres-pgdog service
- Remove HTTP domain config (incompatible with TCP protocol)
- Add comment for internal-only option
Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access.
* 🐛 fix(postgres-pgdog): use standard port format per convention
- Change port mapping from '6432:6432' to '6432' format
- Follows Dokploy template convention for port declarations
- External access requires checking Dokploy UI for assigned host port
* 📝 docs(postgres-pgdog): clarify port settings comment
* 🐛 fix(postgres-pgdog): default to internal access with opt-in external port
- Remove obsolete version field
- Port mapping commented by default for security
- Users uncomment to enable external access on port 6432
* Add IPFS Kubo template (#703)
* Add IPFS Kubo template
* Update init cmds
* Remove port forwarding
* uptime-kuma: Bump version to 2.1.0 (#706)
* Bump version to 2.1.0
* Update meta.json with new version number
* feat(blueprint): update trmnl-byos-laravel template (#704)
* upgrade nextcloud img version (#705)
* fix docker-compose variables and update github link (#701)
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
* Update InvoiceShelf compose to suit new changes (#693)
https://github.com/InvoiceShelf/docker/blob/89bf78cec6fae54db76f84e0a4dc6255a8da710e/upgrade-guide.md
* fix: superset template fixed versions, postgres volume mount and network instructions (#595)
* fix: superset version fixed, tweak network instructions
* chore: simplify mapbox key
* fix: volume mount
* deps: bump superset to 6.0.0
* feat: Add imgproxy template (#714)
* feat: Add imgproxy template
* fix: Configure docker-compose to match requirements
* fix: Process meta
* fix: Change logo name
* fix: Remove incorrect mounts
* fix: Expose 80 port instead of direct mapping
* fix: Change nginx cache keys default zone size and correct format negotiation
* fix: Escaping
* feat: update to new Evolution API image source and pin it to the latest version (#644)
* feat: Enhanced Nextcloud template with Redis, automated config, and improved setup (#672)
* Update docker-compose.yml
* fix: stable nextcloud, add redis, auto config, fixed mariadb
* fix: meta nextcloud
* fix: vars
* fix: non capital
* fix: template.toml
* fix: env vars
* fix: var naming
* fix: command
* fix: command
* another try
* keep it simple
* fix toml
* retry classic
* add: admin user
* no aito install
* feat: automated fixes
* fix file pasth
* fix: manual script
* fix: script
* fix: png logo
* fix: meta logo data
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add MediaFetch template (#688)
* feat: add MediaFetch template
* Corrected .toml
* .toml
* feat: add unleash template (#691)
* feat: add unleash template
* feat: update unleash template to version 7.4.0 and fix formatting
* feat: update database user in unleash template from postgres to unleash
* Update Notifuse template: replace PASETO with SECRET_KEY auth (#696)
* Update Notifuse template: replace PASETO with SECRET_KEY auth
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Change convex port mapping to expose and bump version (#730)
* chore: update convex backend and dashboard images, switch from port mapping to expose in docker-compose.yml
* fix: set default value for DISABLE_BEACON in docker-compose.yml
* Update grafana 12.4 (#731)
* Update grafana 12.4
* Update meta.json
* feat(blueprint): add Verdaccio - private node.js package registry (#735)
* feat: add tuwunel template for matrix (re-made) (#733)
* feat: add tuwunel template for matrix
* fix: replace HTML placeholder with actual SVG logo for tuwunel
* fix: remove enforcement and rename logo
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: vabs <njoy.today@gmail.com>
Co-authored-by: Jorge Gómez Zarzosa <34076979+jorgegomzar@users.noreply.github.com>
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
Co-authored-by: Benjamin Robinet <benjaminrobinet@users.noreply.github.com>
Co-authored-by: Naim Hasim <ainadanaim@gmail.com>
Co-authored-by: kadma <lolocruser@gmail.com>
Co-authored-by: José F. Bello <45277800+bellolongart@users.noreply.github.com>
Co-authored-by: jbello <jbello@raodsystem.com>
Co-authored-by: Harshal Rathore <76205196+HarshalRathore@users.noreply.github.com>
Co-authored-by: Vinicios Lugli <vinicioslugli@gmail.com>
Co-authored-by: Kien Ngo <github@kien.ngo>
Co-authored-by: Simon <97951171+SimonSchroffner@users.noreply.github.com>
Co-authored-by: Aaron McGuire <89317236+Aaron-McGuire@users.noreply.github.com>
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
Co-authored-by: Andrew Wong <andrew12345@live.com>
Co-authored-by: Vladyslav Prosolupov <vladyslavprosolupov@gmail.com>
Co-authored-by: Matheus Felipe <matheusfelipeog@gmail.com>
Co-authored-by: Sina Sebastian Eetezadi <code@eetezadi.com>
Co-authored-by: Luke Dunsmore <lukedunsmoto@gmail.com>
Co-authored-by: Dipanda Aser <aserdipanda@gmail.com>
Co-authored-by: Pierre <pierre@bazoge.com>
Co-authored-by: marcbodea <marcbodea@gmail.com>
Co-authored-by: Wladi <wladiarce@gmail.com>
Co-authored-by: Adrian Alfred C. Bonpin <adrianbonpin@gmail.com>
* chore: update convex backend and dashboard images, switch from port mapping to expose in docker-compose.yml
* fix: set default value for DISABLE_BEACON in docker-compose.yml
* feat: add unleash template
* feat: update unleash template to version 7.4.0 and fix formatting
* feat: update database user in unleash template from postgres to unleash
* feat: Add imgproxy template
* fix: Configure docker-compose to match requirements
* fix: Process meta
* fix: Change logo name
* fix: Remove incorrect mounts
* fix: Expose 80 port instead of direct mapping
* fix: Change nginx cache keys default zone size and correct format negotiation
* fix: Escaping
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
* Create INSTRUCTIONS.md
* Rename INSTRUCTIONS.md to instructions.md
* feat: add Moltbot template (#683)
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add Openclaw template (#694)
* feat: rename Moltbot to Openclaw and update related configurations
* fix: update Openclaw image version to 2026.1.29 in docker-compose.yml
* fix: correct environment variable name for Openclaw gateway
* fix: correct volume path for Openclaw workspace in docker-compose.yml
* feat: rename Moltbot to Openclaw and update metadata
* fix: moving 'openclaw' entry below so the file looks sorted
* fix: add missing newline at end of meta.json
* fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan'
* feat: update Openclaw service configuration in docker-compose.yml and template.toml
- Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version.
- Enhanced environment variables for better configuration management.
- Added a new 'browser' service with health checks and updated volume paths.
* refactor: update environment variable configuration in docker-compose.yml for Openclaw service
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: cloudflared documentation links & env variables (#699)
* feat(blueprint): Cloudflare DDNS (#689)
* feat: added Cloudflare DDNS template
* fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env
* Fix realtime service name resolution (#563)
Expose the CONTAINER_PREFIX environment variable to kong service, then utilize it to format the URL of realtime service.
* fix(habitica): add user to mongodb replicaset to enable Dokploy DB backups (#574)
* fix: use environment variables from configuration in habitica-server
* feat: add users to mongodb replicaSet
This commit adds admin and habitica users + enables replicaSet auth by
introducing a keyfile.
Dokploy DB backups require specifying an user and password, so this
enables that feature for Habitica app.
* chore: less retries
* chore: do not start server until mongo is healthy
* fix: ensure habitica user exists for habitica db
* fix: remove BASE_URL to prevent infinite redirects
* fix: add missing ADMIN_EMAIL
---------
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
* Refactor wg-easy service configuration to work with latest wg-easy v15 (#598)
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* feat(blueprint): strapi template (#616)
* feat(blueprint): strapi template
* feat: strapi meta.json
* fix: strapi extra colon
* fix: docker syntax for expose and depends_on
* fix: change image base
* fix: strapi healthcheck
* fix: add jwt secret and admin jwt secret to strapi
* fix: strapi healthcheck start interval
* fix(template): strapi v5.33.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: Add Pulse monitoring template (#617)
* feat: Add Pulse monitoring template
- Add docker-compose.yml with healthcheck and Docker socket access
- Add template.toml with domain and authentication variables
- Add pulse.svg logo
- Add meta.json entry with monitoring, proxmox, docker tags
- Supports Proxmox VE, PBS, and Docker monitoring with real-time metrics
* fix: Update Pulse docs link to GitHub repository
- Replace non-existent docs.pulse.rcourtman.com with GitHub docs path
- Use canonical documentation location in Pulse repository
* update pulse links
* Update blueprints/pulse/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Fix Obsidian LiveSync template links pointing to CouchDB instead of plugin (#621)
* Initial plan
* Fix Obsidian LiveSync template links to point to correct project
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* feat: add SeaweedFS template (#630)
* feat: add SeaweedFS template
* chore: add specific seaweedfs version
* Update image versions in docker-compose for AList, Appsmith, and Budibase (#639)
* Update image versions in the docker-compose and meta.json files for AList, Appsmith, and Budibase.
* Update MinIO image version in docker-compose
Pins a specific MinIO image version RELEASE.2025-09-07T16-13-09Z
* refactor: add
* docs: update CONTRIBUTING.md with pull request guidelines
- Added guidelines for keeping pull requests small and focused.
- Emphasized the importance of testing contributions before submission to maintain a tidy PR queue.
* Add/trilium next (#671)
* feat/add trilium next template
* fix: test verify to pr
* fix: fix validation error in docker-compose
* fix: static version to trilium image
---------
Co-authored-by: jbello <jbello@raodsystem.com>
* feat: add wuzapi template (#679)
* feat: add wuzapi template
* chore: remove temporary meta_entry.json
* fix(wuzapi): remove explicit networks and simplify depends_on for Dokploy compatibility
* fix(wuzapi): remove invalid config.mounts from template.toml
* Update Docker images for wuzapi and PostgreSQL
fixed the version of the wuzapi docker image.
* feat: add PostgreSQL with PgDog template (#681)
* feat: add PostgreSQL with PgDog template
Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support.
- Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images
- Optional admin interface on port 6433
- Includes healthcheck and dependency management
* 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path
- Add [[config.mounts]] for pgdog.toml and users.toml
- Mount config files from ../files/ in docker-compose
- Change postgres volume to /var/lib/postgresql (postgres 18+ standard)
- Add explicit command with config paths to prevent warnings
* 🐛 fix(postgres-pgdog): correct binary path and use default config locations
- Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/
- Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog)
- Use image's default CMD with default config paths
* 🐛 fix(postgres-pgdog): remove invalid admin_port config field
- Remove admin_port from [general] section (not a valid field)
- Admin DB uses same port 6432 with special database name
- Remove commented admin domain config
* 🐛 fix(postgres-pgdog): enable external access via fixed port mapping
- Add fixed port 6432:6432 to postgres-pgdog service
- Remove HTTP domain config (incompatible with TCP protocol)
- Add comment for internal-only option
Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access.
* 🐛 fix(postgres-pgdog): use standard port format per convention
- Change port mapping from '6432:6432' to '6432' format
- Follows Dokploy template convention for port declarations
- External access requires checking Dokploy UI for assigned host port
* 📝 docs(postgres-pgdog): clarify port settings comment
* 🐛 fix(postgres-pgdog): default to internal access with opt-in external port
- Remove obsolete version field
- Port mapping commented by default for security
- Users uncomment to enable external access on port 6432
* Add IPFS Kubo template (#703)
* Add IPFS Kubo template
* Update init cmds
* Remove port forwarding
* uptime-kuma: Bump version to 2.1.0 (#706)
* Bump version to 2.1.0
* Update meta.json with new version number
* feat(blueprint): update trmnl-byos-laravel template (#704)
* upgrade nextcloud img version (#705)
* fix docker-compose variables and update github link (#701)
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
* Update InvoiceShelf compose to suit new changes (#693)
https://github.com/InvoiceShelf/docker/blob/89bf78cec6fae54db76f84e0a4dc6255a8da710e/upgrade-guide.md
* fix: superset template fixed versions, postgres volume mount and network instructions (#595)
* fix: superset version fixed, tweak network instructions
* chore: simplify mapbox key
* fix: volume mount
* deps: bump superset to 6.0.0
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: vabs <njoy.today@gmail.com>
Co-authored-by: Jorge Gómez Zarzosa <34076979+jorgegomzar@users.noreply.github.com>
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
Co-authored-by: Benjamin Robinet <benjaminrobinet@users.noreply.github.com>
Co-authored-by: Naim Hasim <ainadanaim@gmail.com>
Co-authored-by: kadma <lolocruser@gmail.com>
Co-authored-by: José F. Bello <45277800+bellolongart@users.noreply.github.com>
Co-authored-by: jbello <jbello@raodsystem.com>
Co-authored-by: Harshal Rathore <76205196+HarshalRathore@users.noreply.github.com>
Co-authored-by: Vinicios Lugli <vinicioslugli@gmail.com>
Co-authored-by: Kien Ngo <github@kien.ngo>
Co-authored-by: Simon <97951171+SimonSchroffner@users.noreply.github.com>
Co-authored-by: Aaron McGuire <89317236+Aaron-McGuire@users.noreply.github.com>
Co-authored-by: Aaron McGuire <git.figment276@passmail.net>
Co-authored-by: Andrew Wong <andrew12345@live.com>
* feat: add PostgreSQL with PgDog template
Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support.
- Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images
- Optional admin interface on port 6433
- Includes healthcheck and dependency management
* 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path
- Add [[config.mounts]] for pgdog.toml and users.toml
- Mount config files from ../files/ in docker-compose
- Change postgres volume to /var/lib/postgresql (postgres 18+ standard)
- Add explicit command with config paths to prevent warnings
* 🐛 fix(postgres-pgdog): correct binary path and use default config locations
- Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/
- Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog)
- Use image's default CMD with default config paths
* 🐛 fix(postgres-pgdog): remove invalid admin_port config field
- Remove admin_port from [general] section (not a valid field)
- Admin DB uses same port 6432 with special database name
- Remove commented admin domain config
* 🐛 fix(postgres-pgdog): enable external access via fixed port mapping
- Add fixed port 6432:6432 to postgres-pgdog service
- Remove HTTP domain config (incompatible with TCP protocol)
- Add comment for internal-only option
Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access.
* 🐛 fix(postgres-pgdog): use standard port format per convention
- Change port mapping from '6432:6432' to '6432' format
- Follows Dokploy template convention for port declarations
- External access requires checking Dokploy UI for assigned host port
* 📝 docs(postgres-pgdog): clarify port settings comment
* 🐛 fix(postgres-pgdog): default to internal access with opt-in external port
- Remove obsolete version field
- Port mapping commented by default for security
- Users uncomment to enable external access on port 6432
* feat: add wuzapi template
* chore: remove temporary meta_entry.json
* fix(wuzapi): remove explicit networks and simplify depends_on for Dokploy compatibility
* fix(wuzapi): remove invalid config.mounts from template.toml
* Update Docker images for wuzapi and PostgreSQL
fixed the version of the wuzapi docker image.
* feat/add trilium next template
* fix: test verify to pr
* fix: fix validation error in docker-compose
* fix: static version to trilium image
---------
Co-authored-by: jbello <jbello@raodsystem.com>
- Added guidelines for keeping pull requests small and focused.
- Emphasized the importance of testing contributions before submission to maintain a tidy PR queue.
* Update image versions in the docker-compose and meta.json files for AList, Appsmith, and Budibase.
* Update MinIO image version in docker-compose
Pins a specific MinIO image version RELEASE.2025-09-07T16-13-09Z
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
* Refactor wg-easy service configuration in docker-compose
Updated environment variables for wg-easy v15
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* fix: use environment variables from configuration in habitica-server
* feat: add users to mongodb replicaSet
This commit adds admin and habitica users + enables replicaSet auth by
introducing a keyfile.
Dokploy DB backups require specifying an user and password, so this
enables that feature for Habitica app.
* chore: less retries
* chore: do not start server until mongo is healthy
* fix: ensure habitica user exists for habitica db
* fix: remove BASE_URL to prevent infinite redirects
* fix: add missing ADMIN_EMAIL
---------
Co-authored-by: Jorge Gómez Zarzosa <jorgegomez@bmat.com>
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
* Create INSTRUCTIONS.md
* Rename INSTRUCTIONS.md to instructions.md
* feat: add Moltbot template (#683)
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add Openclaw template (#694)
* feat: rename Moltbot to Openclaw and update related configurations
* fix: update Openclaw image version to 2026.1.29 in docker-compose.yml
* fix: correct environment variable name for Openclaw gateway
* fix: correct volume path for Openclaw workspace in docker-compose.yml
* feat: rename Moltbot to Openclaw and update metadata
* fix: moving 'openclaw' entry below so the file looks sorted
* fix: add missing newline at end of meta.json
* fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan'
* feat: update Openclaw service configuration in docker-compose.yml and template.toml
- Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version.
- Enhanced environment variables for better configuration management.
- Added a new 'browser' service with health checks and updated volume paths.
* refactor: update environment variable configuration in docker-compose.yml for Openclaw service
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: cloudflared documentation links & env variables (#699)
* feat(blueprint): Cloudflare DDNS (#689)
* feat: added Cloudflare DDNS template
* fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: vabs <njoy.today@gmail.com>
* feat: rename Moltbot to Openclaw and update related configurations
* fix: update Openclaw image version to 2026.1.29 in docker-compose.yml
* fix: correct environment variable name for Openclaw gateway
* fix: correct volume path for Openclaw workspace in docker-compose.yml
* feat: rename Moltbot to Openclaw and update metadata
* fix: moving 'openclaw' entry below so the file looks sorted
* fix: add missing newline at end of meta.json
* fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan'
* feat: update Openclaw service configuration in docker-compose.yml and template.toml
- Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version.
- Enhanced environment variables for better configuration management.
- Added a new 'browser' service with health checks and updated volume paths.
* refactor: update environment variable configuration in docker-compose.yml for Openclaw service
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
* Create INSTRUCTIONS.md
* Rename INSTRUCTIONS.md to instructions.md
* feat: add Moltbot template (#683)
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* feat: add Moltbot template
Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent.
- Uses official ghcr.io/moltbot/moltbot:latest image
- Exposes ports 18789 (gateway) and 18790 (bridge)
- Includes persistent volumes for config and workspace
- Auto-generates gateway token
- Optional Claude AI integration support
Co-Authored-By: Claude <noreply@anthropic.com>
* Update docker-compose.yml
* Enhance Moltbot configuration in docker-compose and template files
- Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml
- Updated service binding to 'auto' and added init: true for improved service management
- Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml
- Included CLAWDBOT_PLUGINS for plugin configuration in template.toml
* Add Moltbot entry to meta.json
- Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent.
- Included details such as version, description, logo, links, and relevant tags for better discoverability and integration.
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
* Updating copilot instructions.md and AGENTS.md (#452)
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add trailbase template (#590)
* Add trailbase
* Add comment on mounting local directory
* Update meta.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: openpanel and migrate to v2 (#594)
* refactor: update docker-compose.yml to include version and restart policy (#599)
* feat(blueprint): mage ai template (#601)
* feat(blueprint): template for mage-ai
* fix: add healthcheck for mage-ai
* docs: update copilot instructions to emphasize version pinning in docker-compose.yml
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* refactor: enhance Docker Compose validation workflow
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
* fix: update zitadel default instance features (#544)
* Add Reactive Resume template (#603)
* Initial plan
* Add Reactive Resume template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO storage path alignment between template.toml and docker-compose.yml
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update docker-compose.yml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* [WIP] Fix mounted prometheus.yml file not working (#605)
* Initial plan
* Fix Prometheus mounted prometheus.yml file by adding volume mount
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/prometheus/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* docs: update copilot instructions to enforce open source requirement
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
* Fix Cap.so template MinIO deployment failure (#604)
* Initial plan
* Fix Cap.so MinIO image to use official quay.io image
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix MinIO healthcheck to use curl instead of mc
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update .gitignore
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606)
* Initial plan
* Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Remove pull request trigger from deploy-preview workflow
* Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures.
* Add Easy!Appointments template (#608)
* Initial plan
* Add Easyappointments template with docker-compose, template.toml, and meta.json entry
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update blueprints/easyappointments/template.toml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update template.toml
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add Dolibarr ERP & CRM template (#610)
* Initial plan
* Add Dolibarr ERP & CRM template
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
* Update template.toml
* Update blueprints/dolibarr/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add Syncthing Template (#636)
* Adiciona template do Syncthing com arquivos de configuração e ícone
* Remove versão do Docker Compose do template do Syncthing
* Update Umami to version v2.20.2 (#641)
* Feat : Add InstantDB template (#224) (#530)
* feat: add InstantDB template
* added the server service also
* removed the external network
* Update docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update blueprints/instantdb/docker-compose.yml
* Update docker-compose.yml
* Update blueprints/instantdb/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* [New Template] Added Lavalink template for dokploy (#535)
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore(blueprint): update Appwrite services to v1.8 (#383)
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: emqx template (MQTT Broker) (#556)
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Dokploy Deployment for Mautic 5 (#564)
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* fix: searxng template (#651)
* fix: use major version for openpanel (#680)
* Feat/minepanel template (#657)
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623)
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624)
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* fix: pyrodactyl no longer uses main tag for it's latest release (#626)
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Add Jenkins blueprint template configuration (#634)
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* Update Autobase to version 2.5 (#647)
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
* Add Cloudreve template (#649)
Self-hosted file management and sharing system with multi-cloud storage support.
Includes PostgreSQL and Redis for database and caching.
* Update to Umami 3.0.3 (#668)
* Update Umami version from v2.20.2 to v3.0.3
* Update Umami Docker image to version 3.0.3
* fix: tailscale exitnode authkey env (#669)
* Add qbitwebui (#675)
* Add qBittorrent Web UI template
* Fix healthcheck bug
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com>
Co-authored-by: Ye Liu <yeliu84@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com>
Co-authored-by: Huy Pham <quochuy.dev@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Louan Fontenele <louanbastos61@gmail.com>
Co-authored-by: Alexey Fedorov <fedorov2505@yandex.com>
Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com>
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Christus Vincent <chrisspeakseh@gmail.com>
Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com>
Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com>
Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com>
Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com>
Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com>
Co-authored-by: aurorarissime <github.delta813@passfwd.com>
Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com>
* Update Autobase to version 2.5
Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes.
* Update docker-compose.yml
* Update docker-compose.yml
* Update meta.json
* Update Autobase description in meta.json
Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases.
- Created a new TOML configuration file for Jenkins blueprint.
- Defined main domain variable and service configuration for Jenkins.
- Set serviceName to "jenkins" with port 8080 and host as the main domain.
* fix: pyrodactyl no longer uses main tag for it's latest release
* Remove custom network settings from docker-compose
Removed custom network configuration from docker-compose.
* Update MariaDB and Pyrodactyl images in Docker Compose
* Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry.
* Add template.toml for configuration and environment variables.
* Include necessary links for GitHub and documentation.
* feat: add Minepanel template
* fix: pin images to v1.7.1 and use http for URLs
* fix: remove explicit ports, Dokploy handles proxying
* chore: process and sort meta.json
* fix: consolidate domain variables to main_domain
* fix: add version field to docker-compose.yml
* first draft
* second
* try 3
* 4
* Update docker-compose.yml
* Update template.toml
* Enhance healthchecks and service dependencies in Docker Compose
Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting.
* Update Mautic docker-compose with health checks and roles
* feat: template for emqx
* chore: process meta
* fix: use websocket on port 443 instead of 8084
* docs: improve comments for emqx template
* fix: use emqx service name
* fix: use dummy domain instead of traefik
* fix: explicitly list dokplok-network
* fix(emqx): restart unless stopped
* fix(emqx): add healthcheck
* Update Appwrite version docker images and environment variables
* Add separate domains for functions and sites, update environment variables, replace insecure default passwords
* Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json`
* Fix envs and update domains
* Add missing volume mounts for sites
* Fix config file syntax
* Update runtimes network configuration in template.toml
* Update Appwrite to 1.8
* Update appwrite image version to 1.8.0
* Add logging configuration to docker-compose
* New Templates (#586)
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* Remove `container_name` from all containers
* Remove expliced networks
* Update blueprints/appwrite/docker-compose.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update password variables to use 32-character length
* Update Appwrite description and tags in meta.json
* Fix JSON formatting in meta.json by adding missing closing bracket
* Fix formatting in meta.json by removing trailing spaces in tags array
* Add missing SMS and Backblaze storage configuration options in template.toml
* Update docker-compose.yml
---------
Co-authored-by: Pascal Oberbeck <pascal.oberbeck@paperlesswork.de>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Add initial Lavalink configuration template
* Added lavalink.svg logo
* Create docker-compose.yml for Lavalink setup
Add Docker Compose configuration for Lavalink service.
* Modify healthcheck interval in docker-compose.yml
Increased healthcheck interval from 10s to 100s.
* Add Lavalink metadata to meta.json
Added metadata for Lavalink audio sending node.
* Update server_port variable to use ${port}
* Change server port variable to randomPort
* Change port variable to randomPort in template.toml
* Change port variable in template.toml
* Update server port in template.toml
* Fix formatting in template.toml for server config
* style: Reformat lavalink entry in meta.json.
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* Adds scrutiny template
* ran npm run process-meta
* feat(scrutiny): add Proxmox usage instructions
* Refactor port mappings in docker-compose.yml
Updated port mappings to remove quotes in docker-compose.yml.
Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project.
Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process.
Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change.
* docs: add copilot instructions for project development
Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project.
* docs(copilot-instructions): enhance project overview and development guide
Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy.
* refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines
- Removed frontend development commands from AGENTS.md to streamline the document.
- Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services.
---------
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
* fix: rename templates to template.toml
* fix(librechat): rename api service to librechat in docker-compose.yml
* Update blueprints/librechat/template.toml
* Update blueprints/librechat/template.toml
* fix(librechat): add version under [config] and remove stray [config.mounts] header
* fix(librechat): remove predefined persistent volume mounts from template.toml
* docs(librechat): add authentication reference link to docker-compose.yml
* feat: add Rote template
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
* fix: process meta.json to fix formatting and sorting
* Update GitHub workflows to target 'canary' branch for meta validation
* Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance.
* Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests.
* Refactor GitHub workflow: comment out build preview steps for clarity and future modifications.
* Remove unnecessary blank line in deploy-preview.yml for improved readability.
* Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity.
* Update template.toml (#555)
* Update template.toml
* Update template.toml
* Update template.toml
* fix: change VITE_API_BASE to http:// for traefik.me compatibility
* changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config
* Add Openinary Template (#567)
* feat: add Openinary template
* feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable
* fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562)
* add rustfs template (#568)
* feat: add pull request template for improved contribution guidelines
* fix: update pull request template to clarify issue closing keywords
* feat: add validation scripts and configuration for Docker Compose and template files
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
* Add Passbolt template blueprint to Dokploy templates (#376)
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add Kokoro TTS FastAPI template (#353) (#403)
* feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves#353
* updated the meta.json for the build errors
* removed the docker-compose-gpu.yml file
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* chore: remove package-lock.json file from the app directory
* chore: update Tolgee to latest version and fix SMTP config typo (#432)
* chore: update Tolgee to latest version and fix SMTP config typo
* Update docker-compose.yml
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: improve Docker Compose validation workflow to handle subshell issues
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* refactor: enhance Docker Compose validation workflow to improve error handling
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
* Feat: Add parseable (#460)
* Add parseable
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/parseable/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: add ChirpStack LoRaWAN Network Server template (#486)
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* Update section title from 'Suggestions' to 'Requirements'
* Feat : Add MCSManager template support (#521) (#522)
* feat: Add MCSManager template support (#521)
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: Add MediaCMS template (#524)
* Feat : Add Quant-Ux template -#173 (#525)
* Feat : Add Quant-Ux template -#173
* Remove extra newline in docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
* Update blueprints/quant-ux/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526)
* fix: use explicit ports, use port 21118 on hbbs instead of hbbr
* fix: whitespace character in rustdesk
* feat: Add anytype template (#527)
* add anytype template
* sort
* Update name field for Anytype in meta.json
* Update meta.json
* Update docker-compose.yml
* Update blueprints/anytype/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* refactor: remove dokploy-network configurations from multiple docker-compose files
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529)
* chore: upgrade Infisical from v0.90.1 to v0.135.0
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* fix: update pull request template link for clarity
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
* chore: add section for screenshots or videos in pull request template
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
* Feat : Add MuleSoft ESB Runtime Template (#498)
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): update trmnl-byos-laravel template (#533)
* feat(blueprint): update trmnl-byos-laravel template
* Update docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template
* fix: entrypoint and healthcheck
* fix: entrypoint
* fix: temporarily remove network
* fix: temporal port
* chore: remove 36987 for minio
* fix: remove peerdb 9900 port exposure
* fix: port for console
* fix: minio env fix
* fix: expose peerdb and minio to dokploy network
* fix(peerdb): add defaults
* fix: remove extra hosts
* fix: remove network entries
* fix: use consistent environment variables
* feat: add Bluesky PDS template (#542)
* feat: Bluesky PDS template
* chore: add bluesky pds svg
* chore: metadata for bluesky pds
* yaml > yml
* pnpm lock
* fix: correct rotation key config
* fix volumes
* fix: volumes in the pds compose
* define volumes in compose
* fix: 32 bit rotation key
* create pds.env correctly
* some extra fixes
* more extra fixes
* a blank line
* update pnpm lock
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548)
* Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation
* Fix METRICS_CONFIG environment variable: use single-line JSON format
* Fix template.toml: use correct [config.env] syntax for environment variables
* Fix docker-compose.yml: add env_file reference to load environment variables
* Delete blueprints/dokploy-prom-monitoring-extension/README.md
* Delete test-dokploy-prom-monitoring-extension.sh
---------
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: improve RustDesk template configuration (#571)
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template (#572)
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* fix: update WireGuard Easy template for proper functionality (#573)
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* add: restart policy to MinIO service (#576)
restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart
---------
Co-authored-by: Sunil Shrestha <sunil.shrestha@tekkon.com.np>
Co-authored-by: Rabithua <rabithua@gmail.com>
Co-authored-by: Mauricio Siu <siumauricio@hotmail.com>
Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com>
Co-authored-by: Crackvignoule <kiki.kalagan@gmail.com>
Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com>
Co-authored-by: Thiago MadPin <madpin@gmail.com>
Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com>
Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com>
Co-authored-by: Harikrishnan Dhanasekaran <harikrishnan@mulecraft.in>
Co-authored-by: Kamil Dzieniszewski <kamil.dzieniszewski@gmail.com>
Co-authored-by: Nick Anderson <nbrookie@gmail.com>
Co-authored-by: lefolalan <alan.lefol@omirion.com>
Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com>
Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com>
Co-authored-by: Benjamin Nussbaum <bnussbau@users.noreply.github.com>
Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com>
Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com>
Co-authored-by: Sanjeevi Subramani <ssanjeevi.ss@gmail.com>
Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com>
Co-authored-by: Jemg <murksopps@gmail.com>
* fix: update WireGuard Easy template for proper functionality
- Changed to named volume (etc_wireguard) instead of host path mount
- Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard
- Updated environment variables to use correct WG_HOST and PASSWORD format
- Added all required WireGuard environment variables:
- WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS
- WG_POST_UP/WG_POST_DOWN for iptables rules
- Added NET_RAW capability for proper network operations
- Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD
- Removed explicit networks config to enable Dokploy's isolated deployment
- Template now works with Dokploy's automatic network isolation
This configuration has been tested and confirmed working with isolated deployment enabled.
* Update template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* feat: add Mumble voice chat server template
- Add Mumble VoIP server blueprint with docker-compose.yml
- Configure environment variables for superuser password, welcome text, and max users
- Add template.toml with auto-generated secure password
- Follow Dokploy best practices (no container_name, proper port format)
- Add Mumble metadata to meta.json with proper tags
- Support for TCP and UDP on port 64738
* Update template.toml
* fix: correct JSON formatting in meta.json for Mumble template entry
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
* feat: improve RustDesk template configuration
- Add comprehensive environment variables for RustDesk server
- Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables
- Follow Dokploy best practices (no container_name, proper port format)
- Use restart: unless-stopped policy
- Add encryption key generation with password helper
* fix: use explicit port mapping for RustDesk services
RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for:
- 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal
- 21117-21119 (TCP): hbbr relay service
Without explicit port mapping, RustDesk clients cannot establish connections to the server.
This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
* added the mulesoft esb template
* updated the compose and the meta.json
* feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection
* updated the meta.json to use the version as latest
* added a comment line to the template file
* updated the mule runtime image
* fix(mulesoft-esb): update ports configuration to follow guidelines
* updated the port to use the env(HTTP_PORT)
* Update docker-compose.yml
* Update docker-compose.yml
* Update blueprints/mulesoft-esb/docker-compose.yml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
- Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions.
- Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates.
- Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management.
- This change simplifies the setup and ensures consistency across blueprints.
* feat: add ChirpStack LoRaWAN Network Server template
Add complete ChirpStack v4 template with:
- Main ChirpStack server with web UI
- UDP and Basics Station gateway bridges
- REST API interface
- PostgreSQL database with PostGIS extensions
- Redis cache
- Mosquitto MQTT broker
Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally.
* fix(chirpstack): use original configurations from chirpstack-docker repo
Update template.toml to use exact configuration files from the
chirpstack-docker repository instead of simplified versions:
- Use original chirpstack.toml with all 15 enabled regions
- Use original gateway bridge configuration with documentation links
- Use complete Basics Station EU868 config with frequency plans
- Keep original Mosquitto and PostgreSQL initialization scripts
Template size increased from 131 to 219 lines (4.7KB) to include
comprehensive default configurations that match the official setup.
* feat: add all 38 region configuration files
* fix(chirpstack): add volume mounts to expose config files to containers
* fix(chirpstack): remove read-only flag
* fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files
* fix: update volume paths to be on correct directory level
* fix: configure template for dokploy-network with proper DNS resolution
- Add dokploy-network configuration to docker-compose.yml
- Replace environment variable placeholders with actual service hostnames
- Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres
- Change Redis server from $REDIS_HOST to redis
- Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations
These changes ensure Docker DNS resolution works correctly by:
- Using dokploy-network (overlay) instead of bridge network
- Using service names directly in TOML config files (TOML doesn't expand env vars)
- Enabling proper service discovery between containers
This resolves DNS resolution failures that caused ChirpStack to fail connecting
to PostgreSQL and MQTT services during deployment.
* fix: add missing network configurations for all services in docker-compose
* feat: add internal services to config.domains for proper network configuration
* Update docker-compose.yml
* fix: enhance domain validation in template validator
- Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string.
- Added comments to clarify that 'host' is optional for internal services.
* refactor: remove redundant host validation in template validator
- Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided.
* refactor: remove internal service domain configurations from template
- Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability.
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
- Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell.
- Updated the loop structure for better reliability in processing the directories.
- Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell.
- Updated the loop to iterate over the array for better reliability in the validation process.
* feat(templates): add Passbolt blueprint for Dokploy
- Add docker-compose.yml defining services for Passbolt and MariaDB
- Create template.toml with configurable domain, email, and database credentials
- Add meta.json with metadata, tags, and link to logo
* fix(meta): sort meta.json entries
* fix: passbolt template had several issues that broke deployment
- env variables were using old array format, changed to new table format
- mariadb healthcheck was broken (wrong command for mariadb 11)
- missing volume mounts for gpg keys, jwt tokens, and database
- setup instructions weren't visible to users, moved to docker-compose
- email config had circular references causing warnings
- tested admin user creation and confirmed working
everything works now, fully tested
* Update blueprints/passbolt/template.toml
---------
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
- Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests.
- Added helper functions for generating random values and processing variables in templates.
- Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files.
- Created necessary TypeScript types and configuration files for the build scripts.
- Add Rote deployment template with frontend, backend, and PostgreSQL services
- Configure domain routing for frontend (port 80) and backend (port 3000)
- Set up automatic password generation and environment variables
- Use latest image tag by default
- Add logo and metadata to meta.json
- **Blueprints**: Self-contained templates with `docker-compose.yml` (service definitions) and `template.toml` (Dokploy-specific configuration for domains, env vars, mounts).
- **meta.json**: Centralized index of all templates, aggregated from blueprint metadata. Entries include `id`, `name`, `version`, `description`, `logo`, `links`, and `tags`.
- **app/**: Vite-based React frontend for local preview/development (runs at http://localhost:5173). Copies blueprints and meta.json to dist during build.
- **Scripts**: Node.js tools in root and `build-scripts/` for maintaining `meta.json` (deduplication, sorting, validation).
Data flow: New templates added to `blueprints/` → Metadata updated in `meta.json` → Processing scripts ensure consistency → App builds include static blueprints/meta for preview.
@@ -22,7 +21,6 @@ The "why": Enables rapid, standardized deployment of 200+ OSS apps on Dokploy wi
-`docker-compose.yml`: Standard Docker Compose v3.8. Avoid `ports`, `container_name`, `networks`—Dokploy handles isolation via internal networks.
-`template.toml`: Defines variables (e.g., `${domain}`), domains (service:port → host), env vars, and mounts. Use helpers like `${password:32}`, `${uuid}`, `${jwt:secret_var}`.
-`logo.svg/png`: Service icon, referenced in `meta.json`.
-`app/vite.config.ts`: Configures build to copy `blueprints/*` and `meta.json` to dist root for static serving.
@@ -32,6 +30,8 @@ Exemplary blueprint: `blueprints/ghost/`—`docker-compose.yml` exposes port 236
1.**Add/Update Template**:
- **REQUIREMENT**: Service **MUST** be open source. Only add templates for applications with an open-source license (e.g., MIT, Apache, GPL, AGPL). Proprietary or closed-source services are not allowed.
- **Verify Docker Images**: Before using any Docker image in `docker-compose.yml`, verify it exists using `docker manifest inspect <image:tag>` (e.g., `docker manifest inspect docker.io/bitnami/discourse:3.5.0`). This ensures the image is available and prevents deployment failures.
- Create `blueprints/<id>/` (e.g., `ghost`).
- Implement `docker-compose.yml` (single service typical; use volumes for persistence).
- Configure `template.toml`—reference vars in `[config.domains]`, `[config.env]`, `[config.mounts]`.
@@ -39,14 +39,7 @@ Exemplary blueprint: `blueprints/ghost/`—`docker-compose.yml` exposes port 236
- Run `node dedupe-and-sort-meta.js --backup` to validate/sort.
- Commit; PR triggers Dokploy preview (base64 import for testing).
- Meta processing: `npm run process-meta` or `make process-meta` (uses Makefile targets: `validate`, `check`, `build`).
- Build app: `cd app && pnpm build`—copies blueprints/meta to `dist/` for static hosting.
- Test template: Use PR preview URL or local Dokploy instance; import base64 from template card.
3.**CI/CD**:
2.**CI/CD**:
-`.github/workflows/validate-meta.yml` (if present): Runs validation on push/PR—fails on duplicates, invalid JSON, missing fields.
- Integrate processing: Add `npm run process-meta` to build steps; use `--no-backup` in CI.
@@ -54,20 +47,22 @@ No tests in repo—focus on manual validation via scripts and Dokploy deploys. D
## Conventions and Patterns
- **Open Source Requirement**: **ALL services MUST be open source**. Only applications with open-source licenses (MIT, Apache, GPL, AGPL, etc.) are allowed. Proprietary or closed-source services are strictly prohibited.
- **Template IDs**: Lowercase, kebab-case (e.g., `active-pieces`); unique across repo—enforced by dedupe script.
- **Docker Compose**: Minimal—omit `ports` (Dokploy proxies),`restart: unless-stopped`, persistent volumes (e.g., `- db-data:/var/lib/postgresql/data`). Services named after folder (e.g., `ghost` service).
- **Docker Compose**: Minimal—omit `ports` (Dokploy proxies), persistent volumes (e.g., `- db-data:/var/lib/postgresql/data`). Services named after folder (e.g., `ghost` service).
- **template.toml**:
- Variables: `[variables] main_domain = "${domain}"`; use helpers for secrets (`${password:64}`, `${base64:32}`).
- Env: `[[config.env]]` array of "KEY=VALUE" strings, interpolating vars (e.g., "DB_PASSWORD=${db_pass}").
- **URL Variables**: When environment variables require URLs (e.g., `WEB_URL`, `NEXTAUTH_URL`, `PUBLIC_URL`), **always use HTTP by default** (e.g., `"http://${main_domain}"`). HTTPS should only be used if explicitly required by the application or when using a reverse proxy with SSL termination.
- JWT helper: `${jwt:secret_var:payload_var}` for auth tokens; payload as JSON string with `exp: ${timestamps:YYYY-MM-DDTHH:mm:ssZ}`.
- **Meta.json**: Entries as JSON objects; tags array of lowercase strings (e.g., ["monitoring", "database"]); links object with `github`, `website`, `docs`.
- **No Networks**: Rely on Dokploy's isolated deployments—avoid explicit `networks:`.
- **Versions**: Pin images to specific versions in `docker-compose.yml` (e.g., `ghost:5.82.0-alpine`); match in `meta.json.version`.
- **Versions**: Pin images to specific versions in `docker-compose.yml` (e.g., `ghost:5.82.0-alpine`); match in `meta.json.version`.**NEVER use `latest` tag**—it can break templates when upstream images change unexpectedly. **Always verify image exists** using `docker manifest inspect <image:tag>` before committing.
- **Logos**: SVG preferred; size ~128x128; file name in `meta.json.logo` (e.g., "ghost.svg").
Cross-component: No runtime communication—templates independent. App consumes static blueprints/meta for UI rendering (e.g., search, cards via React components in `app/src/`).
Cross-component: Templates are independent and ship as static blueprints/meta.
- [ ] I have read the suggestions in the README.md file https://github.com/Dokploy/templates?tab=readme-ov-file#general-suggestions-when-creating-a-template
- [ ] I have read the suggestions in the README.md file https://github.com/Dokploy/templates?tab=readme-ov-file#general-requirements-when-creating-a-template
- [ ] I have tested the template in my instance, so the maintainers don't spend time trying to figure out what's wrong.
- [ ] I have added tests that demonstrate that my correction works or that my new feature works.
## Issues related (if applicable)
Close automatically the related issues using the keywords: `closes #ISSUE_NUMBER`, `fixes #ISSUE_NUMBER`, `resolves #ISSUE_NUMBER`
Close automatically the related issues using the keywords: `closes #ISSUE_NUMBER`
This document provides essential context for AI models interacting with this project. Adhering to these guidelines will ensure consistency and maintain code quality.
## 1. Project Overview & Purpose
- **Primary Goal:** This is the official repository for Dokploy Open Source Templates, maintaining Docker Compose templates for deploying 200+ open-source applications via Dokploy (a self-hosted PaaS alternative to Heroku). The project enables rapid, standardized deployment of OSS applications without manual configuration.
- **Business Domain:** Self-hosted Platform as a Service (PaaS), DevOps tooling, containerized application deployment, and open-source software distribution.
- **Build:** `vite-plugin-static-copy` for copying blueprints to dist.
- **Platforms:** Linux (primary), Docker containers, Dokploy PaaS, Web browsers (for frontend preview), Cloudflare Pages (for PR previews).
- **Package Manager:** npm for root project, pnpm for frontend (`app/` directory).
## 3. Architectural Patterns
- **Overall Architecture:** Template collection and management system with decentralized blueprint architecture. Each blueprint is a self-contained Docker Compose application with Dokploy-specific configuration.
- **Directory Structure Philosophy:**
-`/blueprints`: Contains all deployable application templates, each as a subdirectory with `docker-compose.yml`, `template.toml`, and logo files. Each blueprint is independent with no shared state.
-`/app`: Vite + React + TypeScript frontend for local preview and development.
-`/src/components`: React components (UI components in `/ui` subdirectory using shadcn/ui).
-`/src/hooks`: Custom React hooks (e.g., `useFuseSearch.ts` for fuzzy search).
-`/src/store`: Zustand state management store.
-`/src/lib`: Utility functions and helpers.
-`/build-scripts`: Metadata tooling — `generate-meta.js` (aggregates and validates every `blueprints/<id>/meta.json` into the served `meta.json` artifact) and `explode-meta.js` (one-shot migration reference).
-`/.github/workflows`: CI/CD workflows for validation, preview builds, and deployments.
- Root level: There is NO root `meta.json` in the repo — each template's metadata lives in `blueprints/<id>/meta.json` and the global registry is generated at build time.
- **Module Organization:** Node.js scripts for metadata processing, React components for frontend UI, Docker Compose files for service definitions, TOML files for Dokploy configuration. Frontend uses component-based architecture with hooks for business logic and Zustand for global state.
## 4. Coding Conventions & Style Guide
- **Formatting:** JavaScript follows standard conventions with 2-space indentation. TypeScript in frontend uses ESLint configuration. YAML uses 2-space indentation. TOML files use standard formatting.
- Template IDs: lowercase, kebab-case (`activepieces`, `ghost`) - **MUST** be unique across repository
- Files: kebab-case for scripts (`generate-meta.js`), PascalCase for React components (`TemplateGrid.tsx`), kebab-case for directories (`build-scripts`)
- Docker services: **MUST** match blueprint folder name exactly (e.g., `ghost` service in `blueprints/ghost/`)
- **API Design:**
- **Backend:** Procedural scripting approach with CLI interfaces. Template system uses declarative configuration over imperative code.
- **Frontend:** Component-based React architecture with hooks for logic separation. Zustand for centralized state management. Custom hooks encapsulate complex logic (e.g., `useFuseSearch` for search functionality).
- **Common Patterns & Idioms:**
- **Metaprogramming:** Minimal use of advanced JavaScript features in scripts, focusing on simple, maintainable code.
- **Memory Management:** Relies on Node.js garbage collection and React's automatic memory management.
- **Polymorphism:** Uses JavaScript prototype-based objects and functional programming patterns. React components use composition over inheritance.
- **Type Safety:**
- Backend scripts: JavaScript with JSDoc comments for documentation.
- Frontend: TypeScript with strict type checking enabled.
- **Concurrency:**
- Backend: Synchronous processing model for meta.json operations.
- Frontend: React's concurrent rendering, `useDeferredValue` for debouncing, `useEffect` for async operations.
- **State Management:** Zustand store pattern with selectors for optimal re-renders. URL params synced with search state via React Router.
- **Error Handling:**
- Backend: Node.js error-first callback pattern and try-catch blocks. Scripts validate JSON structure and fail fast on errors.
- Frontend: Error boundaries for React components, try-catch for async operations, user-friendly error messages via toast notifications.
## 5. Key Files & Entrypoints
- **Main Entrypoints:**
- **Backend:** `build-scripts/generate-meta.js` - Aggregates and validates all `blueprints/<id>/meta.json` files into the served `meta.json` artifact (`app/public/meta.json`, gitignored).
-`.github/workflows/validate-meta.yml` - Validates every `blueprints/<id>/meta.json` (via `generate-meta.js --check`) and rejects a committed root `meta.json`.
-`.github/workflows/build-preview.yml` - Builds preview deployments for PRs.
-`.github/workflows/deploy-preview.yml` - Deploys previews to Cloudflare Pages.
## 6. Development & Testing Workflow
- **Local Development Environment:**
- **Install dependencies**
```bash
# Root project
npm install
# Frontend (uses pnpm)
cd app && pnpm install
```
- **Validate template metadata** (CRITICAL: run after adding/editing any `blueprints/<id>/meta.json`)
```bash
node build-scripts/generate-meta.js --check
```
- **Generate the served meta.json artifact** (done automatically by `pnpm dev` / `pnpm build` in `app/`)
- `dev`: Generate meta artifact + start Vite dev server
- `build`: Generate meta artifact + typecheck + Vite build
- `generate-meta`: Generate the meta artifact only
- **Testing:** No formal unit testing framework. Validation occurs through:
- Script-based validation of every `blueprints/<id>/meta.json` (`build-scripts/generate-meta.js --check`)
- Manual testing via Dokploy preview deployments (import base64 from PR preview)
- TypeScript compilation errors caught during build
- ESLint for code quality in frontend
- **CI/CD Process:**
- **On blueprint changes:** Validates each template's metadata (required fields, id/folder match, logo file exists) and rejects a committed root `meta.json`.
- **On PR creation:** Builds preview deployment, generates base64 import for testing in Dokploy.
- **Preview testing:** Use PR description link → Search template → Copy base64 → Import in Dokploy instance.
## 7. Specific Instructions for AI Collaboration
- **Contribution Guidelines:**
- Follow existing Dokploy template structure strictly. Each blueprint must be independent with no shared state.
- **CRITICAL:** Template metadata lives in `blueprints/<id>/meta.json` (one object per template). Never create or edit a root-level `meta.json` — it is generated at build time. Run `node build-scripts/generate-meta.js --check` after any metadata edits.
- Test templates in Dokploy preview before submitting PRs (use base64 import from PR preview).
- Add logo file (SVG preferred, ~128x128px) to blueprint folder.
- Ensure the `id` in `blueprints/<id>/meta.json` exactly matches the blueprint folder name (lowercase kebab-case).
- **ALWAYS include:** `restart: unless-stopped` or `restart: always`, persistent volumes
- **Service naming:** MUST match blueprint folder name exactly
- **Image source:** Prefer pinned Docker images from registries (`image: ghost:6-alpine`). When no official published images are available, use Docker Compose `build` with a Git context (e.g., `context: "https://github.com/..."#main`, see `blueprints/opendots` for an example building both `app` and `browser` targets from the upstream repository).
- **Example (with pinned image):**
```yaml
services:
ghost:
image: ghost:6-alpine
restart: always
volumes:
- ghost:/var/lib/ghost/content
volumes:
ghost:
```
- **template.toml Conventions:**
- **Variables:** Define in `[variables]` section, use helpers for secrets
- **Domains:** `[[config.domains]]` with `serviceName`, `port`, `host` (path optional)
- **Env:** Array of strings: `env = ["KEY=VALUE", "DB_PASSWORD=${db_pass}"]`
- **JWT helper example:** `${jwt:mysecret:mypayload}` with payload containing `exp: ${timestamps:2030-01-01T00:00:00Z}`
- **Volume bind mounts (in docker-compose.yml):** When mounting host paths, do NOT use absolute paths like `"/folder:/path/in/container"`. Use relative paths instead:
- **Version:** MUST match Docker image version in docker-compose.yml when using `image:`. When building from source (using `build:` with a Git context), the version should reflect the template's own version or the upstream project's version (e.g., `"latest"` for tracking `main` branch).
- **Logo:** Filename only (e.g., `"ghost.jpeg"`), file must exist in blueprint folder
- **Frontend Development:**
- Use TypeScript with strict type checking
- Follow React hooks patterns, avoid class components
- Use Zustand selectors for state access to optimize re-renders
- Fuse.js searches across `name`, `description`, `tags`, `id` fields
- Use shadcn/ui components for consistency
- Sync URL params with search state via React Router
- **Security:**
- Be mindful of security when handling template configurations
- NEVER hardcode secrets in templates - use Dokploy's variable system with helpers
- Pin Docker images to specific versions to avoid supply chain attacks
- Validate user input in frontend before processing
- **Dependencies:**
- When adding new templates, prefer pinned Docker images to specific versions when available
- Update meta.json with exact version matching Docker Compose image version (for `image:`), or the template/upstream version (for `build:` from source)
- For frontend dependencies: Use `pnpm add <package>` in `app/` directory
- For root dependencies: Use `npm install <package>` in root directory
@@ -20,6 +20,11 @@ This project adheres to the [Contributor Covenant Code of Conduct](https://www.c
For larger changes or questions, open an issue first to discuss your ideas.
### Pull Request Guidelines
- **Keep PRs small and focused.** Avoid very large PRs; prefer several smaller PRs (e.g., one template or one logical change per PR). This speeds up review and keeps the history clear.
- **Test before submitting.** Any PR that has not been tested by the contributor will be closed. This keeps the PR queue tidy and ensures that only contributions that have been verified by their authors are considered.
## Adding a New Template
To add a new template, follow these steps:
@@ -27,13 +32,11 @@ To add a new template, follow these steps:
1.**Create a Folder in `blueprints/`**: Name it after the template (e.g., `grafana`). Use lowercase with hyphens for multi-word names.
2.**Add `docker-compose.yml`**: Define the services, volumes, and other Compose configurations. Key guidelines:
- Use `version: "3.8"` or later.
- Avoid exposing ports explicitly (e.g., no `ports: - "3000:3000"`; just `- 3000` if needed for internal reference).
- Do not use `container_name`.
- Avoid custom networks like `dokploy-network`; Dokploy handles isolation automatically.
- Example for Grafana:
```yaml
version: "3.8"
services:
grafana:
image: grafana/grafana-enterprise:9.5.20
@@ -68,16 +71,16 @@ To add a new template, follow these steps:
"""
```
4. **Update `meta.json`**: Add an entry for your template in the root `meta.json`. Include:
4. **Add `meta.json` in your template folder**: Create `blueprints/<id>/meta.json` with a single JSON object describing your template. Do NOT create or edit a root-level `meta.json` — the global registry is generated automatically at build time from every `blueprints/<id>/meta.json` (this is what makes template PRs conflict-free). Include:
- `id`: Folder name (e.g., "grafana").
- `id`: Folder name (e.g., "grafana") — must match the folder exactly.
- `name`: Display name.
- `version`: Image/tag version.
- `description`: Brief overview.
- `logo`: Filename of the logo (e.g., "grafana.svg").
- `links`: Object with `github`, `website`, `docs` (URLs).
- `links`: Object with `github`, `website`, `docs` (URLs; use `""` if not applicable).
- `tags`: Array of categories (e.g., ["monitoring"]).
- Example:
- Example (`blueprints/grafana/meta.json`):
```json
{
"id": "grafana",
@@ -96,7 +99,7 @@ To add a new template, follow these steps:
5. **Add a Logo**: Place an SVG or PNG logo (e.g., `grafana.svg`) in the template folder. Keep it simple and representative (ideally 512x512 or similar).
6. **Run Validation**: Before pushing, run `node dedupe-and-sort-meta.js` (if available) or manually check for syntax errors in YAML/TOML/JSON.
6. **Run Validation**: Before pushing, run `node build-scripts/generate-meta.js --check` to validate every template's metadata (same check CI runs), and manually check for syntax errors in YAML/TOML.
7. **Commit and PR**: Push your branch and open a PR. Include:
- A description of the template.
@@ -148,7 +151,6 @@ Use these in `${}` for dynamic values:
- Omit explicit ports; let Dokploy handle exposure.
- Use persistent volumes for data (e.g., databases).
- Set `restart: unless-stopped` for services.
- **Template.toml**:
@@ -191,7 +193,7 @@ If issues arise, debug locally or in the preview. Fix and update your PR.
## Updating Existing Templates
- Follow the same structure as adding new ones.
- Bump `version` in `meta.json` and update `docker-compose.yml` image tags.
- Bump `version` in the template's `blueprints/<id>/meta.json` and update `docker-compose.yml` image tags.
@@ -8,7 +8,7 @@ This is the official repository for the Dokploy Open Source Templates.
1. Fork the repository
2. Create a new branch
3. Add the template to the `blueprints` folder (`docker-compose.yml`, `template.toml`)
4. Add the template metadata (name, description, version, logo, links, tags) to the `meta.json` file
4. Add the template metadata (name, description, version, logo, links, tags) in a `meta.json` file inside your template folder (`blueprints/<id>/meta.json`) — do NOT create or edit a root-level `meta.json`, it is generated at build time
5. Add the logo to the template folder
6. Commit and push your changes
7. Create a pull request (PR)
@@ -35,7 +35,6 @@ Let's suppose you want to add the [Grafana](https://grafana.com/) template to th
2. Add the `docker-compose.yml` file to the folder
```yaml
version:"3.8"
services:
grafana:
image:grafana/grafana-enterprise:9.5.20
@@ -62,7 +61,7 @@ host = "${main_domain}"
[[config.mounts]]
```
4. Add meta information to the `meta.json` file in the root folder
4. Add the meta information in `blueprints/<id>/meta.json` (a single JSON object; the root `meta.json` is generated automatically at build time)
```json
{
@@ -170,7 +169,7 @@ We have a few helpers that are very common when creating a template, these are:
## General Suggestions when creating a template
## General Requirements when creating a template
- Don't use this way in your docker compose file:
@@ -183,7 +182,7 @@ services:
- 3000:3000
# Instead use this way:
ports:
expose:
- 3000
```
@@ -225,4 +224,4 @@ services:
6. Now you can click on the Deploy Button and wait for the deployment to finish, and try to access to the service, if everything is correct you should access to the service and see the template working.
use the command `node dedupe-and-sort-meta.js` to deduplicate and sort the meta.json file.
Each template's metadata lives in `blueprints/<id>/meta.json`; the global `meta.json` is generated at build time. Use `node build-scripts/generate-meta.js --check` to validate all template metadata.
<metaname="description"content="Browse 500+ open source Docker templates and one-click self-hosted apps to deploy with Dokploy – databases, CMS, analytics, AI tools and more."/>
<metaproperty="og:title"content="Dokploy Templates: 500+ Open Source Apps"/>
<metaproperty="og:description"content="Browse 500+ open source Docker templates and one-click self-hosted apps to deploy with Dokploy – databases, CMS, analytics, AI tools and more."/>
<metaname="twitter:title"content="Dokploy Templates: 500+ Open Source Apps"/>
<metaname="twitter:description"content="Browse 500+ open source Docker templates and one-click self-hosted apps to deploy with Dokploy – databases, CMS, analytics, AI tools and more."/>
<title>Dokploy Templates: 500+ Open Source Apps</title>
"description":"A live, isometric 3D view of your Dokploy: projects as buildings, services as racks, deploys rolling in on carts, network traffic as packets. Read-only.",
"description":"Self-hosted AI model router that rotates requests across 40+ providers with automatic fallback, exposing an OpenAI-compatible endpoint for coding agents.",
# dokploy: allow-host-ports — DNS (53/tcp+udp), DHCP (67/68) and DNS-over-TLS/QUIC (853) are not HTTP protocols; clients must reach them directly on the host, Traefik cannot route them.
services:
adguardhome:
image:adguard/adguardhome:latest
@@ -10,11 +10,12 @@ services:
- "68:68/tcp"# DHCP Client
- "853:853/tcp"# DNS over TLS, DNS-over-QUIC
- "853:853/udp"# DNS over TLS, DNS-over-QUIC
- "6060:6060/tcp"# HTTP (pprof)
expose:
- 6060# HTTP (pprof) — debug endpoint, no need to publish it on the host
"description":"AdGuard Home is a network-wide ad and tracker blocker. Self-host it on your own server with Dokploy, which deploys AdGuard Home as a Docker Compose service in a few clicks.",
"seoDescription":"Network-wide ad and tracker blocker. Deploy AdGuard Home with Docker Compose on Dokploy in minutes – free, open source, self-hosted.",
"description":"Adminer is a lightweight, web-based database management tool. Self-host it on your own server with Dokploy, which deploys Adminer as a Docker Compose service in a few clicks.",
"logo":"logo.svg",
"links":{
"github":"https://github.com/vrana/adminer",
"website":"https://www.adminer.org/",
"docs":"https://www.adminer.org/en/plugins/"
},
"tags":[
"databases",
"developer-tools",
"mysql",
"postgresql"
],
"seoTitle":"Adminer Docker Compose Setup",
"seoDescription":"Lightweight database management tool. Deploy Adminer with Docker Compose on Dokploy in minutes – free, open source, self-hosted.",
"description":"AFFiNE is a workspace for notes, docs, and whiteboards, and an alternative to Notion. Self-host it on your own server with Dokploy, which deploys AFFiNE as a Docker Compose service in a few clicks.",
"description":"AllTube Download is an application designed to facilitate the downloading of videos from YouTube and other video sites. It provides an HTML GUI for youtube-dl with video conversion capabilities and JSON API support.",
"description":"Ampache is a web-based audio/video streaming application and file manager allowing you to access your music & videos from anywhere, using almost any internet enabled device.",
"description":"AnonUpload is a secure, anonymous file sharing application that does not require a database. It is built with privacy as a priority, ensuring that the direct filename used is not displayed.",
"description":"AnythingLLM is a private AI chat app for working with your own documents. Self-host it on your own server with Dokploy, which deploys AnythingLLM as a Docker Compose service in a few clicks.",
# dokploy: allow-host-ports — Anytype clients speak the any-sync protocol (TCP 33010, UDP/QUIC 33020) directly against the server; it is not HTTP, so Traefik cannot route it.
# Example: Any-Sync-Bundle with embedded MongoDB and Redis (all-in-one image)
#
# Usage:
# docker compose -f compose.aio.yml up -d
#
# The bundle image already contains MongoDB and Redis. Only the bundle service is required
services:
any-sync-bundle:
image:ghcr.io/grishy/any-sync-bundle:latest
restart:unless-stopped
ports:
- "33010:33010"
- "33020:33020/udp"
volumes:
- ../files/anytype-data:/data
environment:
# Advertise addresses clients should use. Replace with your server hostname/IP.
"description":"Anytype is a private, offline-first app for notes and personal knowledge. Self-host it on your own server with Dokploy, which deploys Anytype as a Docker Compose service in a few clicks.",
"seoDescription":"Private, offline-first personal knowledge base. Self-host Anytype on Dokploy – view your client config afterward with a quick command inside the container."
"description":"AppFlowy is a workspace app for notes, docs, and projects, and an open-source alternative to Notion. Self-host it on your own server with Dokploy, which deploys AppFlowy as a Docker Compose service in a few clicks.",
"description":"Apprise API provides a simple interface for sending notifications to almost all of the most popular notification services available to us today.",
"description":"Appwrite is an end-to-end platform for building Web, Mobile, Native, or Backend apps, packaged as a set of Docker microservices. It includes both a backend server and a fully integrated hosting solution for deploying static and server-side rendered frontends. Appwrite abstracts the complexity and repetitiveness required to build modern apps from scratch and allows you to build secure, full-stack applications faster.\nUsing Appwrite, you can easily integrate your app with user authentication and multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, messaging, and more services.",
SELECT name, splitByChar('_', name)[-1] AS suffix, arrayStringConcat(arrayPopBack(splitByChar('_', name)), '_') AS log
FROM system.tables
WHERE database = 'system'
AND position(engine_full, ' TTL ') = 0
AND endsWith(engine, 'MergeTree')
AND name IN (SELECT table FROM system.columns WHERE database = 'system' AND name = 'event_date' AND type = 'Date')
) AS stale
LEFT JOIN system.tables AS active
ON active.database = 'system'
AND active.name = stale.log
AND position(active.engine_full, ' TTL ') > 0
WHERE (endsWith(stale.log, '_log') AND toUInt64OrNull(stale.suffix) IS NOT NULL)
OR stale.name IN ('asynchronous_metric_log', 'metric_log', 'histogram_metric_log', 'query_metric_log', 'processors_profile_log', 'trace_log', 'text_log')
SQL
)
"""
[[config.domains]]
serviceName="appwrite-console"
port=3000
host="${main_domain}"
path="/"
[[config.domains]]
serviceName="appwrite"
port=80
host="${main_domain}"
path="/"
path="/v1"
[[config.domains]]
serviceName="appwrite-console"
serviceName="appwrite"
port=80
host="${main_domain}"
path="/console"
path="/.well-known"
[[config.domains]]
serviceName="appwrite-realtime"
port=80
host="${main_domain}"
path="/v1/realtime"
# --- Dedicated Console domain ---
# The Console SPA is served at the root of ${console_domain}, with /v1 and
# /v1/realtime proxied to the API and Realtime so the Console reaches the API
"description":"ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.",
"description":"Arche is a self-hosted AI workspace platform that spawns per-user OpenCode coding containers backed by a shared Knowledge Base. Requires the `arche-internal` external Docker network and `/opt/arche/{kb-content,kb-config,users}` directories on the host before deploy. Images are linux/amd64 by default; override `ARCHE_WEB_IMAGE` and `ARCHE_WORKSPACE_IMAGE` to the `-arm64` tag variants for ARM64 hosts.",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.