Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions ghost/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: '3.8'
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
- 2368:2368
environment:
Comment on lines +7 to +8
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 ports mapping violates project conventions

AGENTS.md explicitly states: "NEVER include: ports (use expose only), container_name, networks (Dokploy handles isolation)". Dokploy manages port routing internally; exposing 2368:2368 on the host conflicts with that mechanism and may cause port collisions across deployments.

Suggested change
- 2368:2368
environment:
expose:
- 2368

The same issue exists in n8n/docker-compose.yml at line 8.

Context Used: AGENTS.md (source)

database__client: sqlite3
database__connection__filename: content/data/ghost.db
url: http://localhost:2368
NODE_ENV: production
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Hardcoded localhost URL breaks deployments

url: http://localhost:2368 will make Ghost generate all internal links (emails, sitemaps, etc.) pointing to localhost, which is unreachable from the public internet. The existing blueprints/ghost/template.toml solves this with a ${domain} variable:

Suggested change
NODE_ENV: production
url: http://${GHOST_HOST}

And the corresponding template.toml variable injection would set GHOST_HOST to the actual deployment domain.

volumes:
- ghost_data:/var/lib/ghost/content

volumes:
ghost_data:
Comment on lines +1 to +17
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Wrong directory — duplicate template already exists

This file is placed at ghost/docker-compose.yml (repository root level), but Dokploy only reads templates from the blueprints/ subdirectory. A fully-featured Ghost blueprint already exists at blueprints/ghost/ (with MySQL, template.toml, a logo, and a meta.json entry). This PR creates an unreachable duplicate that will never appear in the Dokploy dashboard.

The new files should either be discarded (the template already exists) or replace/update blueprints/ghost/ following the existing structure.

10 changes: 10 additions & 0 deletions ghost/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "Ghost",
"description": "Turn your audience into a business. Publishing, newsletters, subscriptions and memberships.",
"version": "5.0",
"links": {
"repository": "https://github.com/TryGhost/Ghost",
"website": "https://ghost.org/"
},
"tags": ["cms", "blog", "publishing"]
}
19 changes: 19 additions & 0 deletions n8n/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Unpinned latest tag is a supply-chain risk

AGENTS.md states: "Pin Docker images to specific versions to avoid supply chain attacks" and "When adding new templates, ensure Docker images are pinned to specific versions". Using n8nio/n8n:latest means deployments silently break on upstream changes.

The existing blueprints/n8n/ blueprint already uses the correct pinned form:

Suggested change
image: n8nio/n8n:latest
image: docker.n8n.io/n8nio/n8n:1.104.0

Context Used: AGENTS.md (source)

restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Hardcoded localhost webhook URL

WEBHOOK_URL=http://localhost:5678/ will prevent n8n webhooks from being reachable externally. The existing blueprint resolves this with WEBHOOK_URL=https://${N8N_HOST}/ and a template.toml that injects the actual deployment domain at install time.

- WEBHOOK_URL=http://localhost:5678/
- GENERIC_TIMEZONE=Europe/Berlin
volumes:
- n8n_data:/home/node/.n8n

volumes:
n8n_data:
Comment on lines +1 to +19
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Wrong directory — duplicate template already exists

Same problem as the Ghost template: this file is placed at n8n/docker-compose.yml instead of blueprints/n8n/. A fully-featured n8n blueprint already exists at blueprints/n8n/ (with a pinned image version docker.n8n.io/n8nio/n8n:1.104.0, template.toml, logo, and meta.json entry). This PR creates an unreachable, lower-quality duplicate.

10 changes: 10 additions & 0 deletions n8n/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "n8n",
"description": "Free and open fair-code licensed node based Workflow Automation Tool. Easily automate tasks across different services.",
"version": "latest",
"links": {
"repository": "https://github.com/n8n-io/n8n",
"website": "https://n8n.io/"
},
"tags": ["automation", "workflow", "low-code"]
}
Comment on lines +1 to +10
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Wrong metadata format — index.json is not used by this project

Dokploy blueprints use template.toml for metadata and Dokploy-specific configuration (domains, env variable injection, etc.), not index.json. The AGENTS.md describes the required template.toml format with [variables], [config], and [[config.domains]] sections. These index.json files will be ignored entirely by the toolchain.

The same applies to ghost/index.json.

Context Used: AGENTS.md (source)

Loading