All apps · 0 apps
nexbeat
Docker app from DerKezorm's Repository
Overview
Readme
View on GitHubnexbeat
Find music and request it from Lidarr with one click.

nexbeat is a small, self-hosted companion to Lidarr, built in the spirit of Nexview: accounts with invitations, per-user quotas counted by request, optional approval, and a discovery page that recommends artists based on what the library and each user already have.
Status: early. It runs against a real Lidarr, but it is a small side project: expect rough edges.
The screenshots show a throwaway instance with a few well-known artists as its library.
What it does
- Discover: "for you" and "because you listen to" rows from ListenBrainz similar-artist data, plus weekly trends. Artists already in Lidarr are left out.
- Genres: browse twenty main genres. A genre page shows the most played artists and albums of that genre and related genres to follow. Artists in Lidarr stay in the list, marked as in the library.
- Search artists and releases in MusicBrainz, browse discographies and similar artists, listen to 30 second previews.
- Request a single album, EP or single. Unknown artists are added to Lidarr with only the requested album monitored.
- Whole artists: one request for every studio album and future ones. Only offered when the metadata profile keeps Lidarr to official studio albums.
- Quotas count requests per day, week or month. Rejected and failed requests do not count.
- Accounts: invitations and password reset by email, or as a link to pass on when no mail server is set up.
nexbeat never changes Lidarr settings. It adds and monitors artists and albums and starts searches, nothing else.

Running with Docker
mkdir nexbeat && cd nexbeat
curl -O https://raw.githubusercontent.com/DerKezorm/nexbeat/main/docker-compose.yml
docker compose up -d
Open http://<your-host>:8030 and create the first account. It becomes the
administrator. Then, under Settings:
- Lidarr: address, API key, root folder, quality and metadata profile. If users should be able to request whole artists, pick a metadata profile that allows official studio albums only. nexbeat checks this and says why when it does not fit.
- Mail (optional): for invitations and password resets. Without a mail server, nexbeat hands out the links for you to pass on.
- Users: invite people, set their quota and whether their requests need approval.
The Lidarr tab also shows a webhook address. Entered in Lidarr, it lets nexbeat notice finished downloads right away; without it, nexbeat checks every two minutes.
- Updating:
docker compose pull && docker compose up -d - Backing up: the whole data directory, the database and
secret.keytogether. Without the key, the stored credentials cannot be read. - Images are built for amd64 and arm64.
latestfollows releases,mainthe current development state.

Run from source
cd backend
python -m venv .venv
.venv/Scripts/python.exe -m pip install -r requirements-dev.txt
.venv/Scripts/python.exe -m uvicorn app.main:app --port 8030
cd frontend
npm install
npm run dev
Open http://localhost:5182 and create the first account.
Data sources
MusicBrainz, Cover Art Archive and ListenBrainz (open data). Artist images and previews come from the public Deezer API and can be switched off.
Licence
Install Nexbeat on Unraid in a few clicks.
Find Nexbeat 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.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/derkezorm/nexbeatRuntime arguments
- Web UI
http://[IP]:[PORT:8000]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Port you reach nexbeat at. Container port: 8000
- Target
- 8000
- Default
- 8030
- Value
- 8030
Holds the SQLite database with accounts, requests and settings, and the key that signs sessions. Keep it on a local disk, not on a network share.
- Target
- /data
- Default
- /mnt/user/appdata/nexbeat
- Value
- /mnt/user/appdata/nexbeat
User id that should own the files in /data. 99 is the Unraid default.
- Default
- 99
- Value
- 99
Group id that should own the files in /data. 100 is the Unraid default.
- Default
- 100
- Value
- 100
The zone the container runs in, for example Europe/Berlin. Quotas count in calendar days, weeks and months of this zone. Leave blank to use UTC.
- Target
- TZ
Leave this empty unless you switched Network Type to Host. In bridge mode the WebUI Port above already does the job and setting this will break it, because the mapping still points at 8000. On host networking the port inside the container is the port on your server, so use this to move nexbeat off 8000 if something else is already there.
- Target
- NEXBEAT_PORT
Signs sessions and encrypts the stored credentials, such as the Lidarr API key and the password of the mail server. Leave blank: nexbeat creates one on first start and keeps it in /data/secret.key. Back it up together with the data directory.
- Target
- NEXBEAT_SECRET_KEY
auto marks the session cookie Secure when the request arrived over https. Use on only if a proxy terminates TLS and forwards plain http, and never if nexbeat should also be reachable over http, or nobody stays signed in. off never marks it.
- Target
- NEXBEAT_COOKIE_SECURE
- Default
- auto
- Value
- auto