- 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 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)