Skip to Content
LazyLibrarian

LazyLibrarian

LazyLibrarian is a SickBeard, CouchPotato, Headphones-like application for ebooks, audiobooks, and magazines.

Overview

LazyLibrarian uses a combination of Goodreads, Librarything, and optionally GoogleBooks as sources for author and book metadata. In QuickBox Pro, it is installed per user, runs as a systemd service, and is exposed through the nginx reverse proxy.

Key features

👤 Per-user service

Runs as a user-scoped systemd unit (lazylibrarian@username).

🌐 Reverse-proxy path

Default access path is /username/lazylibrarian via nginx.

🗂️ User-scoped config

Configuration lives at /home/username/.config/LazyLibrarian/config.ini.

🔐 Basic auth in nginx

The nginx template enables auth_basic with /etc/htpasswd.d/htpasswd.username.

When to use it

Use LazyLibrarian when

  • Manage ebooks, audiobooks, and magazines with metadata lookups.
  • Run LazyLibrarian as a per-user service with user-scoped settings.

You want to

  • Install with qb install lazylibrarian -u username.
  • Access it through the nginx path /username/lazylibrarian.

Installation

Install from the QuickBox CLI

LazyLibrarian uses the standard QuickBox software actions:

qb install lazylibrarian -u username

Install from the Dashboard

In the QuickBox dashboard software list, the LazyLibrarian row includes Install and Reinstall actions for eligible users.

Access and authentication

URL / route

LazyLibrarian is proxied through nginx at the per-user path:

/username/lazylibrarian

The service listens on the user port set during install (default is 5299) and the proxy forwards to:

http://127.0.0.1:port/username/lazylibrarian/

Credentials / tokens

If you generate an API key in LazyLibrarian, QuickBox reads it from:

  • /home/username/.config/LazyLibrarian/config.ini (look for api_key =)

Security notes

The nginx template enables HTTP basic auth for LazyLibrarian using:

  • /etc/htpasswd.d/htpasswd.username

Configuration and files

LazyLibrarian stores user configuration and logs under the user home directory.

LazyLibrarian user files
/home/username
.config/
└── LazyLibrarian/
│ ├── config.ini# Main LazyLibrarian configuration
│ └── Logs/# Application logs
tmp/# TMPDIR for LazyLibrarian (/home/username/tmp/LazyLibrarian)

Additional system locations used by QuickBox:

  • /opt/username/LazyLibrarian (application files)
  • /opt/username/lib/python/LazyLibrarian (Python venv)
  • /etc/nginx/software/username.lazylibrarian.conf (path-based proxy)
  • /etc/systemd/system/lazylibrarian@username.service

Common tasks

# Start or restart LazyLibrarian for a user systemctl start lazylibrarian@username systemctl restart lazylibrarian@username # Stop LazyLibrarian for a user systemctl stop lazylibrarian@username

Best practices

Do

  • Use the nginx path /username/lazylibrarian so the app matches the configured http_root.
  • Keep the user config at /home/username/.config/LazyLibrarian/config.ini so dashboard tools can read the API key.

Don't

  • Don’t enable both nginx auth and LazyLibrarian browser auth at the same time; the install notes warn they can conflict.
  • Don’t change the nginx proxy path without updating http_root in config.ini.

Troubleshooting

App loads but assets fail or redirect loops

The nginx proxy expects LazyLibrarian to run under /username/lazylibrarian. Confirm http_root in /home/username/.config/LazyLibrarian/config.ini matches the proxy path.

API key shows as not generated

QuickBox reads the API key from /home/username/.config/LazyLibrarian/config.ini using the api_key = line. Generate the key in LazyLibrarian and re-check the file.

Service not responding

Verify the user service is running: systemctl status lazylibrarian@username. The unit starts /opt/username/LazyLibrarian/LazyLibrarian.py with the per-user config and port.

Resources


Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

Dedicated Support
Feature Previews
Community Configs
Active Discussions
Join Discord Server