Libreseerr is a book request management application for Readarr, Readarr forks like Bookshelf, and LazyLibrarian. It provides a simple web interface for users to search for books and request ebook or audiobook downloads similar to how Seerr works for movies and TV shows with Sonarr/Radarr, but for books with Readarr, Readarr forks, or LazyLibrarian.
- Search for books by title, author, or ISBN
- Request ebooks or audiobooks from separate Readarr, Bookshelf, or LazyLibrarian instances
- Track download progress with real-time status updates
- View quality profiles and root folders from your configured server
- Manage and remove requests from a dedicated requests page
- User authentication with session management
- Admin-only user management (create, edit, delete users)
-
Confirmed compatible with faustvii/readarr
-
Confirmed compatible with penndydreadful/bookshelf
-
Confirmed compatible with LazyLibrarian
docker run -d \
--name libreseerr \
-p 5000:5000 \
-v libreseerr-data:/app/data \
--restart unless-stopped \
ghcr.io/zamnzim/libreseerr:latestservices:
libreseerr:
image: ghcr.io/zamnzim/libreseerr:latest
ports:
- "5000:5000"
volumes:
- libreseerr-data:/app/data
restart: unless-stopped
volumes:
libreseerr-data:Start the stack with:
docker compose up -dThe application will be available at http://<your-host>:5000.
Libreseerr is available as a TrueNAS SCALE app from this repository.
- In the TrueNAS web UI, go to Apps > Settings > Add Catalog.
- Enter the repository URL:
https://github.com/zamnzim/Libreseerr - Set the Preferred Train to
stable. - Navigate to Available Applications, find Libreseerr, and click Install.
- Configure the app through the UI:
- Libreseerr Configuration — image settings, secret key, and timezone
- Storage — choose
ixVolume(managed) orhostPath(custom directory) for persistent data - Networking — set the web port (default 50000)
- Click Install and wait for the app to deploy.
The app will be accessible at http://<your-truenas-ip>:50000.
Note: TrueNAS does not auto-pull new latest images and users need to update manually via Apps > Update.
On first launch, a default admin account is created with the following credentials:
| Username | Password |
|---|---|
admin |
admin |
Change the default password immediately from the Users page after logging in.
Log in with these credentials to access the web UI. The Settings page (admin only) lets you configure your server instances:
- Ebook Server - URL and API key for your Readarr, Bookshelf, or LazyLibrarian instance serving ebooks
- Audiobook Server - URL and API key for your Readarr, Bookshelf, or LazyLibrarian instance serving audiobooks
Select the Server Software dropdown to choose between Readarr, Bookshelf, or LazyLibrarian for each server type.
Click Test Connection to verify each server is reachable, then Save.
- Log in with your admin credentials (default:
admin/admin). - Go to the Discover page and search for a book by title, author, or ISBN.
- Click a book card to open the download dialog.
- Select ebook or audiobook, choose a quality profile and root folder, then click Download.
- Switch to the Requests page to monitor progress.
- Click Refresh Status to poll your server for the latest download status.
Status indicators on the Requests page:
| Status | Meaning |
|---|---|
| Processing | Book has been sent to the server but is not yet in the download queue |
| Downloading | Book is actively downloading (progress bar shown) |
| Completed | Download finished and file is available in the server |
| Error | Download failed (error message shown) |
On first launch, a default admin account is created:
- Username:
admin - Password:
admin
Change the default password immediately after your first login.
Admins can manage users from the Users page:
- Add User - Create new accounts with a username, password, and role (
adminoruser) - Edit User - Update a user's password or role
- Delete User - Remove a user account (you cannot delete your own account)
Non-admin users can search for books and make requests but do not have access to the Settings or Users pages.
LDAP Users are also supported via Users > Advanced.
OIDC (OpenID Connect) sign-in is also supported via Users > Advanced. When enabled, the login page shows a "Sign in with [provider]" button alongside the username/password form. Configure with your IdP's issuer URL, client ID, and client secret. Optional toggles:
- Auto-create users on first login: provision new users on successful OIDC sign-in (off by default)
- Auto-redirect to OIDC on login page: skip the username/password form and go straight to the IdP. If your IdP later becomes unreachable, append
?bypass=1to the login URL (/login?bypass=1) to surface the local form again without editing config on disk.
The redirect URI to register at your IdP is https://<your-libreseerr-host>/api/auth/oidc/callback.
| Variable | Description | Default |
|---|---|---|
PYTHONUNBUFFERED |
Ensures Python logs appear immediately in container output | 1 |
SECRET_KEY |
Flask session secret key. Set this to a stable value in production | Auto-generated on first run |
All application configuration (server URLs, API keys, and server software type) is managed through the web UI and stored in /app/data/config.json.
Application data is stored in /app/data/ and includes:
config.json- Server configuration (Readarr, Bookshelf, or LazyLibrarian)requests.json- Request historyusers.json- User accounts (passwords are hashed)secret_key- Auto-generated session signing key (only created ifSECRET_KEYis not set via environment)
Mount a volume at /app/data to persist this data across container restarts.
- Python 3.12+
- Flask, Requests, Gunicorn (see
requirements.txt)
pip install -r requirements.txt
python app.pyThe development server starts on http://0.0.0.0:5000 with debug mode enabled.
See LICENSE for details.




