# 07-lazylibrarian.md

kstack:
  book: Centerpoint Home Lab
  chapter: Media Management
  page: LazyLibrarian
  tags: [lazylibrarian, books, ebooks, magazines, arr, media-management]
---

## Overview

LazyLibrarian manages ebook, audiobook, and magazine acquisition. It monitors
authors and publications, searches for releases via Prowlarr, downloads via NZBGet,
and organises the completed files into the books library on UnRAID. Despite its
internal name, it is accessed externally via the `readarr.jeevesconsults.ca` domain.

## Access

| Type      | URL                                        | Notes                                           |
|-----------|--------------------------------------------|-------------------------------------------------|
| Internal  | `https://readarr.home.local`               | LAN access via Step-CA TLS                      |
| External  | `https://readarr.jeevesconsults.ca`        | Authentik SSO + GeoBlock + CrowdSec             |

> The external domain uses `readarr.jeevesconsults.ca` (not `lazylibrarian.*`).

## Configuration

**Image:** `lscr.io/linuxserver/lazylibrarian:latest`
**Compose project:** `arr` stack

### Traefik Labels

```yaml
# External route
traefik.http.routers.lazylibrarian-external.rule: Host(`readarr.jeevesconsults.ca`)
traefik.http.routers.lazylibrarian-external.entrypoints: websecure
traefik.http.routers.lazylibrarian-external.tls.certresolver: letsencrypt
traefik.http.routers.lazylibrarian-external.middlewares: authentik-auth@docker,plex-geoblock@file,crowdsec-bouncer@file
traefik.http.routers.lazylibrarian-external.service: lazylibrarian-svc

# Internal route
traefik.http.routers.lazylibrarian-internal.rule: Host(`readarr.home.local`)
traefik.http.routers.lazylibrarian-internal.entrypoints: websecure
traefik.http.routers.lazylibrarian-internal.tls.certresolver: step-ca
traefik.http.routers.lazylibrarian-internal.service: lazylibrarian-svc

traefik.http.services.lazylibrarian-svc.loadbalancer.server.port: 5299
```

## Volumes / Bind Mounts

| Host Path                                                    | Container Path | Purpose                          |
|--------------------------------------------------------------|----------------|----------------------------------|
| `/home/jeeves/docker/arr/lazylibrarian/config`               | `/config`      | LazyLibrarian database and settings |
| `/media/jeeves/1TB_Vol2/downloads/usenet/complete/books`     | `/downloads`   | Completed book downloads (Ceph OSD) |
| `/mnt/Multimedia/Books/Lazylibrarian`                        | `/books`       | Final book library (NFS from UnRAID) |

## Integration Points

| Service  | Connection Method                              | Purpose             |
|----------|------------------------------------------------|---------------------|
| Prowlarr | API (`http://prowlarr:9696`) via `media-network` | Indexer search    |
| NZBGet   | API (`http://nzbget:6789`) via `media-network`   | Download client   |

## Notes / Gotchas

- LazyLibrarian covers ebooks, audiobook metadata management (separate from
  Audiobookshelf's podcast/streaming role), and magazines. Configure each
  content type under its own library section within LazyLibrarian.
- The external domain (`readarr.jeevesconsults.ca`) was chosen for cleaner branding
  — update DNS and Traefik labels if the domain ever changes.
- Calibre integration can be enabled in LazyLibrarian settings if a Calibre server
  is available on the network for ebook format conversion.

---
*Last Updated: 2026-06-16*