Merge pull request #887 from BinkyTwin/codex/add-nodelink-template

feat: add NodeLink template
This commit is contained in:
Mauricio Siu
2026-07-08 10:18:47 -06:00
committed by GitHub
4 changed files with 105 additions and 0 deletions

View File

@@ -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',{headers:{authorization:process.env.NODELINK_SERVER_PASSWORD||''}}).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:

View File

@@ -0,0 +1,18 @@
{
"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"
]
}

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
<rect width="128" height="128" rx="24" fill="#101820"/>
<path d="M28 86V34h15l30 30V34h27v60H85L55 64v30H28z" fill="#44d16b"/>
<circle cx="100" cy="34" r="10" fill="#d6ffe1"/>
<circle cx="28" cy="94" r="10" fill="#d6ffe1"/>
</svg>

After

Width:  |  Height:  |  Size: 302 B

View File

@@ -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}"