Adds a blueprint for Dagu — a self-contained workflow engine with a Web UI. It's a lighter alternative to Airflow/cron: workflows are defined as DAGs in declarative YAML, and it needs no DBMS or external dependencies.
Pinned to ghcr.io/dagucloud/dagu:2.10.7 (current release).
Configuration notes
DAGU_HOST=0.0.0.0 — Dagu binds to 127.0.0.1 by default, so this is required for the reverse proxy to reach it.
Basic auth is enabled by default (DAGU_AUTH_MODE=basic) with user admin and a per-deploy password generated via ${password:32}. No credentials are hardcoded.
Persistence — /var/lib/dagu (DAGs, logs, run history) is kept in a named volume.
Testing
Tested against a live Dokploy deployment (raw compose import), and the exact compose file in this PR was verified locally:
Container starts healthy and logs Server is starting addr=0.0.0.0:8080.
Web UI reachable over HTTPS through the proxy on the assigned domain.
Basic auth enforced on the API and /mcp: /api/v1/* and /mcp return 401 WWW-Authenticate: Basic realm="restricted" without credentials, 200 with them. (The static SPA shell at / is served unauthenticated, as usual for a SPA — the data plane is what's protected.)
Volume persistence verified: created a DAG via the API, restarted the container, and confirmed it survived in /var/lib/dagu/dags/.
Format
Follows the blueprint format — service name, folder name, and meta.jsonid are all dagu; compose is v3.8 with no ports/container_name/custom networks; per-blueprint meta.json only (no root meta.json touched).
Dagu publishes no official SVG (only raster art), so logo.png is the official logo from dagu.sh, resized to 512x512 with transparency preserved (~8 KB) — matching the existing logo.png convention used by most blueprints.
🔄 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/1031
**Author:** [@knowsuchagency](https://github.com/knowsuchagency)
**Created:** 7/14/2026
**Status:** 🔄 Open
**Base:** `canary` ← **Head:** `add-dagu-template`
---
### 📝 Commits (1)
- [`0beb68a`](https://github.com/Dokploy/templates/commit/0beb68a228750b15959374041a7f92d49b0516f9) feat: add dagu blueprint
### 📊 Changes
**4 files changed** (+59 additions, -0 deletions)
<details>
<summary>View changed files</summary>
➕ `blueprints/dagu/docker-compose.yml` (+25 -0)
➕ `blueprints/dagu/logo.png` (+0 -0)
➕ `blueprints/dagu/meta.json` (+19 -0)
➕ `blueprints/dagu/template.toml` (+15 -0)
</details>
### 📄 Description
## Description
Adds a blueprint for [Dagu](https://github.com/dagucloud/dagu) — a self-contained workflow engine with a Web UI. It's a lighter alternative to Airflow/cron: workflows are defined as DAGs in declarative YAML, and it needs no DBMS or external dependencies.
Pinned to `ghcr.io/dagucloud/dagu:2.10.7` (current release).
## Configuration notes
- **`DAGU_HOST=0.0.0.0`** — Dagu binds to `127.0.0.1` by default, so this is required for the reverse proxy to reach it.
- **Basic auth is enabled by default** (`DAGU_AUTH_MODE=basic`) with user `admin` and a per-deploy password generated via `${password:32}`. No credentials are hardcoded.
- **Persistence** — `/var/lib/dagu` (DAGs, logs, run history) is kept in a named volume.
## Testing
Tested against a live Dokploy deployment (raw compose import), and the exact compose file in this PR was verified locally:
- Container starts healthy and logs `Server is starting addr=0.0.0.0:8080`.
- Web UI reachable over HTTPS through the proxy on the assigned domain.
- Basic auth enforced on the API and `/mcp`: `/api/v1/*` and `/mcp` return `401 WWW-Authenticate: Basic realm="restricted"` without credentials, `200` with them. (The static SPA shell at `/` is served unauthenticated, as usual for a SPA — the data plane is what's protected.)
- Volume persistence verified: created a DAG via the API, restarted the container, and confirmed it survived in `/var/lib/dagu/dags/`.
## Format
Follows the blueprint format — service name, folder name, and `meta.json` `id` are all `dagu`; compose is v3.8 with no `ports`/`container_name`/custom networks; per-blueprint `meta.json` only (no root `meta.json` touched).
Validators run, all passing:
- `node build-scripts/generate-meta.js --check` → `490 templates validated`
- `tsx build-scripts/validate-template.ts --dir blueprints/dagu` → valid
- `tsx build-scripts/validate-docker-compose.ts --file blueprints/dagu/docker-compose.yml` → valid
## Logo
Dagu publishes no official SVG (only raster art), so `logo.png` is the official logo from dagu.sh, resized to 512x512 with transparency preserved (~8 KB) — matching the existing `logo.png` convention used by most blueprints.
---
<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/1031
Author: @knowsuchagency
Created: 7/14/2026
Status: 🔄 Open
Base:
canary← Head:add-dagu-template📝 Commits (1)
0beb68afeat: add dagu blueprint📊 Changes
4 files changed (+59 additions, -0 deletions)
View changed files
➕
blueprints/dagu/docker-compose.yml(+25 -0)➕
blueprints/dagu/logo.png(+0 -0)➕
blueprints/dagu/meta.json(+19 -0)➕
blueprints/dagu/template.toml(+15 -0)📄 Description
Description
Adds a blueprint for Dagu — a self-contained workflow engine with a Web UI. It's a lighter alternative to Airflow/cron: workflows are defined as DAGs in declarative YAML, and it needs no DBMS or external dependencies.
Pinned to
ghcr.io/dagucloud/dagu:2.10.7(current release).Configuration notes
DAGU_HOST=0.0.0.0— Dagu binds to127.0.0.1by default, so this is required for the reverse proxy to reach it.DAGU_AUTH_MODE=basic) with useradminand a per-deploy password generated via${password:32}. No credentials are hardcoded./var/lib/dagu(DAGs, logs, run history) is kept in a named volume.Testing
Tested against a live Dokploy deployment (raw compose import), and the exact compose file in this PR was verified locally:
Server is starting addr=0.0.0.0:8080./mcp:/api/v1/*and/mcpreturn401 WWW-Authenticate: Basic realm="restricted"without credentials,200with them. (The static SPA shell at/is served unauthenticated, as usual for a SPA — the data plane is what's protected.)/var/lib/dagu/dags/.Format
Follows the blueprint format — service name, folder name, and
meta.jsonidare alldagu; compose is v3.8 with noports/container_name/custom networks; per-blueprintmeta.jsononly (no rootmeta.jsontouched).Validators run, all passing:
node build-scripts/generate-meta.js --check→490 templates validatedtsx build-scripts/validate-template.ts --dir blueprints/dagu→ validtsx build-scripts/validate-docker-compose.ts --file blueprints/dagu/docker-compose.yml→ validLogo
Dagu publishes no official SVG (only raster art), so
logo.pngis the official logo from dagu.sh, resized to 512x512 with transparency preserved (~8 KB) — matching the existinglogo.pngconvention used by most blueprints.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.