🟣 VM: Library (VMID 117)
🟣 IP Address: 192.168.5.146
🟣 Web UI: calibre.kalymoon.com
🟣 Last Updated: February 2026
The Library VM is a fully automated, self-hosted digital library system — a private alternative to Kindle, Audible, and any subscription reading service. It combines metadata management, web browsing, automated book acquisition, multi-source search, and torrent downloading into a single seamless pipeline.
Everything revolves around Calibre as the source of truth, with every other service reading from or writing to its library database.
| 🟣 Layer | 🟣 App | 🟣 Role |
|---|---|---|
| Core / Metadata | Calibre (GUI) | Source of truth — stores all books, metadata, covers |
| Web Interface | Calibre-Web | Browse, read, and download books via browser |
| Automation | LazyLibrarian | Tracks authors, finds missing books, triggers downloads |
| Search / Indexing | Jackett | Aggregates torrent/NZB indexers into a unified API |
| Bot Bypass | FlareSolverr | Bypasses Cloudflare protection on torrent indexers |
| Downloader | qBittorrent | Downloads books via torrent, hands off to LazyLibrarian |
Calibre is the foundation of the entire stack. Every other service depends on it.
| 🟣 Detail | 🟣 Value |
|---|---|
| Type | Desktop GUI application |
| Library Path | /srv/calibre-library |
| Database | /srv/calibre-library/metadata.db |
What it does:
metadata.db👉 Important: Never modify the library folder structure manually. Always let Calibre manage it.
Calibre-Web provides the browser-accessible front end to your Calibre library.
| 🟣 Detail | 🟣 Value |
|---|---|
| Container | calibre-web (Docker) |
| Public URL | calibre.kalymoon.com |
| Reads from | Calibre's metadata.db |
What it does:
LazyLibrarian is the automation engine that keeps your library growing automatically.
| 🟣 Detail | 🟣 Value |
|---|---|
| Runs as | systemd service |
| Path | /srv/lazylibrarian |
What it does:
LazyLibrarian Flow:
Calibre (books exist)
↓
LazyLibrarian scans library
↓
Builds author/book database
↓
Searches for missing books
↓
Sends downloads to torrent client
🟣 Note: LazyLibrarian is currently not public-facing. It is accessible internally only.
Jackett acts as a universal search proxy, sitting between LazyLibrarian and the actual torrent/NZB indexer sites.
What it does:
Flow:
LazyLibrarian → Jackett → Indexers → Results
FlareSolverr sits behind Jackett and handles indexer sites protected by Cloudflare's bot detection.
What it does:
Used by: Jackett (configured as a proxy in Jackett's settings)
qBittorrent handles all torrent downloads, connected to LazyLibrarian via API.
Download folder structure:
/srv/calibre-downloads/complete ← LazyLibrarian watches this
/srv/calibre-downloads/manual ← For manually added torrents
When a file lands in /complete, LazyLibrarian picks it up, processes it, and imports it into Calibre automatically.
This is how a book goes from "missing" to "in your library":
[Calibre Library]
↓
LazyLibrarian scans books
↓
Identifies missing books
↓
Sends search → Jackett
↓
Jackett queries indexers
↓
FlareSolverr bypasses protections
↓
Results → LazyLibrarian
↓
Download sent → qBittorrent
↓
File lands in /srv/calibre-downloads/complete
↓
LazyLibrarian processes file
↓
Imports into Calibre
↓
Calibre-Web displays it
| 🟣 Resource | 🟣 URL |
|---|---|
| Calibre-Web (Public) | calibre.kalymoon.com |
| VM Internal IP | http://192.168.5.146 |
| Calibre Library Path | /srv/calibre-library |
| Downloads Path | /srv/calibre-downloads/ |
| LazyLibrarian Path | /srv/lazylibrarian |
/srv/calibre-library. Always use Calibre or LazyLibrarian to manage the library.systemd service. To check its status: sudo systemctl status lazylibrarian/srv/calibre-downloads/complete is writable and that LazyLibrarian has correct Calibre API credentials.🟣 Tags: library • calibre • calibre-web • lazylibrarian • jackett • flaresolverr • qbittorrent • self-hosted • automation • ebooks