From a60c389c9e57aa52c18bc2b0b3429602028866cc Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 12:45:54 -0500
Subject: [PATCH 01/17] add cloudflare warp
---
blueprints/warp/docker-compose.yml | 14 ++++++++++++++
blueprints/warp/image.svg | 4 ++++
blueprints/warp/template.toml | 7 +++++++
meta.json | 20 ++++++++++++++++++--
4 files changed, 43 insertions(+), 2 deletions(-)
create mode 100644 blueprints/warp/docker-compose.yml
create mode 100644 blueprints/warp/image.svg
create mode 100644 blueprints/warp/template.toml
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
new file mode 100644
index 000000000..fdbb9a60f
--- /dev/null
+++ b/blueprints/warp/docker-compose.yml
@@ -0,0 +1,14 @@
+services:
+ cloudflare-warp-proxy:
+ image: seiry/cloudflare-warp-proxy
+ # image: ghcr.io/seiry/cloudflare-warp-proxy
+ network_mode: bridge
+ ports:
+ - 40000
+ restart: unless-stopped
+ environment:
+ - LICENSE=${WARP_KEY}
+ logging:
+ driver: json-file
+ options:
+ max-size: 1m
diff --git a/blueprints/warp/image.svg b/blueprints/warp/image.svg
new file mode 100644
index 000000000..126357740
--- /dev/null
+++ b/blueprints/warp/image.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
new file mode 100644
index 000000000..df6aa6d0e
--- /dev/null
+++ b/blueprints/warp/template.toml
@@ -0,0 +1,7 @@
+[variables]
+warp_key = "${warp_key}"
+
+[config]
+
+[[config.env]]
+WARP_LICENSE = "${warp_key}"
diff --git a/meta.json b/meta.json
index 7fc8b6b70..9ee96cc1d 100644
--- a/meta.json
+++ b/meta.json
@@ -1305,8 +1305,8 @@
"logo": "cloudflared.svg",
"links": {
"github": "https://github.com/cloudflare/cloudflared",
- "website": "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/",
- "docs": "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/"
+ "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/",
+ "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/"
},
"tags": [
"cloud",
@@ -6031,6 +6031,22 @@
"self-hosted"
]
},
+ {
+ "id": "warp",
+ "name": "Cloudflare WARP",
+ "version": "latest",
+ "description": "Cloudflare WARP Connector (beta) is a software client that enables site-to-site, bidirectional, and mesh networking connectivity without requiring changes to underlying network routing infrastructure.",
+ "logo": "image.svg",
+ "links": {
+ "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/",
+ "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-connector/"
+ },
+ "tags": [
+ "proxy",
+ "networking",
+ "tunnel"
+ ]
+ },
{
"id": "web-check",
"name": "Web-Check",
From fb24173159b22bd26c009c259cc2b56c7ce902e2 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 12:50:42 -0500
Subject: [PATCH 02/17] fix ig
---
meta.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta.json b/meta.json
index 9ee96cc1d..01e1157e3 100644
--- a/meta.json
+++ b/meta.json
@@ -6038,6 +6038,7 @@
"description": "Cloudflare WARP Connector (beta) is a software client that enables site-to-site, bidirectional, and mesh networking connectivity without requiring changes to underlying network routing infrastructure.",
"logo": "image.svg",
"links": {
+ "github": "https://github.com/cloudflare/",
"website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/",
"docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-connector/"
},
From d2699397644d5b5a226eac8b452daf9788629d40 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 12:52:35 -0500
Subject: [PATCH 03/17] fix again
---
blueprints/warp/docker-compose.yml | 2 +-
blueprints/warp/template.toml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
index fdbb9a60f..5e2f5e913 100644
--- a/blueprints/warp/docker-compose.yml
+++ b/blueprints/warp/docker-compose.yml
@@ -7,7 +7,7 @@ services:
- 40000
restart: unless-stopped
environment:
- - LICENSE=${WARP_KEY}
+ - LICENSE=${WARP_LICENSE}
logging:
driver: json-file
options:
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
index df6aa6d0e..df327bfad 100644
--- a/blueprints/warp/template.toml
+++ b/blueprints/warp/template.toml
@@ -1,7 +1,7 @@
[variables]
-warp_key = "${warp_key}"
+license = "${warp_key}"
[config]
[[config.env]]
-WARP_LICENSE = "${warp_key}"
+WARP_LICENSE = ""
From aaaa83355834b73e9dfbda1f72b21d7d2e309a04 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 13:06:41 -0500
Subject: [PATCH 04/17] b
---
blueprints/warp/docker-compose.yml | 8 ++------
blueprints/warp/template.toml | 7 ++-----
blueprints/warp/{image.svg => warp.svg} | 0
meta.json | 6 ++----
4 files changed, 6 insertions(+), 15 deletions(-)
rename blueprints/warp/{image.svg => warp.svg} (100%)
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
index 5e2f5e913..a084d907c 100644
--- a/blueprints/warp/docker-compose.yml
+++ b/blueprints/warp/docker-compose.yml
@@ -1,13 +1,9 @@
services:
cloudflare-warp-proxy:
- image: seiry/cloudflare-warp-proxy
- # image: ghcr.io/seiry/cloudflare-warp-proxy
- network_mode: bridge
- ports:
- - 40000
+ image: ghcr.io/seiry/cloudflare-warp-proxy:latest
restart: unless-stopped
environment:
- - LICENSE=${WARP_LICENSE}
+ - LICENSE=${WARP_KEY}
logging:
driver: json-file
options:
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
index df327bfad..9f0d08892 100644
--- a/blueprints/warp/template.toml
+++ b/blueprints/warp/template.toml
@@ -1,7 +1,4 @@
-[variables]
-license = "${warp_key}"
+variables = {}
[config]
-
-[[config.env]]
-WARP_LICENSE = ""
+env = ["WARP_KEY=\"\""]
diff --git a/blueprints/warp/image.svg b/blueprints/warp/warp.svg
similarity index 100%
rename from blueprints/warp/image.svg
rename to blueprints/warp/warp.svg
diff --git a/meta.json b/meta.json
index 01e1157e3..45649f3a8 100644
--- a/meta.json
+++ b/meta.json
@@ -6036,11 +6036,9 @@
"name": "Cloudflare WARP",
"version": "latest",
"description": "Cloudflare WARP Connector (beta) is a software client that enables site-to-site, bidirectional, and mesh networking connectivity without requiring changes to underlying network routing infrastructure.",
- "logo": "image.svg",
+ "logo": "warp.svg",
"links": {
- "github": "https://github.com/cloudflare/",
- "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/",
- "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-connector/"
+ "github": "https://github.com/seiry/docker-warp-proxy"
},
"tags": [
"proxy",
From 8912302b373d8864de18bf1f2d8d028b5b00919c Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 13:16:01 -0500
Subject: [PATCH 05/17] f
---
blueprints/warp/docker-compose.yml | 2 ++
blueprints/warp/template.toml | 9 ++++++++-
meta.json | 4 +++-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
index a084d907c..614254491 100644
--- a/blueprints/warp/docker-compose.yml
+++ b/blueprints/warp/docker-compose.yml
@@ -8,3 +8,5 @@ services:
driver: json-file
options:
max-size: 1m
+ volumes:
+ - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
index 9f0d08892..91ed41401 100644
--- a/blueprints/warp/template.toml
+++ b/blueprints/warp/template.toml
@@ -1,4 +1,11 @@
variables = {}
[config]
-env = ["WARP_KEY=\"\""]
+
+[[config.env]]
+WARP_KEY = ""
+
+
+[[config.mounts]]
+filePath = "/run/dbus/system_bus_socket"
+content = ""
\ No newline at end of file
diff --git a/meta.json b/meta.json
index 45649f3a8..1e785dd0d 100644
--- a/meta.json
+++ b/meta.json
@@ -6038,7 +6038,9 @@
"description": "Cloudflare WARP Connector (beta) is a software client that enables site-to-site, bidirectional, and mesh networking connectivity without requiring changes to underlying network routing infrastructure.",
"logo": "warp.svg",
"links": {
- "github": "https://github.com/seiry/docker-warp-proxy"
+ "github": "https://github.com/seiry/docker-warp-proxy",
+ "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/",
+ "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-connector/"
},
"tags": [
"proxy",
From d0aa961d68427ece0e84b2c6e333d768b0f1dc0f Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 13:30:35 -0500
Subject: [PATCH 06/17] maybe itll fix env?
---
blueprints/warp/docker-compose.yml | 5 +++++
blueprints/warp/template.toml | 9 +++++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
index 614254491..772a6cce7 100644
--- a/blueprints/warp/docker-compose.yml
+++ b/blueprints/warp/docker-compose.yml
@@ -10,3 +10,8 @@ services:
max-size: 1m
volumes:
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
+ security_opt:
+ - apparmor:unconfined
+ # If AppArmor unconfined is insufficient on some hosts, uncomment the next line
+ # to run the container in privileged mode (less secure):
+ # privileged: true
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
index 91ed41401..20fecb47d 100644
--- a/blueprints/warp/template.toml
+++ b/blueprints/warp/template.toml
@@ -1,10 +1,11 @@
-variables = {}
+[variables]
+warp_key = ""
[config]
+domains = []
-[[config.env]]
-WARP_KEY = ""
-
+[config.env]
+LICENSE = "${warp_key}"
[[config.mounts]]
filePath = "/run/dbus/system_bus_socket"
From db41f1dc84746d89f0eb2f7432856ef6c2a3175f Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 13:38:20 -0500
Subject: [PATCH 07/17] f
---
blueprints/warp/docker-compose.yml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/blueprints/warp/docker-compose.yml b/blueprints/warp/docker-compose.yml
index 772a6cce7..606e9c1cd 100644
--- a/blueprints/warp/docker-compose.yml
+++ b/blueprints/warp/docker-compose.yml
@@ -2,8 +2,7 @@ services:
cloudflare-warp-proxy:
image: ghcr.io/seiry/cloudflare-warp-proxy:latest
restart: unless-stopped
- environment:
- - LICENSE=${WARP_KEY}
+ # `LICENSE` is injected by the Dokploy template (`template.toml` [config.env]).
logging:
driver: json-file
options:
From a6d1b92ca5f8284e5a2dc391aca2a6592cb23fab Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 27 Dec 2025 14:24:07 -0500
Subject: [PATCH 08/17] thanks
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
blueprints/warp/template.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/blueprints/warp/template.toml b/blueprints/warp/template.toml
index 20fecb47d..eb483e912 100644
--- a/blueprints/warp/template.toml
+++ b/blueprints/warp/template.toml
@@ -1,11 +1,11 @@
[variables]
-warp_key = ""
+cloudflare_warp_token = ""
[config]
domains = []
[config.env]
-LICENSE = "${warp_key}"
+LICENSE = "${cloudflare_warp_token}"
[[config.mounts]]
filePath = "/run/dbus/system_bus_socket"
From 65853635ac87a9c00b0b546bd7612164474fe71b Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 19:02:32 -0500
Subject: [PATCH 09/17] add nodelink?
---
blueprints/nodelink/docker-compose.yml | 11 +
blueprints/nodelink/template.toml | 379 +++++++++++++++++++++++++
2 files changed, 390 insertions(+)
create mode 100644 blueprints/nodelink/docker-compose.yml
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..3bc5c5ac0
--- /dev/null
+++ b/blueprints/nodelink/docker-compose.yml
@@ -0,0 +1,11 @@
+services:
+ nodelink:
+ image: performanc/nodelink:latest
+ volumes:
+ - ../files/config.js:/app/config.js
+ ports:
+ - "3000:3000"
+ restart: unless-stopped
+ environment:
+ NODELINK_SERVER_PASSWORD: "${NODELINK_SERVER_PASSWORD:-youshallnotpass}"
+ NODELINK_SERVER_PORT: "${NODELINK_SERVER_PORT:-3000}"
diff --git a/blueprints/nodelink/template.toml b/blueprints/nodelink/template.toml
new file mode 100644
index 000000000..d2cf3d6e3
--- /dev/null
+++ b/blueprints/nodelink/template.toml
@@ -0,0 +1,379 @@
+[variables]
+main_domain = ${domain}
+server_port = "3000"
+nodelink_server_password = "${password}"
+
+[config]
+[[config.mounts]]
+filePath = "./config.js"
+content = """
+export default {
+ server: {
+ host: '0.0.0.0',
+ port: 3000,
+ password: 'youshallnotpass',
+ useBunServer: false // set to true to use Bun.serve websocket (experimental)
+ },
+ cluster: {
+ enabled: true, // active cluster (or use env CLUSTER_ENABLED)
+ workers: 0, // 0 => uses os.cpus().length, or specify a number (1 = 2 processes total: master + 1 worker)
+ minWorkers: 1, // Minimum workers to keep alive (improves availability during bursts)
+ specializedSourceWorker: {
+ enabled: true, // If true, source loading (search, lyrics, etc.) is delegated to dedicated workers to prevent voice worker lag
+ count: 1, // Number of separate process clusters for source operations
+ microWorkers: 2, // Number of worker threads per process cluster
+ tasksPerWorker: 32, // Number of parallel tasks each micro-worker can handle before queuing
+ silentLogs: true // If true, micro-workers will only log warnings and errors
+ },
+ commandTimeout: 6000, // Timeout for heavy operations like loadTracks (6s)
+ fastCommandTimeout: 4000, // Timeout for player commands like play/pause (4s)
+ maxRetries: 2, // Number of retry attempts on timeout or worker failure
+ hibernation: {
+ enabled: true,
+ timeoutMs: 1200000
+ },
+ scaling: {
+ //scaling configurations
+ maxPlayersPerWorker: 20, // Reference capacity for utilization calculation
+ targetUtilization: 0.7, // Target utilization for scaling up/down
+ scaleUpThreshold: 0.75, // Utilization threshold to scale up
+ scaleDownThreshold: 0.3, // Utilization threshold to scale down
+ checkIntervalMs: 5000, // Interval to check for scaling needs
+ idleWorkerTimeoutMs: 60000, // Time in ms an idle worker should wait before being removed
+ queueLengthScaleUpFactor: 5, // How many commands in queue per active worker trigger scale up
+ lagPenaltyLimit: 60, // Event loop lag threshold (ms) to penalize worker cost
+ cpuPenaltyLimit: 0.85 // CPU usage threshold (85% of a core) to force scale up
+ },
+ endpoint: {
+ patchEnabled: true,
+ allowExternalPatch: false,
+ code: 'CAPYBARA'
+ }
+ },
+ logging: {
+ level: 'debug',
+ file: {
+ enabled: false,
+ path: 'logs',
+ rotation: 'daily',
+ ttlDays: 7
+ },
+ debug: {
+ all: false,
+ request: true,
+ session: true,
+ player: true,
+ filters: true,
+ sources: true,
+ lyrics: true,
+ youtube: true,
+ 'youtube-cipher': true
+ }
+ },
+ connection: {
+ logAllChecks: false,
+ interval: 300000, // 5 minutes
+ timeout: 10000, // 10 seconds
+ thresholds: {
+ bad: 1, // Mbps
+ average: 5 // Mbps
+ }
+ },
+ maxSearchResults: 10,
+ maxAlbumPlaylistLength: 100,
+ playerUpdateInterval: 2000,
+ statsUpdateInterval: 30000,
+ trackStuckThresholdMs: 10000,
+ zombieThresholdMs: 60000,
+ enableHoloTracks: false,
+ enableTrackStreamEndpoint: false,
+ enableLoadStreamEndpoint: false,
+ resolveExternalLinks: false,
+ fetchChannelInfo: false,
+ filters: {
+ enabled: {
+ tremolo: true,
+ vibrato: true,
+ lowpass: true,
+ highpass: true,
+ rotation: true,
+ karaoke: true,
+ distortion: true,
+ channelMix: true,
+ equalizer: true,
+ chorus: true,
+ compressor: true,
+ echo: true,
+ phaser: true,
+ timescale: true
+ }
+ },
+ defaultSearchSource: ['youtube', 'soundcloud'],
+ unifiedSearchSources: ['youtube', 'soundcloud'],
+ sources: {
+ vkmusic: {
+ enabled: true,
+ userToken: '', // (optional) get from vk in browser devtools -> reqs POST /?act=web_token HTTP/2 - headers -> response -> access_token
+ userCookie: '' // (required without userToken) get from vk in browser devtools -> reqs POST /?act=web_token HTTP/2 - headers -> request -> cookie (copy full cookie header)
+ },
+ amazonmusic: {
+ enabled: true
+ },
+ mixcloud: {
+ enabled: true
+ },
+ audiomack: {
+ enabled: true
+ },
+ deezer: {
+ // arl: '',
+ // decryptionKey: '',
+ enabled: true
+ },
+ bandcamp: {
+ enabled: true
+ },
+ soundcloud: {
+ enabled: true,
+ // clientId: ""
+ },
+ local: {
+ enabled: true,
+ basePath: './local-music/'
+ },
+ http: {
+ enabled: true
+ },
+ vimeo: {
+ // Note: not 100% of the songs are currently working (but most should.), because i need to code a different extractor for every year (2010, 2011, etc. not all are done)
+ enabled: true,
+ },
+ telegram: {
+ enabled: true
+ },
+ shazam: {
+ enabled: true,
+ allowExplicit: true
+ },
+ bilibili: {
+ enabled: true,
+ sessdata: '' // Optional, improves access to some videos (premium and 4k+)
+ },
+ genius: {
+ enabled: true
+ },
+ pinterest: {
+ enabled: true
+ },
+ flowery: {
+ enabled: true,
+ voice: 'Salli',
+ translate: false,
+ silence: 0,
+ speed: 1.0,
+ enforceConfig: false
+ },
+ jiosaavn: {
+ enabled: true,
+ playlistLoadLimit: 50,
+ artistLoadLimit: 20
+ // "secretKey": "38346591" // Optional, defaults to standard key
+ },
+ gaana: {
+ enabled: true,
+ apiUrl: 'https://gaana.1lucas1apk.fun/api', // if you want to host your server https://github.com/notdeltaxd/Gaana-API
+ streamQuality: 'high',
+ playlistLoadLimit: 100,
+ albumLoadLimit: 100,
+ artistLoadLimit: 100
+ },
+ "google-tts": {
+ enabled: true,
+ language: 'en-US'
+ },
+ youtube: {
+ enabled: true,
+ allowItag: [], // additional itags for audio streams, e.g., [140, 141]
+ targetItag: null, // force a specific itag for audio streams, overriding the quality option
+ getOAuthToken: false,
+ hl: 'en',
+ gl: 'US',
+ clients: {
+ search: ['Android'], // Clients used for searching tracks
+ playback: ['AndroidVR', 'TV', 'TVEmbedded', 'IOS'], // Clients used for playback/streaming
+ resolve: ['AndroidVR', 'TV', 'TVEmbedded', 'IOS', 'Web'], // Clients used for resolving detailed track information (channel, external links, etc.)
+ settings: {
+ TV: {
+ refreshToken: [""] // You can use a string "token" or an array ["token1", "token2"] for rotation/fallback
+ }
+ }
+ },
+ cipher: {
+ url: 'https://cipher.kikkia.dev/api',
+ token: null
+ }
+ },
+ instagram: {
+ enabled: true
+ },
+ kwai: {
+ enabled: true
+ },
+ twitch: {
+ enabled: true
+ },
+ spotify: {
+ enabled: true,
+ clientId: '',
+ clientSecret: '',
+ externalAuthUrl: 'http://get.1lucas1apk.fun/spotify/gettoken', // URL to external token provider (e.g. http://localhost:8080/api/token - use https://github.com/topi314/spotify-tokener or https://github.com/1Lucas1apk/gettoken)
+ market: 'US',
+ playlistLoadLimit: 1, // 0 means no limit (loads all tracks), 1 = 100 tracks, 2 = 100 and so on!
+ playlistPageLoadConcurrency: 10, // How many pages to load simultaneously
+ albumLoadLimit: 1, // 0 means no limit (loads all tracks), 1 = 50 tracks, 2 = 100 tracks, etc.
+ albumPageLoadConcurrency: 5, // How many pages to load simultaneously
+ allowExplicit: true // If true plays the explicit version of the song, If false plays the Non-Explicit version of the song. Normal songs are not affected.
+ },
+ applemusic: {
+ enabled: true,
+ mediaApiToken: 'token_here', //manually | or "token_here" to get a token automatically
+ market: 'US',
+ playlistLoadLimit: 0,
+ albumLoadLimit: 0,
+ playlistPageLoadConcurrency: 5,
+ albumPageLoadConcurrency: 5,
+ allowExplicit: true
+ },
+ tidal: {
+ enabled: true,
+ token: 'token_here', //manually | or "token_here" to get a token automatically, get from tidal web player devtools; using login google account
+ countryCode: 'US',
+ playlistLoadLimit: 2, // 0 = no limit, 1 = 50 tracks, 2 = 100 tracks, etc.
+ playlistPageLoadConcurrency: 5 // How many pages to load simultaneously
+ },
+ pandora: {
+ enabled: true,
+ // Optional, setting this manually can help unblocking countries (since pandora is US only.). May need to be updated periodically.
+ // fetching manually: use a vpn connected to US, go on pandora.com, open devtools, Network tab, first request to appear and copy the 2nd csrfToken= value.
+ // csrfToken: '',
+ remoteTokenUrl: 'https://get.1lucas1apk.fun/pandora/gettoken' // URL to a remote provider that returns { success: true, authToken: "...", csrfToken: "...", expires_in_seconds: ... } //https://github.com/1Lucas1apk/gettoken
+ },
+ nicovideo: {
+ enabled: true
+ },
+ reddit: {
+ enabled: true
+ },
+ lastfm: {
+ enabled: true
+ }
+ },
+ lyrics: {
+ fallbackSource: 'genius',
+ youtube: {
+ enabled: true
+ },
+ genius: {
+ enabled: true
+ },
+ musixmatch: {
+ enabled: true
+ // signatureSecret: ''
+ },
+ lrclib: {
+ enabled: true
+ },
+ bilibili: {
+ enabled: true
+ },
+ applemusic: {
+ enabled: true,
+ advanceSearch: true // Uses YTMusic to fetch the correct title and artists instead of relying on messy YouTube video titles, improving lyrics accuracy
+ }
+ },
+ audio: {
+ quality: 'high', // high, medium, low, lowest
+ encryption: 'aead_aes256_gcm_rtpsize',
+ resamplingQuality: 'best' // best, medium, fastest, zero order holder, linear
+ },
+ voiceReceive: {
+ enabled: false,
+ format: 'opus' // pcm_s16le, opus
+ },
+ routePlanner: {
+ strategy: 'RotateOnBan', // RotateOnBan, RoundRobin, LoadBalance
+ bannedIpCooldown: 600000, // 10 minutes
+ ipBlocks: []
+ },
+ rateLimit: {
+ enabled: true,
+ global: {
+ maxRequests: 1000,
+ timeWindowMs: 60000 // 1 minute
+ },
+ perIp: {
+ maxRequests: 100,
+ timeWindowMs: 10000 // 10 seconds
+ },
+ perUserId: {
+ maxRequests: 50,
+ timeWindowMs: 5000 // 5 seconds
+ },
+ perGuildId: {
+ maxRequests: 20,
+ timeWindowMs: 5000 // 5 seconds
+ },
+ ignorePaths: [],
+ ignore: {
+ userIds: [],
+ guildIds: [],
+ ips: []
+ }
+ },
+ dosProtection: {
+ enabled: true,
+ thresholds: {
+ burstRequests: 50,
+ timeWindowMs: 10000 // 10 seconds
+ },
+ mitigation: {
+ delayMs: 500,
+ blockDurationMs: 300000 // 5 minutes
+ },
+ ignore: {
+ userIds: [],
+ guildIds: [],
+ ips: []
+ }
+ },
+ metrics: {
+ enabled: true,
+ authorization: {
+ type: 'Bearer', // Bearer or Basic.
+ password: '' // If empty, uses server.password
+ }
+ },
+ mix: {
+ enabled: true,
+ defaultVolume: 0.8,
+ maxLayersMix: 5,
+ autoCleanup: true
+ },
+ plugins: [
+ /* {
+ name: 'nodelink-sample-plugin',
+ source: 'local'
+ } */
+ ],
+ pluginConfig: {}
+}
+"""
+
+[[config.domains]]
+serviceName = "nodelink"
+port = 3_000
+domain = "${main_domain}"
+
+[config.env]
+NODELINK_SERVER_PASSWORD = "${nodelink_server_password}"
+NODELINK_SERVER_PORT = "${server_port}"
\ No newline at end of file
From e20ec44996426892eedac2582437489ccb699ccf Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 19:12:35 -0500
Subject: [PATCH 10/17] remove warp, add meta about nodelink
---
blueprints/nodelink/nodelink.png | Bin 0 -> 20224 bytes
blueprints/warp/docker-compose.yml | 16 -------------
blueprints/warp/template.toml | 12 ----------
blueprints/warp/warp.svg | 4 ----
meta.json | 35 +++++++++++++++--------------
5 files changed, 18 insertions(+), 49 deletions(-)
create mode 100644 blueprints/nodelink/nodelink.png
delete mode 100644 blueprints/warp/docker-compose.yml
delete mode 100644 blueprints/warp/template.toml
delete mode 100644 blueprints/warp/warp.svg
diff --git a/blueprints/nodelink/nodelink.png b/blueprints/nodelink/nodelink.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d3aea8a7d477a2741561d5cc58bf22d8e5459de
GIT binary patch
literal 20224
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"
-
-[config]
-domains = []
-
-[config.env]
-LICENSE = "${cloudflare_warp_token}"
-
-[[config.mounts]]
-filePath = "/run/dbus/system_bus_socket"
-content = ""
\ No newline at end of file
diff --git a/blueprints/warp/warp.svg b/blueprints/warp/warp.svg
deleted file mode 100644
index 126357740..000000000
--- a/blueprints/warp/warp.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/meta.json b/meta.json
index b1ebddba8..2aef95bfe 100644
--- a/meta.json
+++ b/meta.json
@@ -4306,6 +4306,24 @@
"nocode"
]
},
+ {
+ "id": "nodelink",
+ "name": "NodeLink",
+ "version": "latest",
+ "description": "NodeLink is a modern Lavalink alternative built entirely in Node.js.",
+ "links": {
+ "github": "https://github.com/PreformanC/NodeLink",
+ "website": "https://nodelink.js.org",
+ "docs": "https://nodelink.js.org/docs"
+ },
+ "logo": "nodelink.png",
+ "tags": [
+ "music",
+ "discord",
+ "audio"
+ ]
+
+ },
{
"id": "notifuse",
"name": "Notifuse",
@@ -6280,23 +6298,6 @@
"self-hosted"
]
},
- {
- "id": "warp",
- "name": "Cloudflare WARP",
- "version": "latest",
- "description": "Cloudflare WARP Connector (beta) is a software client that enables site-to-site, bidirectional, and mesh networking connectivity without requiring changes to underlying network routing infrastructure.",
- "logo": "warp.svg",
- "links": {
- "github": "https://github.com/seiry/docker-warp-proxy",
- "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/",
- "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-connector/"
- },
- "tags": [
- "proxy",
- "networking",
- "tunnel"
- ]
- },
{
"id": "web-check",
"name": "Web-Check",
From d2509b49f3368f895d0a4c7eec26868a2c0d7957 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 19:21:22 -0500
Subject: [PATCH 11/17] n
---
meta.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/meta.json b/meta.json
index 2aef95bfe..a527d7db1 100644
--- a/meta.json
+++ b/meta.json
@@ -4322,7 +4322,6 @@
"discord",
"audio"
]
-
},
{
"id": "notifuse",
From 4ec9f6cd02cbbe97659e06e2159f906a4f30cbd1 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 19:22:53 -0500
Subject: [PATCH 12/17] k
---
blueprints/nodelink/docker-compose.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml
index 3bc5c5ac0..89f03e60d 100644
--- a/blueprints/nodelink/docker-compose.yml
+++ b/blueprints/nodelink/docker-compose.yml
@@ -4,7 +4,7 @@ services:
volumes:
- ../files/config.js:/app/config.js
ports:
- - "3000:3000"
+ - "3000"
restart: unless-stopped
environment:
NODELINK_SERVER_PASSWORD: "${NODELINK_SERVER_PASSWORD:-youshallnotpass}"
From d01e112a5c81cfc4d207d306563166fc078592d4 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 19:24:41 -0500
Subject: [PATCH 13/17] f
---
blueprints/nodelink/template.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blueprints/nodelink/template.toml b/blueprints/nodelink/template.toml
index d2cf3d6e3..e8559d420 100644
--- a/blueprints/nodelink/template.toml
+++ b/blueprints/nodelink/template.toml
@@ -1,5 +1,5 @@
[variables]
-main_domain = ${domain}
+main_domain = "${domain}"
server_port = "3000"
nodelink_server_password = "${password}"
From 9ee4bcb324bbdbf4afb31ac7896d99f4b1486ca3 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 22:17:10 -0500
Subject: [PATCH 14/17] f
---
blueprints/nodelink/docker-compose.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml
index 89f03e60d..f4ec04a1d 100644
--- a/blueprints/nodelink/docker-compose.yml
+++ b/blueprints/nodelink/docker-compose.yml
@@ -3,7 +3,7 @@ services:
image: performanc/nodelink:latest
volumes:
- ../files/config.js:/app/config.js
- ports:
+ expose:
- "3000"
restart: unless-stopped
environment:
From 76cb83dac544719b75c669e4d2e1597c3e35aea2 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 22:31:33 -0500
Subject: [PATCH 15/17] y
---
blueprints/nodelink/docker-compose.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml
index f4ec04a1d..9c62a9397 100644
--- a/blueprints/nodelink/docker-compose.yml
+++ b/blueprints/nodelink/docker-compose.yml
@@ -9,3 +9,7 @@ services:
environment:
NODELINK_SERVER_PASSWORD: "${NODELINK_SERVER_PASSWORD:-youshallnotpass}"
NODELINK_SERVER_PORT: "${NODELINK_SERVER_PORT:-3000}"
+ healthcheck:
+ test: ["CMD", "curl", "--fail", "http://localhost:3000/version"]
+ interval: 5s
+ timeout: 10s
\ No newline at end of file
From 03a171cd62bbecdc63bfe9e077f49b54bc90cea7 Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 22:54:59 -0500
Subject: [PATCH 16/17] f
---
blueprints/nodelink/docker-compose.yml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml
index 9c62a9397..a920f7e33 100644
--- a/blueprints/nodelink/docker-compose.yml
+++ b/blueprints/nodelink/docker-compose.yml
@@ -10,6 +10,8 @@ services:
NODELINK_SERVER_PASSWORD: "${NODELINK_SERVER_PASSWORD:-youshallnotpass}"
NODELINK_SERVER_PORT: "${NODELINK_SERVER_PORT:-3000}"
healthcheck:
- test: ["CMD", "curl", "--fail", "http://localhost:3000/version"]
- interval: 5s
- timeout: 10s
\ No newline at end of file
+ test: ["CMD", "curl", "-f", "http://localhost:2333/version"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 40s
\ No newline at end of file
From 6ce2b5a88aaa4dae6f89fe670d69734694c9f3aa Mon Sep 17 00:00:00 2001
From: nxyy <175990828+nxyystore@users.noreply.github.com>
Date: Sat, 31 Jan 2026 23:45:05 -0500
Subject: [PATCH 17/17] test
---
blueprints/nodelink/docker-compose.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/blueprints/nodelink/docker-compose.yml b/blueprints/nodelink/docker-compose.yml
index a920f7e33..9961fd4d1 100644
--- a/blueprints/nodelink/docker-compose.yml
+++ b/blueprints/nodelink/docker-compose.yml
@@ -3,8 +3,8 @@ services:
image: performanc/nodelink:latest
volumes:
- ../files/config.js:/app/config.js
- expose:
- - "3000"
+ ports:
+ - "3000:3000"
restart: unless-stopped
environment:
NODELINK_SERVER_PASSWORD: "${NODELINK_SERVER_PASSWORD:-youshallnotpass}"