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.