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
Screenshots or Videos
Greptile Summary
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex ports→expose fix, budibase/appsmith/grafana version bumps, supabase CONTAINER_PREFIX fix), the sheer scale of changes introduces numerous violations of the project's AGENTS.md conventions that need to be resolved before merging.
Critical issues requiring fixes:
ports directive used in 4 blueprints (ipfs, trilium-next, verdaccio, vikunja) — this is explicitly forbidden; use expose + [[config.domains]] instead. The vikunja case is a regression.
container_name: wg-easy added to wg-easy/docker-compose.yml — explicitly forbidden.
Service name mismatches: wuzapi-server (folder: wuzapi) and trilium_next (folder: trilium-next) — must match exactly.
Absolute host bind mounts in trilium-next (~/trilium-data, /etc/timezone, /etc/localtime) — forbidden per AGENTS.md.
Version mismatches: mediafetch image uses latest but meta.json says 1.1.1; evolutionapi image changed to latest but meta.json still shows v2.1.2.
Non-deterministic image references in postgres-pgdog (${PGDOG_IMAGE}, ${POSTGRES_IMAGE}) — images must be pinned to specific versions.
Broken vikunja healthcheck: CMD-SHELL array form with env vars that won't be shell-substituted.
Missing restart policy on verdaccio and openclaw main service.
Missing version: "3.8" in openclaw, seaweedfs, strapi, and trilium-next.
Confidence Score: 1/5
Not safe to merge — multiple new blueprints have critical convention violations and functional bugs that would break Dokploy deployments.
There are 10+ distinct violations of the mandatory AGENTS.md conventions across multiple files: forbidden ports directives (4 files), forbidden container_name (1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missing restart policies (2 files), and missing version: "3.8" declarations (4 files). Many of these would cause actual deployment failures in Dokploy.
Per AGENTS.md, ports must never be included in Dokploy blueprints — Dokploy handles routing via its own ingress. This same violation appears in several other files in this PR:
blueprints/vikunja/docker-compose.yml lines 14–15 (regression — previously used expose)
Replace ports with expose in all of these files and configure routing through template.toml[[config.domains]] entries instead.
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
container_name forbidden by project conventions
AGENTS.md explicitly states that container_name must never be included in Dokploy blueprints, as it can conflict with Dokploy's internal container management.
(Remove the container_name: wg-easy line entirely.)
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
Service name must match blueprint folder name
AGENTS.md requires that the primary service name exactly matches the blueprint folder name. The folder is wuzapi but the service is named wuzapi-server. This mismatch will cause Dokploy domain routing (configured in template.toml with serviceName = "wuzapi-server") to be inconsistent with the convention.
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
Service name must match blueprint folder name
AGENTS.md requires the primary service name to exactly match the blueprint folder name. The folder is trilium-next but the service is trilium_next (underscore instead of hyphen). These are treated as distinct identifiers.
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
Absolute host paths in bind mounts are forbidden
AGENTS.md explicitly prohibits absolute host paths in volume bind mounts. Three bind mounts here violate this rule:
${TRILIUM_DATA_DIR:-~/trilium-data} — uses a ~-relative home directory path, which is an absolute path on the host
For trilium-data, use a named volume instead. For timezone/locale, these are host-specific paths that are not portable in a Dokploy context and should be removed; the container image handles its own timezone.
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
Docker images must be pinned to specific versions, not user-supplied variables
Both ${PGDOG_IMAGE} and ${POSTGRES_IMAGE} (line 18) are environment variable references used as image names. This means the actual image to be pulled is entirely determined at runtime by the user, making the template non-deterministic and impossible to validate. AGENTS.md requires images to be pinned to specific versions to prevent supply chain attacks and ensure consistent deployments.
Hardcode the image references to specific, tested version tags (e.g., pgdogio/pgdog:0.1.6 and postgres:17-alpine) and update meta.json accordingly.
Context Used: Rule from dashboard - AGENTS.md (source)
General comment
Broken healthcheck: CMD-SHELL requires a single shell string, not multiple arguments
CMD-SHELL runs a command via the shell and expects a single string as its argument. When passed as an array like ["CMD-SHELL", "pg_isready", "-U", "...", "-d", "..."], only pg_isready is passed as the shell command — the -U and -d flags are silently ignored, so the healthcheck will succeed regardless of the database state.
Additionally, environment variable substitution does not occur in the exec-form array — ${VIKUNJA_DATABASE_USER} will be passed as a literal string rather than the resolved value.
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
Screenshots or Videos
Greptile Summary
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex ports→expose fix, budibase/appsmith/grafana version bumps, supabase CONTAINER_PREFIX fix), the sheer scale of changes introduces numerous violations of the project's AGENTS.md conventions that need to be resolved before merging.
Critical issues requiring fixes:
ports directive used in 4 blueprints (ipfs, trilium-next, verdaccio, vikunja) — this is explicitly forbidden; use expose + [[config.domains]] instead. The vikunja case is a regression.
container_name: wg-easy added to wg-easy/docker-compose.yml — explicitly forbidden.
Service name mismatches: wuzapi-server (folder: wuzapi) and trilium_next (folder: trilium-next) — must match exactly.
Absolute host bind mounts in trilium-next (~/trilium-data, /etc/timezone, /etc/localtime) — forbidden per AGENTS.md.
Version mismatches: mediafetch image uses latest but meta.json says 1.1.1; evolutionapi image changed to latest but meta.json still shows v2.1.2.
Non-deterministic image references in postgres-pgdog (${PGDOG_IMAGE}, ${POSTGRES_IMAGE}) — images must be pinned to specific versions.
Broken vikunja healthcheck: CMD-SHELL array form with env vars that won't be shell-substituted.
Missing restart policy on verdaccio and openclaw main service.
Missing version: "3.8" in openclaw, seaweedfs, strapi, and trilium-next.
Confidence Score: 1/5
Not safe to merge — multiple new blueprints have critical convention violations and functional bugs that would break Dokploy deployments.
There are 10+ distinct violations of the mandatory AGENTS.md conventions across multiple files: forbidden ports directives (4 files), forbidden container_name (1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missing restart policies (2 files), and missing version: "3.8" declarations (4 files). Many of these would cause actual deployment failures in Dokploy.
so Docker performs the substitution at container runtime.)
General comment
Missing version: "3.8" and restart policy; unpinned browser image
Three issues in this file:
Missing version: "3.8" — AGENTS.md requires all Dokploy blueprints to declare version: "3.8" at the top of the compose file. This also applies to blueprints/seaweedfs/docker-compose.yml, blueprints/strapi/docker-compose.yml, and blueprints/trilium-next/docker-compose.yml in this PR.
openclaw service is missing a restart policy — add restart: unless-stopped or restart: always.
coollabsio/openclaw-browser:latest — the browser service uses an unpinned latest tag. Pin it to a specific version to match the openclaw service version and update meta.json accordingly.
Context Used: Rule from dashboard - AGENTS.md (source)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Dokploy/templates/pull/737
**Author:** [@Siumauricio](https://github.com/Siumauricio)
**Created:** 3/5/2026
**Status:** ✅ Merged
**Merged:** 3/5/2026
**Merged by:** [@Siumauricio](https://github.com/Siumauricio)
**Base:** `main` ← **Head:** `canary`
---
### 📝 Commits (10+)
- [`1e21b7e`](https://github.com/Dokploy/templates/commit/1e21b7e785b5a2e1b5a604df57cd23d31a0d3955) feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags
- [`758cf1d`](https://github.com/Dokploy/templates/commit/758cf1d873d45ea0771c109cbcb6101fedc3ba79) fix: rename templates to template.toml
- [`47daea9`](https://github.com/Dokploy/templates/commit/47daea92f862cf2d111d017b6f3e9da176455451) fix(librechat): rename api service to librechat in docker-compose.yml
- [`3e8b431`](https://github.com/Dokploy/templates/commit/3e8b43103173503b19e93276aa9810f4fa8cba98) Update blueprints/librechat/template.toml
- [`60796a9`](https://github.com/Dokploy/templates/commit/60796a90847bf27061eaba5491eb02c49400bdf2) Update blueprints/librechat/template.toml
- [`1d70294`](https://github.com/Dokploy/templates/commit/1d702943103d80af380e68f9a274d14d2fd90223) fix(librechat): add version under [config] and remove stray [config.mounts] header
- [`2e1fb3b`](https://github.com/Dokploy/templates/commit/2e1fb3b3a9ea2c277d593ca5891e744b0c01a7f6) fix(librechat): remove predefined persistent volume mounts from template.toml
- [`46dc5b9`](https://github.com/Dokploy/templates/commit/46dc5b9be3ea8f06d931d709ded142d2f7a216a9) docs(librechat): add authentication reference link to docker-compose.yml
- [`ac07aa2`](https://github.com/Dokploy/templates/commit/ac07aa2ed86c1ff47af34a3e50533ea2ce4946ff) feat: add Rote template
- [`d58cc15`](https://github.com/Dokploy/templates/commit/d58cc15c54c09f2e8a5768c839d569a2d2d61ce0) fix: process meta.json to fix formatting and sorting
### 📊 Changes
**25 files changed** (+915 additions, -87 deletions)
<details>
<summary>View changed files</summary>
📝 `blueprints/convex/docker-compose.yml` (+8 -8)
📝 `blueprints/evolutionapi/docker-compose.yml` (+1 -1)
📝 `blueprints/grafana/docker-compose.yml` (+1 -1)
➕ `blueprints/imgproxy/docker-compose.yml` (+76 -0)
➕ `blueprints/imgproxy/imgproxy.png` (+0 -0)
➕ `blueprints/imgproxy/template.toml` (+56 -0)
➕ `blueprints/mediafetch/docker-compose.yml` (+18 -0)
➕ `blueprints/mediafetch/mediafetch.svg` (+1 -0)
➕ `blueprints/mediafetch/template.toml` (+15 -0)
📝 `blueprints/nextcloud-aio/docker-compose.yml` (+14 -12)
➖ `blueprints/nextcloud-aio/nextcloud-aio.svg` (+0 -1)
➕ `blueprints/nextcloud-aio/nextcloud.png` (+0 -0)
📝 `blueprints/nextcloud-aio/template.toml` (+166 -12)
📝 `blueprints/notifuse/docker-compose.yml` (+28 -30)
📝 `blueprints/notifuse/template.toml` (+2 -17)
➕ `blueprints/tuwunel/docker-compose.yml` (+18 -0)
➕ `blueprints/tuwunel/template.toml` (+15 -0)
➕ `blueprints/tuwunel/tuwunel.svg` (+4 -0)
➕ `blueprints/unleash/docker-compose.yml` (+49 -0)
➕ `blueprints/unleash/template.toml` (+17 -0)
_...and 5 more files_
</details>
### 📄 Description
## What is this PR about?
New PR of [Template Name]
## Checklist
Before submitting this PR, please make sure that:
- [x] 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
- [x] I have tested the template in my instance, so the maintainers don't spend time trying to figure out what's wrong.
- [x] 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`
## Screenshots or Videos
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex `ports`→`expose` fix, budibase/appsmith/grafana version bumps, supabase `CONTAINER_PREFIX` fix), the sheer scale of changes introduces numerous violations of the project's `AGENTS.md` conventions that need to be resolved before merging.
**Critical issues requiring fixes:**
- **`ports` directive used in 4 blueprints** (`ipfs`, `trilium-next`, `verdaccio`, `vikunja`) — this is explicitly forbidden; use `expose` + `[[config.domains]]` instead. The `vikunja` case is a regression.
- **`container_name: wg-easy`** added to `wg-easy/docker-compose.yml` — explicitly forbidden.
- **Service name mismatches**: `wuzapi-server` (folder: `wuzapi`) and `trilium_next` (folder: `trilium-next`) — must match exactly.
- **Absolute host bind mounts** in `trilium-next` (`~/trilium-data`, `/etc/timezone`, `/etc/localtime`) — forbidden per `AGENTS.md`.
- **Version mismatches**: `mediafetch` image uses `latest` but `meta.json` says `1.1.1`; `evolutionapi` image changed to `latest` but `meta.json` still shows `v2.1.2`.
- **Non-deterministic image references** in `postgres-pgdog` (`${PGDOG_IMAGE}`, `${POSTGRES_IMAGE}`) — images must be pinned to specific versions.
- **Broken `vikunja` healthcheck**: `CMD-SHELL` array form with env vars that won't be shell-substituted.
- **Missing `restart` policy** on `verdaccio` and `openclaw` main service.
- **Missing `version: "3.8"`** in `openclaw`, `seaweedfs`, `strapi`, and `trilium-next`.
<h3>Confidence Score: 1/5</h3>
- Not safe to merge — multiple new blueprints have critical convention violations and functional bugs that would break Dokploy deployments.
- There are 10+ distinct violations of the mandatory AGENTS.md conventions across multiple files: forbidden `ports` directives (4 files), forbidden `container_name` (1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missing `restart` policies (2 files), and missing `version: "3.8"` declarations (4 files). Many of these would cause actual deployment failures in Dokploy.
- blueprints/ipfs/docker-compose.yml, blueprints/trilium-next/docker-compose.yml, blueprints/verdaccio/docker-compose.yml, blueprints/vikunja/docker-compose.yml, blueprints/wg-easy/docker-compose.yml, blueprints/wuzapi/docker-compose.yml, blueprints/mediafetch/docker-compose.yml, blueprints/evolutionapi/docker-compose.yml, blueprints/postgres-pgdog/docker-compose.yml, blueprints/openclaw/docker-compose.yml
<!-- greptile_failed_comments -->
<details><summary><h3>Comments Outside Diff (8)</h3></summary>
1. General comment
**`ports` directive forbidden by project conventions**
Per `AGENTS.md`, `ports` must **never** be included in Dokploy blueprints — Dokploy handles routing via its own ingress. This same violation appears in several other files in this PR:
- `blueprints/ipfs/docker-compose.yml` lines 11–14
- `blueprints/trilium-next/docker-compose.yml` lines 11–17
- `blueprints/verdaccio/docker-compose.yml` lines 8–9
- `blueprints/vikunja/docker-compose.yml` lines 14–15 (regression — previously used `expose`)
Replace `ports` with `expose` in all of these files and configure routing through `template.toml` `[[config.domains]]` entries instead.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
2. General comment
**`container_name` forbidden by project conventions**
`AGENTS.md` explicitly states that `container_name` must **never** be included in Dokploy blueprints, as it can conflict with Dokploy's internal container management.
(Remove the `container_name: wg-easy` line entirely.)
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
3. General comment
**Service name must match blueprint folder name**
`AGENTS.md` requires that the primary service name exactly matches the blueprint folder name. The folder is `wuzapi` but the service is named `wuzapi-server`. This mismatch will cause Dokploy domain routing (configured in `template.toml` with `serviceName = "wuzapi-server"`) to be inconsistent with the convention.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
4. General comment
**Service name must match blueprint folder name**
`AGENTS.md` requires the primary service name to exactly match the blueprint folder name. The folder is `trilium-next` but the service is `trilium_next` (underscore instead of hyphen). These are treated as distinct identifiers.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
5. General comment
**Absolute host paths in bind mounts are forbidden**
`AGENTS.md` explicitly prohibits absolute host paths in volume bind mounts. Three bind mounts here violate this rule:
- `${TRILIUM_DATA_DIR:-~/trilium-data}` — uses a `~`-relative home directory path, which is an absolute path on the host
- `/etc/timezone:/etc/timezone:ro` — absolute host path
- `/etc/localtime:/etc/localtime:ro` — absolute host path
For `trilium-data`, use a named volume instead. For timezone/locale, these are host-specific paths that are not portable in a Dokploy context and should be removed; the container image handles its own timezone.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
6. General comment
**Docker images must be pinned to specific versions, not user-supplied variables**
Both `${PGDOG_IMAGE}` and `${POSTGRES_IMAGE}` (line 18) are environment variable references used as image names. This means the actual image to be pulled is entirely determined at runtime by the user, making the template non-deterministic and impossible to validate. `AGENTS.md` requires images to be pinned to specific versions to prevent supply chain attacks and ensure consistent deployments.
Hardcode the image references to specific, tested version tags (e.g., `pgdogio/pgdog:0.1.6` and `postgres:17-alpine`) and update `meta.json` accordingly.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
7. General comment
**Broken healthcheck: `CMD-SHELL` requires a single shell string, not multiple arguments**
`CMD-SHELL` runs a command via the shell and expects a **single string** as its argument. When passed as an array like `["CMD-SHELL", "pg_isready", "-U", "...", "-d", "..."]`, only `pg_isready` is passed as the shell command — the `-U` and `-d` flags are silently ignored, so the healthcheck will succeed regardless of the database state.
Additionally, environment variable substitution does not occur in the exec-form array — `${VIKUNJA_DATABASE_USER}` will be passed as a literal string rather than the resolved value.
(Use `$` to escape the `## What is this PR about?
New PR of [Template Name]
## Checklist
Before submitting this PR, please make sure that:
- [x] 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
- [x] I have tested the template in my instance, so the maintainers don't spend time trying to figure out what's wrong.
- [x] 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`
## Screenshots or Videos
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex `ports`→`expose` fix, budibase/appsmith/grafana version bumps, supabase `CONTAINER_PREFIX` fix), the sheer scale of changes introduces numerous violations of the project's `AGENTS.md` conventions that need to be resolved before merging.
**Critical issues requiring fixes:**
- **`ports` directive used in 4 blueprints** (`ipfs`, `trilium-next`, `verdaccio`, `vikunja`) — this is explicitly forbidden; use `expose` + `[[config.domains]]` instead. The `vikunja` case is a regression.
- **`container_name: wg-easy`** added to `wg-easy/docker-compose.yml` — explicitly forbidden.
- **Service name mismatches**: `wuzapi-server` (folder: `wuzapi`) and `trilium_next` (folder: `trilium-next`) — must match exactly.
- **Absolute host bind mounts** in `trilium-next` (`~/trilium-data`, `/etc/timezone`, `/etc/localtime`) — forbidden per `AGENTS.md`.
- **Version mismatches**: `mediafetch` image uses `latest` but `meta.json` says `1.1.1`; `evolutionapi` image changed to `latest` but `meta.json` still shows `v2.1.2`.
- **Non-deterministic image references** in `postgres-pgdog` (`${PGDOG_IMAGE}`, `${POSTGRES_IMAGE}`) — images must be pinned to specific versions.
- **Broken `vikunja` healthcheck**: `CMD-SHELL` array form with env vars that won't be shell-substituted.
- **Missing `restart` policy** on `verdaccio` and `openclaw` main service.
- **Missing `version: "3.8"`** in `openclaw`, `seaweedfs`, `strapi`, and `trilium-next`.
<h3>Confidence Score: 1/5</h3>
- Not safe to merge — multiple new blueprints have critical convention violations and functional bugs that would break Dokploy deployments.
- There are 10+ distinct violations of the mandatory AGENTS.md conventions across multiple files: forbidden `ports` directives (4 files), forbidden `container_name` (1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missing `restart` policies (2 files), and missing `version: "3.8"` declarations (4 files). Many of these would cause actual deployment failures in Dokploy.
- blueprints/ipfs/docker-compose.yml, blueprints/trilium-next/docker-compose.yml, blueprints/verdaccio/docker-compose.yml, blueprints/vikunja/docker-compose.yml, blueprints/wg-easy/docker-compose.yml, blueprints/wuzapi/docker-compose.yml, blueprints/mediafetch/docker-compose.yml, blueprints/evolutionapi/docker-compose.yml, blueprints/postgres-pgdog/docker-compose.yml, blueprints/openclaw/docker-compose.yml
so Docker performs the substitution at container runtime.)
8. General comment
**Missing `version: "3.8"` and `restart` policy; unpinned browser image**
Three issues in this file:
1. **Missing `version: "3.8"`** — `AGENTS.md` requires all Dokploy blueprints to declare `version: "3.8"` at the top of the compose file. This also applies to `blueprints/seaweedfs/docker-compose.yml`, `blueprints/strapi/docker-compose.yml`, and `blueprints/trilium-next/docker-compose.yml` in this PR.
2. **`openclaw` service is missing a `restart` policy** — add `restart: unless-stopped` or `restart: always`.
3. **`coollabsio/openclaw-browser:latest`** — the `browser` service uses an unpinned `latest` tag. Pin it to a specific version to match the `openclaw` service version and update `meta.json` accordingly.
**Context Used:** Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
</details>
<!-- /greptile_failed_comments -->
<sub>Last reviewed commit: d157cef</sub>
> Greptile also left **3 inline comments** on this PR.
**Context used:**
- Rule from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
<!-- /greptile_comment -->
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
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.
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/737
Author: @Siumauricio
Created: 3/5/2026
Status: ✅ Merged
Merged: 3/5/2026
Merged by: @Siumauricio
Base:
main← Head:canary📝 Commits (10+)
1e21b7efeat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags758cf1dfix: rename templates to template.toml47daea9fix(librechat): rename api service to librechat in docker-compose.yml3e8b431Update blueprints/librechat/template.toml60796a9Update blueprints/librechat/template.toml1d70294fix(librechat): add version under [config] and remove stray [config.mounts] header2e1fb3bfix(librechat): remove predefined persistent volume mounts from template.toml46dc5b9docs(librechat): add authentication reference link to docker-compose.ymlac07aa2feat: add Rote templated58cc15fix: process meta.json to fix formatting and sorting📊 Changes
25 files changed (+915 additions, -87 deletions)
View changed files
📝
blueprints/convex/docker-compose.yml(+8 -8)📝
blueprints/evolutionapi/docker-compose.yml(+1 -1)📝
blueprints/grafana/docker-compose.yml(+1 -1)➕
blueprints/imgproxy/docker-compose.yml(+76 -0)➕
blueprints/imgproxy/imgproxy.png(+0 -0)➕
blueprints/imgproxy/template.toml(+56 -0)➕
blueprints/mediafetch/docker-compose.yml(+18 -0)➕
blueprints/mediafetch/mediafetch.svg(+1 -0)➕
blueprints/mediafetch/template.toml(+15 -0)📝
blueprints/nextcloud-aio/docker-compose.yml(+14 -12)➖
blueprints/nextcloud-aio/nextcloud-aio.svg(+0 -1)➕
blueprints/nextcloud-aio/nextcloud.png(+0 -0)📝
blueprints/nextcloud-aio/template.toml(+166 -12)📝
blueprints/notifuse/docker-compose.yml(+28 -30)📝
blueprints/notifuse/template.toml(+2 -17)➕
blueprints/tuwunel/docker-compose.yml(+18 -0)➕
blueprints/tuwunel/template.toml(+15 -0)➕
blueprints/tuwunel/tuwunel.svg(+4 -0)➕
blueprints/unleash/docker-compose.yml(+49 -0)➕
blueprints/unleash/template.toml(+17 -0)...and 5 more files
📄 Description
What is this PR about?
New PR of [Template Name]
Checklist
Before submitting this PR, please make sure that:
Issues related (if applicable)
Close automatically the related issues using the keywords:
closes #ISSUE_NUMBERScreenshots or Videos
Greptile Summary
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex
ports→exposefix, budibase/appsmith/grafana version bumps, supabaseCONTAINER_PREFIXfix), the sheer scale of changes introduces numerous violations of the project'sAGENTS.mdconventions that need to be resolved before merging.Critical issues requiring fixes:
portsdirective used in 4 blueprints (ipfs,trilium-next,verdaccio,vikunja) — this is explicitly forbidden; useexpose+[[config.domains]]instead. Thevikunjacase is a regression.container_name: wg-easyadded towg-easy/docker-compose.yml— explicitly forbidden.wuzapi-server(folder:wuzapi) andtrilium_next(folder:trilium-next) — must match exactly.trilium-next(~/trilium-data,/etc/timezone,/etc/localtime) — forbidden perAGENTS.md.mediafetchimage useslatestbutmeta.jsonsays1.1.1;evolutionapiimage changed tolatestbutmeta.jsonstill showsv2.1.2.postgres-pgdog(${PGDOG_IMAGE},${POSTGRES_IMAGE}) — images must be pinned to specific versions.vikunjahealthcheck:CMD-SHELLarray form with env vars that won't be shell-substituted.restartpolicy onverdaccioandopenclawmain service.version: "3.8"inopenclaw,seaweedfs,strapi, andtrilium-next.Confidence Score: 1/5
portsdirectives (4 files), forbiddencontainer_name(1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missingrestartpolicies (2 files), and missingversion: "3.8"declarations (4 files). Many of these would cause actual deployment failures in Dokploy.Comments Outside Diff (8)
General comment
portsdirective forbidden by project conventionsPer
AGENTS.md,portsmust never be included in Dokploy blueprints — Dokploy handles routing via its own ingress. This same violation appears in several other files in this PR:blueprints/ipfs/docker-compose.ymllines 11–14blueprints/trilium-next/docker-compose.ymllines 11–17blueprints/verdaccio/docker-compose.ymllines 8–9blueprints/vikunja/docker-compose.ymllines 14–15 (regression — previously usedexpose)Replace
portswithexposein all of these files and configure routing throughtemplate.toml[[config.domains]]entries instead.Context Used: Rule from
dashboard- AGENTS.md (source)General comment
container_nameforbidden by project conventionsAGENTS.mdexplicitly states thatcontainer_namemust never be included in Dokploy blueprints, as it can conflict with Dokploy's internal container management.(Remove the
container_name: wg-easyline entirely.)Context Used: Rule from
dashboard- AGENTS.md (source)General comment
Service name must match blueprint folder name
AGENTS.mdrequires that the primary service name exactly matches the blueprint folder name. The folder iswuzapibut the service is namedwuzapi-server. This mismatch will cause Dokploy domain routing (configured intemplate.tomlwithserviceName = "wuzapi-server") to be inconsistent with the convention.Context Used: Rule from
dashboard- AGENTS.md (source)General comment
Service name must match blueprint folder name
AGENTS.mdrequires the primary service name to exactly match the blueprint folder name. The folder istrilium-nextbut the service istrilium_next(underscore instead of hyphen). These are treated as distinct identifiers.Context Used: Rule from
dashboard- AGENTS.md (source)General comment
Absolute host paths in bind mounts are forbidden
AGENTS.mdexplicitly prohibits absolute host paths in volume bind mounts. Three bind mounts here violate this rule:${TRILIUM_DATA_DIR:-~/trilium-data}— uses a~-relative home directory path, which is an absolute path on the host/etc/timezone:/etc/timezone:ro— absolute host path/etc/localtime:/etc/localtime:ro— absolute host pathFor
trilium-data, use a named volume instead. For timezone/locale, these are host-specific paths that are not portable in a Dokploy context and should be removed; the container image handles its own timezone.Context Used: Rule from
dashboard- AGENTS.md (source)General comment
Docker images must be pinned to specific versions, not user-supplied variables
Both
${PGDOG_IMAGE}and${POSTGRES_IMAGE}(line 18) are environment variable references used as image names. This means the actual image to be pulled is entirely determined at runtime by the user, making the template non-deterministic and impossible to validate.AGENTS.mdrequires images to be pinned to specific versions to prevent supply chain attacks and ensure consistent deployments.Hardcode the image references to specific, tested version tags (e.g.,
pgdogio/pgdog:0.1.6andpostgres:17-alpine) and updatemeta.jsonaccordingly.Context Used: Rule from
dashboard- AGENTS.md (source)General comment
Broken healthcheck:
CMD-SHELLrequires a single shell string, not multiple argumentsCMD-SHELLruns a command via the shell and expects a single string as its argument. When passed as an array like["CMD-SHELL", "pg_isready", "-U", "...", "-d", "..."], onlypg_isreadyis passed as the shell command — the-Uand-dflags are silently ignored, so the healthcheck will succeed regardless of the database state.Additionally, environment variable substitution does not occur in the exec-form array —
${VIKUNJA_DATABASE_USER}will be passed as a literal string rather than the resolved value.(Use
$to escape the `## What is this PR about?New PR of [Template Name]
Checklist
Before submitting this PR, please make sure that:
Issues related (if applicable)
Close automatically the related issues using the keywords:
closes #ISSUE_NUMBERScreenshots or Videos
Greptile Summary
This is a large bulk update PR touching 72 files — adding ~20 new blueprints and updating ~15 existing ones with version bumps, dependency fixes, and structural improvements. While many individual changes are sound (convex
ports→exposefix, budibase/appsmith/grafana version bumps, supabaseCONTAINER_PREFIXfix), the sheer scale of changes introduces numerous violations of the project'sAGENTS.mdconventions that need to be resolved before merging.Critical issues requiring fixes:
portsdirective used in 4 blueprints (ipfs,trilium-next,verdaccio,vikunja) — this is explicitly forbidden; useexpose+[[config.domains]]instead. Thevikunjacase is a regression.container_name: wg-easyadded towg-easy/docker-compose.yml— explicitly forbidden.wuzapi-server(folder:wuzapi) andtrilium_next(folder:trilium-next) — must match exactly.trilium-next(~/trilium-data,/etc/timezone,/etc/localtime) — forbidden perAGENTS.md.mediafetchimage useslatestbutmeta.jsonsays1.1.1;evolutionapiimage changed tolatestbutmeta.jsonstill showsv2.1.2.postgres-pgdog(${PGDOG_IMAGE},${POSTGRES_IMAGE}) — images must be pinned to specific versions.vikunjahealthcheck:CMD-SHELLarray form with env vars that won't be shell-substituted.restartpolicy onverdaccioandopenclawmain service.version: "3.8"inopenclaw,seaweedfs,strapi, andtrilium-next.Confidence Score: 1/5
portsdirectives (4 files), forbiddencontainer_name(1 file), service naming mismatches (2 files), absolute host bind mounts (1 file), version mismatches between meta.json and image tags (2 files), non-deterministic image references (1 file), a broken healthcheck (1 file), missingrestartpolicies (2 files), and missingversion: "3.8"declarations (4 files). Many of these would cause actual deployment failures in Dokploy.so Docker performs the substitution at container runtime.)
General comment
Missing
version: "3.8"andrestartpolicy; unpinned browser imageThree issues in this file:
version: "3.8"—AGENTS.mdrequires all Dokploy blueprints to declareversion: "3.8"at the top of the compose file. This also applies toblueprints/seaweedfs/docker-compose.yml,blueprints/strapi/docker-compose.yml, andblueprints/trilium-next/docker-compose.ymlin this PR.openclawservice is missing arestartpolicy — addrestart: unless-stoppedorrestart: always.coollabsio/openclaw-browser:latest— thebrowserservice uses an unpinnedlatesttag. Pin it to a specific version to match theopenclawservice version and updatemeta.jsonaccordingly.Context Used: Rule from
dashboard- AGENTS.md (source)Last reviewed commit:
d157cefContext used:
dashboard- AGENTS.md (source)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.