From 79c38c58368d4eebd9259704490b60bd870526f2 Mon Sep 17 00:00:00 2001 From: BinkyTwin Date: Wed, 20 May 2026 22:10:02 +0200 Subject: [PATCH] feat: add NodeLink template --- blueprints/nodelink/docker-compose.yml | 36 +++++++++++++++++++++ blueprints/nodelink/nodelink.svg | 6 ++++ blueprints/nodelink/template.toml | 45 ++++++++++++++++++++++++++ meta.json | 18 +++++++++++ 4 files changed, 105 insertions(+) create mode 100644 blueprints/nodelink/docker-compose.yml create mode 100644 blueprints/nodelink/nodelink.svg create mode 100644 blueprints/nodelink/template.toml diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml new file mode 100644 index 000000000..ebc2ed049 --- /dev/null +++ b/blueprints/nodelink/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.8" + +services: + nodelink: + image: performanc/nodelink:3.8.0 + restart: unless-stopped + expose: + - "2333" + environment: + NODELINK_SERVER_HOST: 0.0.0.0 + NODELINK_SERVER_PORT: "2333" + NODELINK_SERVER_PASSWORD: ${NODELINK_SERVER_PASSWORD} + NODELINK_LOGGING_LEVEL: ${NODELINK_LOGGING_LEVEL} + NODELINK_LOGGING_FILE_ENABLED: ${NODELINK_LOGGING_FILE_ENABLED} + NODELINK_SOURCES_LOCAL_ENABLED: ${NODELINK_SOURCES_LOCAL_ENABLED} + NODELINK_SOURCES_LOCAL_BASEPATH: /app/local-music/ + NODELINK_METRICS_ENABLED: ${NODELINK_METRICS_ENABLED} + volumes: + - nodelink-cache:/app/.cache + - nodelink-local-music:/app/local-music + - nodelink-logs:/app/logs + healthcheck: + test: + [ + "CMD-SHELL", + "node -e \"fetch('http://127.0.0.1:2333/version').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"", + ] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +volumes: + nodelink-cache: + nodelink-local-music: + nodelink-logs: diff --git a/blueprints/nodelink/nodelink.svg b/blueprints/nodelink/nodelink.svg new file mode 100644 index 000000000..bded37ef5 --- /dev/null +++ b/blueprints/nodelink/nodelink.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/blueprints/nodelink/template.toml b/blueprints/nodelink/template.toml new file mode 100644 index 000000000..b140036c2 --- /dev/null +++ b/blueprints/nodelink/template.toml @@ -0,0 +1,45 @@ +[variables] +main_domain = "${domain}" +server_password = "${password:32}" +logging_level = "info" +file_logging_enabled = "false" +local_source_enabled = "false" +metrics_enabled = "false" + +[[config.domains]] +serviceName = "nodelink" +port = 2333 +host = "${main_domain}" +path = "/" + +[[config.mounts]] +filePath = "README.md" +content = """# NodeLink + +This template deploys NodeLink, a Lavalink-compatible audio server for Discord music bots and real-time audio systems. + +## Connection + +Use the deployed domain as your NodeLink/Lavalink server URL: + +- Host: `https://${main_domain}` +- Port: `443` when connecting through the Dokploy domain +- Password: the generated `server_password` value + +NodeLink exposes the `/version`, `/v4/stats`, and Lavalink-compatible WebSocket/API endpoints through the same domain. + +## Local Music + +The template creates a persistent `nodelink-local-music` volume mounted at `/app/local-music`. Set `local_source_enabled` to `true` before deployment if you want NodeLink to resolve `file:///app/local-music/...` tracks. + +## Metrics + +Set `metrics_enabled` to `true` to expose Prometheus metrics at `/v4/metrics`. Keep this disabled unless your deployment is protected and monitored. +""" + +[config.env] +NODELINK_SERVER_PASSWORD = "${server_password}" +NODELINK_LOGGING_LEVEL = "${logging_level}" +NODELINK_LOGGING_FILE_ENABLED = "${file_logging_enabled}" +NODELINK_SOURCES_LOCAL_ENABLED = "${local_source_enabled}" +NODELINK_METRICS_ENABLED = "${metrics_enabled}" diff --git a/meta.json b/meta.json index 8be7825d7..b56d5c5ac 100644 --- a/meta.json +++ b/meta.json @@ -4415,6 +4415,24 @@ "nocode" ] }, + { + "id": "nodelink", + "name": "NodeLink", + "version": "3.8.0", + "description": "NodeLink is a lightweight Lavalink-compatible audio server built in Node.js for Discord music bots and real-time audio systems.", + "logo": "nodelink.svg", + "links": { + "github": "https://github.com/PerformanC/NodeLink", + "website": "https://nodelink.js.org/", + "docs": "https://nodelink.js.org/docs/advanced/docker" + }, + "tags": [ + "audio", + "discord", + "lavalink", + "music" + ] + }, { "id": "notifuse", "name": "Notifuse",