Self-Hosted Book Managers: Calibre-Web, Kavita, and Runary Compared
Self-Hosted Book Managers: Calibre-Web, Kavita, and Runary Compared
If you want to manage your ebook collection without relying on cloud services, there are several self-hosted options. This post compares three: Calibre-Web (the established choice), Kavita (strong for manga), and Runary (built-in readers with cross-device sync).
Feature comparison
| Feature | Calibre-Web | Kavita | Runary |
|---|---|---|---|
| EPUB reader | Basic (browser) | Yes | Yes (custom fonts, themes, RTL, TOC) |
| PDF reader | Download only | Yes | Yes (in-browser, text extraction) |
| Comic reader (CBZ/CBR) | Limited | Yes (manga focus) | Yes (double-page, 5 fit modes, gestures) |
| Audiobook player | No | No | Yes (multi-chapter, speed control) |
| FB2 / DjVu | No | No | Yes |
| Cross-device sync | No | Reading progress | Yes (EPUB CFI, PDF page, audio timestamp) |
| Kobo sync | Yes (via plugin) | No | Yes (native) |
| KOReader sync | No | No | Yes (kosync) |
| OPDS | Yes | Yes | Yes (1.2 + 2.0) |
| Metadata sources | Calibre DB | AniList, MyAnimeList | OpenLibrary, Google Books, Hardcover, ComicVine, Audible |
| Full-text search | Calibre DB | Yes | Yes (30 languages, BM25) |
| Reading analytics | No | Basic | Streaks, speed, heatmaps, goals |
| Smart shelves | No | Collections | Auto-populated by status, tag, or rating rules |
| Custom metadata fields | Calibre columns | No | Yes (text, number, date, select, boolean) |
| Whispersync | No | No | Yes (link ebook + audiobook) |
| Tech stack | Python / Flask | .NET | Kotlin / HTTP4k |
| Deployment | Docker, pip | Docker | Docker, fat JAR, native binary |
When to choose each
Calibre-Web if you already use Calibre for library management and want a web frontend for your existing database. It's the most mature option with a large community.
Kavita if your primary use case is manga and comics. It has strong AniList/MyAnimeList integration and a reading UI optimized for sequential art.
Runary if you want built-in readers for all formats (including audiobooks), cross-device position sync, reading analytics, and don't want to depend on Calibre. It's the newest of the three and under active development.
Deployment
All three run as Docker containers. Runary also ships as a fat JAR and native binary for environments without Docker.
# Runary — docker-compose.yml
services:
runary:
image: ghcr.io/rygel/runary:latest
ports: ["9999:9999"]
volumes: [runary_data:/data]
FAQ
What is the best self-hosted book manager?
It depends on your needs. Calibre-Web is the most mature and integrates with existing Calibre libraries. Kavita is strong for manga and comics with AniList integration. Runary offers built-in readers for all formats (EPUB, PDF, CBZ, audiobooks), cross-device sync, and reading analytics without requiring Calibre.
Does Runary support Kobo sync?
Yes. Runary supports native Kobo sync, KOReader kosync protocol, and OPDS 1.2 + 2.0 for e-reader integration.