Skip to content

feat: add NodeLink template - #887

Merged
Siumauricio merged 3 commits into
Dokploy:canaryfrom
BinkyTwin:codex/add-nodelink-template
Jul 8, 2026
Merged

Siumauricio merged 3 commits into
Dokploy:canaryfrom
BinkyTwin:codex/add-nodelink-template

Conversation

@BinkyTwin

Copy link
Copy Markdown
Contributor

Summary

  • add a NodeLink template backed by the official 3.8.0 Docker image
  • configure Dokploy domain routing, generated server password, persistent cache/local music/log volumes
  • add README mount, SVG logo, and metadata entry

/claim #152
Closes #697

Validation

  • node dedupe-and-sort-meta.js
  • node --import ./build-scripts/node_modules/tsx/dist/loader.mjs build-scripts/validate-template.ts --dir blueprints/nodelink
  • node --import ./build-scripts/node_modules/tsx/dist/loader.mjs build-scripts/validate-docker-compose.ts --file blueprints/nodelink/docker-compose.yml
  • NODELINK_SERVER_PASSWORD=dummy-password NODELINK_LOGGING_LEVEL=info NODELINK_LOGGING_FILE_ENABLED=false NODELINK_SOURCES_LOCAL_ENABLED=false NODELINK_METRICS_ENABLED=false docker compose -f blueprints/nodelink/docker-compose.yml config
  • git diff --check

Copilot AI review requested due to automatic review settings May 20, 2026 20:12
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. new-template labels May 20, 2026
@BinkyTwin BinkyTwin mentioned this pull request May 20, 2026
@github-actions

github-actions Bot commented May 20, 2026 •

Copy link
Copy Markdown
built with Refined Cloudflare Pages Action

⚡ Cloudflare Pages Deployment

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Dokploy deployment template for the open-source NodeLink audio server, expanding the blueprints/ catalog and registering it in meta.json for discoverability.

Changes:

  • Added blueprints/nodelink/docker-compose.yml using the pinned performanc/nodelink:3.8.0 image with persistent volumes and a basic healthcheck.
  • Added blueprints/nodelink/template.toml defining domain routing, generated server password, and configurable logging/local-source/metrics env vars, plus a README mount.
  • Added blueprints/nodelink/nodelink.svg and a corresponding meta.json entry for template indexing.

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated no comments.

File Description
meta.json Registers the new nodelink template with version, links, tags, and logo reference.
blueprints/nodelink/template.toml Defines Dokploy variables, domain mapping to port 2333, env wiring, and README mount content.
blueprints/nodelink/docker-compose.yml Provides the NodeLink service definition with exposed port, env passthrough, volumes, and healthcheck.
blueprints/nodelink/nodelink.svg Adds the logo asset referenced by metadata.

@Siumauricio

Copy link
Copy Markdown
Contributor

Automated template check 🤖

This PR's template was imported into a test Dokploy instance (using the docker-compose.yml + template.toml from the PR head) and deployed, and its configured domains were then checked over HTTP.

Result: ❌ some issues need attention

nodelink

  • Deploy: done (25s)
  • Domain checks:
    • nodelink:2333 → HTTP 404 ❌
  • Container states at failure time: nodelink-1: running
  • Issues:
    • domain check failed for service nodelink:2333 (path /): kept returning HTTP 404 for 3 minutes after the deploy finished

The test service is removed automatically after verification. Happy to re-test once the PR is updated.

Copilot AI review requested due to automatic review settings July 8, 2026 06:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

NodeLink requires the Authorization header on every API route,
including /version, so the healthcheck's unauthenticated fetch always
got a 401 and the container stayed permanently unhealthy. Traefik
skips unhealthy containers, so the assigned domain returned a
sustained 404 even though the deploy finished successfully.

Pass the container's NODELINK_SERVER_PASSWORD as the Authorization
header in the healthcheck fetch; the container now reaches a healthy
state and the domain routes to the server (401 on / without
credentials, 200 on /version with the password), as expected for a
Lavalink-compatible server.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 8, 2026 07:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

@Siumauricio

Copy link
Copy Markdown
Contributor

Pushed a fix for the sustained 404 on the assigned domain (ef8071e).

Root cause: NodeLink requires the Authorization header on every API route, including /version. The compose healthcheck fetched /version without credentials, so it always got a 401 and the container stayed permanently unhealthy. Traefik skips unhealthy containers, which is why the domain kept returning 404 page not found even though the deploy finished and the container was running.

Fix: pass the container's NODELINK_SERVER_PASSWORD as the Authorization header in the healthcheck fetch (one-line change in docker-compose.yml).

Verified on a live Dokploy deployment: the container reaches healthy, the domain routes to the server (401 Unauthorized on / without credentials, as expected for a Lavalink-compatible server), and /version returns 3.8.0 with the generated password.

@Siumauricio
Siumauricio merged commit 00cb500 into Dokploy:canary Jul 8, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
Preview — ef8071e5 Deployed Jul 8, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🙋 Bounty claim new-template size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

nodelink

4 participants