Skip to content

Garrett3Nelson/Libreseerr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

183 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Libreseerr

Libreseerr

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.

Libreseerr Discover Page

Features

  • Search for books by title, author, or ISBN
  • Request ebooks, audiobooks, or both at once from separate Readarr, Bookshelf, or LazyLibrarian instances
  • Optional Hardcover integration for richer search/discovery metadata (falls back to Open Library)
  • 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)

Libreseerr Requests Page

Compatibility

Installation

Docker Run

docker run -d \
  --name libreseerr \
  -p 5000:5000 \
  -v libreseerr-data:/app/data \
  --restart unless-stopped \
  ghcr.io/zamnzim/libreseerr:latest

Docker Compose

services:
  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 -d

The application will be available at http://<your-host>:5000.

TrueNAS Scale

Libreseerr is available as a TrueNAS SCALE app from this repository.

  1. In the TrueNAS web UI, go to Apps > Settings > Add Catalog.
  2. Enter the repository URL: https://github.com/zamnzim/Libreseerr
  3. Set the Preferred Train to stable.
  4. Navigate to Available Applications, find Libreseerr, and click Install.
  5. Configure the app through the UI:
    • Libreseerr Configuration — image settings, secret key, and timezone
    • Storage — choose ixVolume (managed) or hostPath (custom directory) for persistent data
    • Networking — set the web port (default 50000)
  6. 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.

Configuration

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.

Optionally, add a Hardcover API token in Settings to use Hardcover as the search/discovery metadata source. When no token is set, Libreseerr uses the public Open Library API by default.

Libreseerr Settings Page

Usage

  1. Log in with your admin credentials (default: admin / admin).
  2. Go to the Discover page and search for a book by title, author, or ISBN.
  3. Click a book card to open the download dialog.
  4. Select ebook, audiobook, or both. Each selected format gets its own quality profile and root folder (formats whose server isn't configured are disabled). Click Download to submit — requesting both creates one request per format.
  5. Switch to the Requests page to monitor progress.
  6. 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)

User Management

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 (admin or user)
  • 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=1 to 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.

Libreseerr Users Page

Environment Variables

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.

Data Persistence

Application data is stored in /app/data/ and includes:

  • config.json - Server configuration (Readarr, Bookshelf, or LazyLibrarian)
  • requests.json - Request history
  • users.json - User accounts (passwords are hashed)
  • secret_key - Auto-generated session signing key (only created if SECRET_KEY is not set via environment)

Mount a volume at /app/data to persist this data across container restarts.

Development

Requirements

  • Python 3.12+
  • Flask, Requests, Gunicorn (see requirements.txt)

Running Locally

pip install -r requirements.txt
python app.py

The development server starts on http://0.0.0.0:5000 with debug mode enabled.

Testing and Linting

Install the dev dependencies, then run the linter and test suite:

pip install -r requirements-dev.txt
ruff check .   # lint
pytest         # test suite

Both run in CI (.github/workflows/ci.yml) on every push and pull request, alongside a job that builds the Docker image and verifies the container serves. Run ruff check . and pytest locally before opening a PR — both gate the build.

License

See LICENSE for details.

About

Libreseerr is a book request management application for Readarr 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

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 62.3%
  • JavaScript 18.5%
  • HTML 11.3%
  • CSS 7.4%
  • Other 0.5%