
Listenarr
Automated audiobook and eBook collection management
Overview
Listenarr is an audiobook and eBook downloader in the *arr style — think Sonarr or Radarr, but for books. It monitors your favorite authors and titles, enriches metadata from Audible, Amazon, and OpenLibrary (covers, narrators, series data — all built in, no separate indexer app needed), and hands grabs to the download clients you already run: qBittorrent, Transmission, SABnzbd, or NZBGet.
Listenarr is a community project — it is not part of the official Servarr suite. Upstream currently publishes canary pre-release builds only; no stable release exists yet. It works well and is moving fast, but expect the occasional rough edge and visible change between updates.
QuickBox Pro installs Listenarr per user as a self-contained build: the release ships everything in a single package, so there is no host runtime to install or maintain. The application code lives under /opt/username/Listenarr/, all of your data lives in one state tree under /home/username/.config/Listenarr/, and a per-user systemd service serves the UI at https://your-server/username/listenarr/ through the nginx reverse proxy — bound to localhost only, with nginx as the sole public entry point.
Key features
Audiobook & eBook Automation
Monitor authors and titles and grab new releases automatically in the familiar *arr workflow
Built-In Rich Metadata
Covers, narrators, and series data from Audible, Amazon, and OpenLibrary — no external indexer manager required
Download Client Integration
Hands grabs to qBittorrent, Transmission, SABnzbd, or NZBGet — your existing clients do the downloading
Quality & Format Profiles
Control preferred audiobook and eBook formats per title
Self-Contained Runtime
Ships as a single-file build with everything bundled — no host runtime to install, patch, or version-manage
Live UI Updates
Download progress, logs, and settings stream into the web UI in real time over WebSockets
Zero-Maintenance Storage
Library, settings, and API key live in a single SQLite database that migrates itself automatically on every update
Per-User Service
Isolated systemd unit listenarr@username with an auto-allocated port and loopback-only binding behind nginx
When to use it
Good fit
- You want hands-off audiobook and eBook automation — monitor authors, grab new releases, sort and rename
- You want audiobook-first metadata: narrators, series, and covers sourced from Audible
- You already run qBittorrent, Transmission, SABnzbd, or NZBGet and want them put to work for books
- You are looking for a successor to Readarr now that upstream has retired it
What you get
- Install via
qb install listenarr -u username— a fast binary install with no host runtime - Served at
https://your-server/username/listenarr/with WebSocket-powered live updates - Single per-user systemd service
listenarr@usernamewith auto-start on boot - If you need a settled, long-stable tool today, look at LazyLibrarian instead — Listenarr is young and pre-release
Installation
Install from the QuickBox CLI
qb install listenarr -u usernameThe install downloads the newest upstream release, extracts it into the per-user install tree, patches the bundled web client for your personal URL path, and starts the service. There is no compile step and no runtime provisioning — installs complete in well under a minute on a typical connection.
Listenarr’s upstream has not cut a stable release yet; every build it publishes is a canary pre-release. A default install prefers the stable channel, finds no stable release, and automatically falls forward to the newest canary build with a notice. Passing —beta selects the canary channel explicitly. The channel you installed with is recorded, and once upstream publishes its first stable release, installs made without —beta pick it up automatically on their next qb update.
CLI commands
Install flags
Install from the Dashboard
You can also install Listenarr from the QuickBox Pro dashboard. The dashboard installs for the currently signed-in user — there is no user picker on the install dialog. To install for a different user, use the CLI with an explicit -u <other_user>.
To install from the dashboard:
- Open App Dashboard → Package Management (
/dashboard?mode=packages) - Find Listenarr under the Media Management category
- Submit — a live install log streams in the response modal
The dashboard runs the same install pipeline as the CLI.
The upstream default port is 4545, but QuickBox assigns each user their own free port at install time and binds it to 127.0.0.1 only — nginx is the sole public entry point. The assigned port is recorded in the QuickBox database and shown on the Listenarr row in the dashboard’s App Dashboard. You never need to touch it.
Access and authentication
URL
Listenarr is published under the per-user subpath of your QuickBox server:
https://your-server/username/listenarr/The bundled web client is patched for this exact path at install time, so the subpath is served natively — including the WebSocket connections that power live download progress and log streaming. You can also click Open on the Listenarr row in the dashboard’s App Dashboard to launch the UI directly.
Enable authentication first
Out of the box, Listenarr does not ask for a login — its built-in authentication is off by default, and QuickBox does not place a password gate in front of it. Until you enable authentication, anyone who can reach your server’s URL can open your Listenarr UI and its API. Make enabling Listenarr’s built-in authentication your first step after install.
To lock your instance down:
- Open
https://your-server/username/listenarr/ - Go to Listenarr’s Settings and enable authentication
- Set a username and a strong password, then save — the UI switches to a login page from that point on
QuickBox does not generate, write, or store any Listenarr credentials — there is no default password, no credentials file, and nothing to reveal in the dashboard. The account exists only after you create it inside the app.
API key
Listenarr auto-generates its API key on first start and stores it in its own database. View it inside the app’s Settings when a download client, script, or companion tool asks for it. There is no API key file on disk, and the dashboard does not display it.
Configuration and files
Listenarr keeps the application install and your data in two separate trees. Everything that matters to you — the database, settings, and logs — lives under /home/username/.config/Listenarr/. The install tree under /opt/username/Listenarr/ carries zero state and is fully replaced on every update.
Nearly all of Listenarr’s settings live in its SQLite database and are managed through the web UI — appsettings.json exists, but you will rarely need to touch it. The listen port and the state-tree location are managed by QuickBox through the systemd unit and kept in sync with nginx and the QuickBox database automatically.
Service management
Listenarr runs as a single per-user systemd unit:
# Check status
sudo systemctl status listenarr@username
# Restart / stop / start
sudo systemctl restart listenarr@username
sudo systemctl stop listenarr@username
sudo systemctl start listenarr@username
# Follow the service log
sudo journalctl -u listenarr@username -fThe service starts automatically at boot. Listenarr’s database migrates itself during startup after an update — no manual migration step is ever needed; the web UI simply answers once the migration completes (typically a few seconds). The systemd journal carries the full service output and is the first place to look; Listenarr also writes date-rolled log files under /home/username/.config/Listenarr/config/logs/.
Common tasks
Enable authentication
Do this first — see Enable authentication first above. Open the app, go to Settings, enable authentication, and set a username and strong password.
Add a download client
- In the Listenarr UI, open the download client settings
- Add your client — qBittorrent, Transmission, SABnzbd, or NZBGet — with its host, port, and credentials
- On a QuickBox server your clients run on the same machine, so
localhostplus the client’s assigned port is the usual shape - Test the connection and save — Listenarr hands every grab to the client from then on
Update Listenarr
qb update listenarr -u usernameThe update stops the service, replaces the install tree with the newest release on your recorded channel, re-patches the fresh web client for your URL path, and starts the service again. Your database, settings, and logs are untouched — all state lives outside the install tree. Add --beta to pull the newest canary build for that update run.
Check the logs
# Service output (the canonical log stream)
sudo journalctl -u listenarr@username -f
# In-app date-rolled log files
ls /home/username/.config/Listenarr/config/logs/Back up your data
Everything worth keeping lives in one tree. Back it up while the service is stopped for a clean snapshot:
sudo systemctl stop listenarr@username
tar -czf ~/listenarr-backup.tar.gz -C /home/username/.config Listenarr
sudo systemctl start listenarr@usernameQuickBox also snapshots listenarr.db into /home/username/.QuickBox/software/listenarr/ during installs.
Remove Listenarr
qb remove listenarr -u usernameBoth qb remove listenarr and qb reinstall listenarr delete the full per-user state tree at /home/username/.config/Listenarr/ — the database, your library records, settings, API key, and logs — along with the install tree, the systemd unit, and the nginx config. Back up the state tree first if there is any chance you will want your library back. Your actual audiobook and eBook files in your media folders are NOT touched.
Troubleshooting
Check the journal first: sudo journalctl -u listenarr@username -n 100. The most common causes are filesystem permission drift under the state tree (files under /home/username/.config/Listenarr/ must be owned by your user) and an interrupted update (rerun qb update listenarr -u username to redeploy a clean install tree).
At install and update time, QuickBox patches the bundled web client so it serves correctly from your per-user URL path — and it verifies every patch location before rewriting anything. If upstream changes its frontend layout, the install fails loudly with a patch error instead of leaving you with a broken white-screen UI. If you hit this, an upstream build changed shape before QuickBox caught up: report it on the QuickBox Discord and retry after the next QuickBox update.
The install waits for Listenarr to actually answer HTTP before reporting success — the first start runs the database setup, which takes a few seconds. The wait is bounded at two minutes; if the service never answers, the install fails with a service error and the journal (sudo journalctl -u listenarr@username) tells you why.
The web client is patched for exactly one URL path. If an update was interrupted partway, the client and the URL can disagree — run qb update listenarr -u username to redeploy and re-patch a clean copy.
Best practices
Do
- Enable Listenarr's built-in authentication immediately after install — the UI and API ship unprotected by default
- Back up
/home/username/.config/Listenarr/regularly — the database, settings, and API key all live there - Use
qb update listenarr -u usernamefor updates — it replaces the install tree and re-patches the web client while leaving your data untouched - Expect change between updates — Listenarr is a young community project shipping pre-release builds, and the UI evolves quickly
Don't
- Don't run
qb removeorqb reinstallwithout a backup — both permanently wipe your database and settings - Don't edit the port in the systemd unit by hand — nginx and the QuickBox database must agree with it, and QuickBox manages all three together
- Don't delete the
.channelmarker in the state tree —qb updateuses it to keep you on the channel you installed with - Don't install Listenarr from Docker or upstream packages alongside the QuickBox package — they will fight over ports and data paths
FAQ
Resources
Join the Community
Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.