Beltr-Intel

Beltr-Intel

Docker app from Beltr's Repository

Overview

Beltr turns any song in your music library into a karaoke track. It separates the vocals out with a local AI model, finds or transcribes synced lyrics, and displays them on a TV while everyone's phone acts as a remote — scan the QR code on screen, no app to install. Everything runs on your server. Nothing about your library is uploaded. THIS IS THE INTEL GPU BUILD. It runs the vocal separation on an Intel integrated GPU (the one inside most Intel desktop and NAS processors from 6th gen Core onward, including the N100 family) or an Intel Arc A-series card. It needs the Unraid "Intel GPU TOP" plugin installed, which loads the graphics driver, and the GPU passed through: "Extra Parameters" must contain --device=/dev/dri, which this template already sets. Nothing else to install — the Intel compute runtime ships inside the image. If you have an NVIDIA card, install "Beltr-NVIDIA" instead; with no GPU at all, plain "Beltr". This image will still run without a usable GPU — it falls back to the CPU — so a broken passthrough shows up as "slow", not "broken". Check the GPU panel in Settings after install to confirm the GPU was actually found. Intel Arc B-series and Panther Lake are newer than the driver this image carries and are not supported yet. FIRST RUN: Beltr downloads about 2 GB of model weights into /cache the first time it needs them. That happens once and survives container updates as long as /cache stays mapped. Watch the container log if a first song seems to sit still — the download is what it's doing. SPEED: depends heavily on the GPU. An Iris Xe or Arc-class GPU separates a 3-4 minute song in about a minute; an older UHD 630-class iGPU is not much faster than a modern CPU. Most songs then get their lyrics instantly from an online lyrics database; the ones no provider knows fall back to local transcription, which runs on the CPU. LICENSE: Beltr is a one-time purchase (no subscription). Run it free for five songs, then enter your key from beltr.app in the License key field below — or drop it in a file at /config/license.key. It activates once and then works offline. Container updates and restarts do not re-activate, as long as you keep the Config path mapped; a key covers two installs. AFTER INSTALL: open the WebUI, go to Settings, and add /media as a music folder. Then open http://your-server:8477/tv on whatever screen you're singing at, and scan the QR with a phone. MICROPHONES NEED HTTPS: browsers only allow microphone access on a secure page, so singing scores and the phone-as-mic feature need Beltr behind a reverse proxy with a certificate. Everything else — queueing, playback, lyrics, stem mixing — works normally over plain http. NOTE: Beltr assumes everyone who can reach it is trusted. Set AUTH_PASSWORD to put a password on the TV and dashboard screens, but do not expose this container to the internet without a reverse proxy doing real authentication in front of it.
Beltr

Beltr for Unraid

Unraid Community Applications templates for Beltr, a self-hosted karaoke server. It takes a song from your own music library, separates the vocals out with a local AI model, finds or transcribes synced lyrics, and puts the words on a TV while everyone's phone acts as a remote. Guests scan the QR code on screen; there is no app for them to install.

Everything runs on your server. Nothing about your library is uploaded.

beltr.app · Full Unraid guide · Support

Lyrics on the TV screen

Which template

Install one of the three. They share the same default paths.

Template Image Use it when
Beltr ghcr.io/casavargas/beltr:latest Any server. Separating a song takes a few minutes on a modern multi-core CPU.
Beltr-NVIDIA ghcr.io/casavargas/beltr:latest-cuda You have an NVIDIA GPU and the Unraid Nvidia-Driver plugin. Separation drops to well under a minute.
Beltr-Intel ghcr.io/casavargas/beltr:latest-openvino Your server has an Intel processor with integrated graphics (6th gen Core onward, N100 included) or an Arc A-series card, and the Unraid Intel GPU TOP plugin. An Iris Xe or Arc-class GPU separates a song in about a minute; older UHD-class iGPUs gain less.

Both GPU images fall back to the CPU if passthrough is misconfigured, so a broken setup looks slow rather than broken. Confirm the GPU was found in Settings after install.

Install

Community Applications: Apps, search Beltr, pick one of the three, set the four paths, Apply. Then open the WebUI, go to Settings, and add /media as a music folder. Beltr never scans your library until you point it at one.

Plain Docker:

docker run -d --name beltr \
  -p 8477:8477 \
  -e PUID=99 -e PGID=100 -e TZ=America/New_York \
  -v /mnt/user/appdata/beltr:/config \
  -v /mnt/user/beltr:/library \
  -v /mnt/user/appdata/beltr-cache:/cache \
  -v /mnt/user/Music:/media:ro \
  --restart unless-stopped \
  ghcr.io/casavargas/beltr:latest

Compose: docker-compose.yml with .env.example as a starting point. Pick one profile:

cp .env.example .env        # edit PUID/PGID and the paths
docker compose --profile cpu up -d      # or --profile gpu (NVIDIA), --profile openvino (Intel)

The four paths

Mount Holds Size Put it on
/config Database, settings, logs, lyrics under 500 MB Cache pool / SSD (appdata)
/library Separated stems and imported audio 60-120 MB per song The array
/cache AI model weights ~2 GB, once Cache pool / SSD
/media Your music, read-only n/a Wherever it already is

Two of these matter more than they look. /library must not live in appdata, because every processed song leaves a pair of lossless stems behind and a few hundred songs will fill a cache pool sized for config files. And /cache must stay mapped, or the ~2 GB of model weights are re-downloaded every time you update the image.

Worth knowing before you install

  • First run downloads about 2 GB of model weights into /cache. Once. If a first song seems to sit still, that is what it is doing: docker logs -f beltr.
  • Microphones need HTTPS. Browsers only expose the microphone on a secure page, so scoring and phone-as-mic need Beltr behind a reverse proxy with a certificate. Queueing, playback, lyrics and stem mixing all work fine over plain http. Details.
  • Beltr assumes everyone who can reach it is trusted. Room joins are open by design so a guest can scan a QR code and sing. AUTH_PASSWORD puts a password on the TV and dashboard screens, but do not port-forward this container.
  • AMD and Intel GPUs are not supported. Not an oversight; the separation model's complex-valued STFT is not reliable on those paths.

Licensing

Beltr is a one-time purchase, not a subscription. The container runs free for five songs so you can try it against your own music, then asks for a key from beltr.app. Activation happens once and then works offline; updating or recreating the container does not re-activate, as long as you keep /config. A key covers two installs.

The MIT license in this repository covers these templates and docs only. Beltr itself is proprietary software distributed under its own EULA.

Keeping up

Templates here are copied from the Beltr application repository, which is where they are edited. File issues and support requests at CasaVargas/beltr-releases.

Media gallery

1 / 3

Install Beltr-Intel on Unraid in a few clicks.

Find Beltr-Intel in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Beltr-Intel Review the template variables and paths Click Install

Requirements

Unraid Intel GPU TOP plugin, and an Intel GPU from 6th gen Core (Skylake) through Arrow Lake / Lunar Lake, or an Arc A-series card. Internet access on first start to activate a license key, or to begin the five-song trial.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/casavargas/beltr:latest-openvino
Last Updated2026-08-23
First Seen2026-08-15

Runtime arguments

Web UI
http://[IP]:[PORT:8477]/dashboard
Network
bridge
Shell
bash
Privileged
false
Extra Params
--device=/dev/dri

Template configuration

WebUI PortPorttcp

Port for the web interface, the TV screen and the phone remotes. Change the host side only if 8477 is already taken.

Target
8477
Default
8477
Value
8477
ConfigPathrw

App state: database, settings, logs, lyrics. Small and written often — keep it on appdata (SSD/cache pool).

Target
/config
Default
/mnt/user/appdata/beltr
Value
/mnt/user/appdata/beltr
LibraryPathrw

Processed karaoke library: separated stems and imported audio. Roughly 60-120 MB per song, so point this at the array, NOT at appdata.

Target
/library
Default
/mnt/user/beltr
Value
/mnt/user/beltr
Music (read-only)Pathro

Your existing music. Mounted read-only — Beltr copies what it imports and never writes here. Add it as a music folder in Settings after the first start.

Target
/media
Default
/mnt/user/Music
Value
/mnt/user/Music
Model cachePathrw

Downloaded AI model weights, about 2 GB. Keep this mapped or every container update re-downloads them. Faster storage makes model loading quicker.

Target
/cache
Default
/mnt/user/appdata/beltr-cache
Value
/mnt/user/appdata/beltr-cache
GPU deviceVariable

Which OpenVINO device runs the separation. GPU is the first Intel GPU found and is right for nearly everyone. GPU.1 picks a second Intel GPU (say, an Arc card in a box that also has an iGPU). Getting this wrong is not an error — Beltr just quietly runs on the CPU.

Target
BELTR_MDX_OPENVINO_DEVICE
Default
GPU
Value
GPU
GPU precisionVariable

FP32 is the default and matches the CPU output. FP16 is usually faster on Intel GPUs but its separation quality has not been measured here; try it if separation feels slow and listen to the result.

Target
BELTR_MDX_OPENVINO_PRECISION
Default
FP32
Value
FP32
PUIDVariable

User ID that owns the files Beltr writes. 99 (nobody) is the Unraid default.

Default
99
Value
99
PGIDVariable

Group ID that owns the files Beltr writes. 100 (users) is the Unraid default.

Default
100
Value
100
TZVariable

Timezone, e.g. America/New_York. Affects log timestamps.

Default
Etc/UTC
Value
Etc/UTC
License keyVariable

Your key from beltr.app. Activates once against this install and then works offline — updating or recreating the container does not re-activate, as long as you keep the Config path. Leave blank to try Beltr free: five songs, then it asks you to buy. You can also put the key in a file at /config/license.key instead.

Target
BELTR_LICENSE_KEY
Host PINVariable

Six digits that unlock host controls on a phone (skip, reorder, delete). Leave blank and Beltr picks a random one on every start, which changes if the container restarts mid-party.

Target
KARAOKE_HOST_PIN
Host passwordVariable

Optional password on the TV and dashboard screens and the settings endpoints. Phones joining a room are NOT affected. This keeps the household out of your settings; it is not internet-grade authentication.

Target
AUTH_PASSWORD
Fix permissionsVariable

first-run: fix ownership once, then only the top-level folders. always: fix everything on every start (slow on a big library). never: leave ownership alone.

Target
BELTR_FIX_PERMS
Default
first-run
Value
first-run