Self-Hosting
Vinto
The code is on GitHub and the project is built to be self-hosted. Docker Compose brings up the bot, MongoDB and NodeLink together.
What You Need
Node.js 24 Or Newer
Older versions will not start. Corepack ships with it, which is how pnpm gets enabled.
MongoDB
Local or managed. Playlists, favorites, history, queue templates and guild settings live here.
NodeLink
The audio backend. Compose runs performanc/nodelink as a sidecar, so you do not have to set it up separately.
A Fluxer Bot Token
The API and gateway defaults already point at Fluxer, so BOT_TOKEN and MONGODB_URI are the only values you must fill in.
Getting It Running
Enable pnpm through Corepack, install the dependencies and copy the example environment file:
corepack enable
pnpm install --frozen-lockfile
cp .env.example .env
Fill in BOT_TOKEN and MONGODB_URI, then start it with pnpm start. With Docker Compose the NodeLink sidecar comes up alongside it and the integration is already switched on.
How NodeLink Fits In
NODELINK_ENABLED=1 moves source resolution and playback to NodeLink. The voice connection stays with the bot, so Fluxer voice keeps working: Vinto asks NodeLink for the track, pulls raw audio from its stream endpoint, and sends that into the Fluxer channel itself.
Two things matter when you run NodeLink yourself. It has to start with NODELINK_ENABLELOADSTREAMENDPOINT=true, otherwise tracks resolve but nothing plays. And NODELINK_ROUTING_MODE decides how much goes through it: all tries NodeLink first for everything, smart limits it to text search and YouTube links, youtube-only to YouTube links.
Which services you can stream directly is decided in NodeLink's own config, not in the bot. Deezer, Pandora and plain HTTP streams are off by default there and worth turning on.
Optional Pieces
Deezer
A DEEZER_ARL cookie enables Deezer-first text search and direct Deezer streaming, which also improves how pasted Spotify and Tidal links get matched.
Spotify, Tidal, Apple Music
Credentials are optional. Tidal and Apple Music bootstrap a public token by themselves, Spotify albums and playlists need a client id and secret.
ffmpeg And yt-dlp
Still used, but no longer the main path. ffmpeg handles the timescale filters and seeking, yt-dlp resolves YouTube playlists and covers playback when NodeLink is off.
Monitoring
The bot serves /healthz, /readyz and Prometheus metrics on /metrics. With NodeLink enabled, the health output includes its reachability and version.
Licence And Responsibility
The code is on GitHub and it is MIT licensed, so private and commercial use are both fine as long as the license and the copyright notice stay with it.
If you run a public instance, platform rules, provider terms and copyright in your country are your responsibility, not ours.