Skip to content

Add Onyx template#707

Open
samiralavi wants to merge 5 commits intoDokploy:mainfrom
samiralavi:onyx-template
Open

Add Onyx template#707
samiralavi wants to merge 5 commits intoDokploy:mainfrom
samiralavi:onyx-template

Conversation

@samiralavi
Copy link

@samiralavi samiralavi commented Feb 10, 2026

What is this PR about?

New PR of Onyx

Checklist

Before submitting this PR, please make sure that:

Screenshots or Videos

Greptile Summary

This PR adds a new Dokploy template for Onyx, a self-hostable Chat UI with RAG, MCP, and LLM integration features. The template consists of a 12-service Docker Compose setup (API server, background worker, web server, model servers, PostgreSQL, Vespa, Redis, MinIO, nginx, and code-interpreter), a template.toml with extensive environment configuration and nginx config file mounts, a logo, and the meta.json entry.

Key issues found:

  • Hardcoded default credentials: Postgres and MinIO use static default values instead of Dokploy's secret generation helpers, violating the project's security conventions from AGENTS.md
  • Nginx volume mount paths: The nginx service mounts files from ../files/volumes/data/nginx/... — verify these relative paths resolve correctly to the [[config.mounts]] files defined in template.toml, as a mismatch would prevent nginx from starting
  • Missing version: "3.8": AGENTS.md requires Docker Compose files to specify this version, which is absent from this template
  • build: sections and env_file: references: The docker-compose includes build: contexts pointing to GitHub repos and env_file: .env on every service — neither is functional in a Dokploy deployment and adds unnecessary noise
  • Missing trailing newline in docker-compose.yml

Confidence Score: 2/5

  • This PR needs changes before merging — hardcoded credentials and potentially broken nginx volume paths should be addressed
  • Score of 2 reflects the hardcoded default credentials (security concern per AGENTS.md), the potentially broken nginx volume mount paths that could prevent the service from starting, and multiple deviations from project conventions (missing version directive, build sections, env_file references). The meta.json entry and template.toml structure are otherwise well-formed.
  • blueprints/onyx/template.toml (hardcoded credentials), blueprints/onyx/docker-compose.yml (nginx volume paths, convention violations)

Last reviewed commit: 8b81825

(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!

Context used:

  • Context from dashboard - AGENTS.md (source)

@samiralavi samiralavi changed the base branch from canary to main February 10, 2026 16:18
@github-actions
Copy link

github-actions bot commented Feb 10, 2026

built with Refined Cloudflare Pages Action

⚡ Cloudflare Pages Deployment

Name Status Preview Last Commit
templates ✅ Ready (View Log) Visit Preview 8b81825

@samiralavi samiralavi changed the title Onyx template Add Onyx template Feb 10, 2026
@Siumauricio
Copy link
Contributor

Hey, I'm getting error to import the template in dokploy

@samiralavi
Copy link
Author

@Siumauricio, the issue is now fixed. I have added the nginx configuration files, and it works well. I have tested it

@Siumauricio
Copy link
Contributor

@greptile review

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

4 files reviewed, 7 comments

Edit Code Review Agent Settings | Greptile

# For a complete production setup, refer to docker-compose.prod.yml
# =============================================================================

name: onyx
Copy link

Choose a reason for hiding this comment

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

Missing version: "3.8" directive

Per the project's AGENTS.md conventions, Docker Compose files must specify version: "3.8". The name: onyx directive at line 37 is also not standard for Dokploy templates (only ~7 out of 374 templates use it), and may interfere with Dokploy's own project naming. Consider replacing with the required version directive or adding it above the name: line.

Context Used: Context from dashboard - AGENTS.md (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +42 to +46
build:
context: https://github.com/onyx-dot-app/onyx.git#main:backend
dockerfile: Dockerfile
args:
- ENABLE_CRAFT=${ENABLE_CRAFT:-false}
Copy link

Choose a reason for hiding this comment

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

build: sections won't work in Dokploy

Multiple services (api_server, background, web_server, inference_model_server, indexing_model_server) include build: sections that reference a remote Git context. In a Dokploy deployment, these build: blocks are not used — Dokploy pulls pre-built images. While they're not harmful (Docker Compose will use image: if the build context is unavailable), they add significant noise to the template and could confuse users. Consider removing the build: sections from all services to keep the template focused on the Dokploy deployment workflow.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +52 to +54
env_file:
- path: .env
required: false
Copy link

Choose a reason for hiding this comment

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

env_file references non-existent .env file

Every service in this compose file references env_file: .env with required: false. In a Dokploy deployment, environment variables are managed through template.toml's [config] env array, and there is no .env file present. While required: false means this won't cause a startup failure, it's misleading and unnecessary in the Dokploy context. Consider removing all env_file: blocks.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +417 to +421
volumes:
- ../files/volumes/data/nginx/app.conf.template:/etc/nginx/conf.d/app.conf.template
- ../files/volumes/data/nginx/mcp.conf.inc.template:/etc/nginx/conf.d/mcp.conf.inc.template
- ../files/volumes/data/nginx/mcp_upstream.conf.inc.template:/etc/nginx/conf.d/mcp_upstream.conf.inc.template
- ../files/volumes/data/nginx/run-nginx.sh:/etc/nginx/conf.d/run-nginx.sh
Copy link

Choose a reason for hiding this comment

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

Nginx volume mounts use host-relative paths

The nginx service mounts configuration files from ../files/volumes/data/nginx/.... In Dokploy, these files are provided via [[config.mounts]] in template.toml, which creates them at paths like /volumes/data/nginx/... relative to the service's file mount root. However, the docker-compose references use ../files/volumes/data/nginx/... — verify that Dokploy correctly resolves these relative paths to the mounted files defined in the template.toml. If they don't match, nginx will fail to start because it can't find its configuration files.

Comment on lines +501 to +504
# Below is needed for the `docker-out-of-docker` execution mode
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Copy link

Choose a reason for hiding this comment

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

Docker socket mount with root user

The code-interpreter service runs as user: root and mounts the host Docker socket. This gives this container full control over the host's Docker daemon. While other templates in the repo also mount the Docker socket for specific use cases (portainer, windmill, etc.), combining it with user: root and an always-on restart: unless-stopped service that conditionally runs tail -f /dev/null when disabled is worth noting. Users should be aware of this security implication.

Comment on lines +58 to +59
'POSTGRES_USER=postgres',
'POSTGRES_PASSWORD=password',
Copy link

Choose a reason for hiding this comment

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

Use Dokploy helpers for credentials

The Postgres and MinIO credentials in this template use static, well-known default values. Per AGENTS.md guidelines, templates should use Dokploy's variable system with helpers like ${password:32} instead of hardcoding credentials. Most other templates in this repo follow this pattern — see blueprints/windmill/template.toml or blueprints/zitadel/template.toml for examples. This also applies to the MinIO-related values on lines 78-82.

Context Used: Context from dashboard - AGENTS.md (source)

inference_model_server_logs:
indexing_model_server_logs:
# Shared volume for persistent document storage (Craft file-system mode)
file-system: No newline at end of file
Copy link

Choose a reason for hiding this comment

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

Missing trailing newline

The file is missing a newline at the end. The git diff shows \ No newline at end of file on the last line. This is a minor issue but can cause problems with some tools and produces noisy diffs when lines are later appended.

Suggested change
file-system:
file-system:

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants