Sonobarr is a self-hosted music discovery app for people who run Lidarr (or plan to). It reads the artists already in your Lidarr library, asks Last.fm what sounds similar, and streams the candidates back as a grid of cards you can audition, read about and add to your library with one click. There is no separate catalogue to maintain: Lidarr stays the source of truth for what you own, and Sonobarr is the suggestion engine on top of it.
Under the hood it is a Flask + Socket.IO application with a Bootstrap web UI, backed by a SQLite database on a mounted volume and shipped as an official GHCR container image. Discovery runs in worker threads, so a batch keeps filling the grid while you scroll, and every connected browser sees the progress live. It also ships the things a shared instance needs: accounts with roles, an approval workflow for artist requests, single sign-on, per-user API keys and admin-only settings.
/api/docs/ on your instance) for wiring the discovery results into your own dashboards and scripts.Lidarr is good at managing a library and bad at telling you what to add next: its own suggestions come from MusicBrainz relations and rarely go anywhere surprising. Sonobarr closes that gap with Last.fm’s similarity graph, but it does it from your actual library rather than from a blank search box, so the suggestions arrive pre-filtered by your taste. The workflow is deliberately one-directional – Lidarr owns the library, Sonobarr owns the discovery – which means nothing has to be migrated and nothing gets out of sync. Unlike a plain recommendation script it is a multi-user web app: add your household or a small group of friends, give them their own logins, and let them queue requests that you approve.
Docker Engine 24 or newer with the Compose plugin, an API key from Last.fm and an API key from an existing Lidarr instance. Create a directory owned by the UID/GID the container will run as (default 1000:1000, configurable with PUID/PGID), download the sample docker-compose.yml and .env, then fill in at least secret_key, lidarr_address, lidarr_api_key, last_fm_api_key and last_fm_api_secret. Run docker compose up -d and browse to port 5000 of the host; the container starts as root to fix permissions and then drops to the configured user, and migrations run automatically on start. Configuration can be completed in the settings UI instead of the environment file, and a YouTube API key is optional but enables the preview modal. Behind a reverse proxy it is better to join Sonobarr to the proxy’s external network than to publish the port directly. Everything persistent lives in the mounted config/ volume, so an update is a docker compose pull followed by up -d.
Related: Lidarr is the music manager Sonobarr reads from and writes to, Prowlarr handles indexer management for the same stack, and Navidrome covers playback of the library once it is built.