BookLore

Self-hosted web app for organizing and reading ebooks and PDFs

E-books & Media Library ★ 1.2k stars Easy setup GPL-3.0

BookLore is a self-hosted application for organizing, managing, and reading a personal ebook and PDF library in the browser. Written in Java and deployed via Docker, it offers metadata fetching, a web reader, and multi-user shelves.

Key features

  • Organizes e-books and PDFs
  • Web-based reader
  • Metadata fetching
  • Multi-user shelves

Pros & cons

Strengths

  • Tidy library management
  • Web reader included
  • Active development

Trade-offs

  • Young project
  • Smaller community

BookLore replaces

Last reviewed Sep 13, 2026 · 769 words

BookLore does one thing that Calibre-Web cannot: it manages an ebook library without Calibre. No metadata.db, no desktop app on the side, no "run Calibre first, then point the web app at it". You mount folders of EPUBs, PDFs, and comics, it scans them, fetches metadata and covers from online sources, and gives you a reader in the browser and shelves per user. It is also a project first released in 2024, at 1,141 stars, and you can feel the youth in the release cadence: features land monthly, and so do breaking changes. That is the trade.

What you get on day one

Library folders that BookLore watches, a "bookdrop" ingest folder you can copy files into for automatic sorting, metadata lookup against Google Books and the usual book databases with a review-and-apply step so you can reject bad matches, and a reader that handles EPUB, PDF, and CBZ/CBR with per-book progress. Shelves are per user; an admin creates accounts and sets permissions (who can upload, who can edit metadata, who can delete). An OPDS feed lets reading apps on phones and e-readers pull books, and there is a Kobo sync integration for those devices. For a household of three readers with a couple of thousand files, that is a complete feature list, and it is more coherent than the Calibre-Web experience of bolting features onto someone else's database.

MariaDB is required, and 512 MB is the floor

The backend is Java (Spring Boot) and it insists on MariaDB; there is no SQLite mode. That means two containers minimum and a JVM, which is why the RAM floor is 512 MB where Calibre-Web sits at half that. The Docker Compose shape:

services:
  booklore:
    image: booklore/booklore:latest
    ports:
      - "6060:6060"
    environment:
      - DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
      - DATABASE_USERNAME=booklore
      - DATABASE_PASSWORD=change-me
    volumes:
      - ./booklore-data:/app/data
      - /mnt/books:/books
      - /mnt/bookdrop:/bookdrop
    depends_on: [mariadb]
    restart: unless-stopped
  mariadb:
    image: mariadb:11
    environment:
      - MYSQL_DATABASE=booklore
      - MYSQL_USER=booklore
      - MYSQL_PASSWORD=change-me
      - MYSQL_ROOT_PASSWORD=change-me-too
    volumes:
      - ./mariadb:/var/lib/mysql
    restart: unless-stopped

First boot takes a minute while the JVM warms up and the schema migrates, then the setup screen creates the admin. Pin the image tag rather than latest; a young project with monthly releases and a database schema that moves is exactly the case where an unattended pull breaks a morning.

Metadata fetching is the feature to be careful with

Automatic metadata is the reason people leave hand-curated folders, and it is also the way libraries get quietly corrupted. BookLore's lookup can write titles, authors, series, covers, and descriptions back into the database and optionally into the file's own metadata. Run it in review mode on 20 books before letting it loose on 2,000: obscure titles, non-English books, and anything with a generic name attract wrong matches, and undoing a bulk apply is tedious. Keep the originals on a separate volume you back up, so a bad metadata run never touches the only copy.

Where Calibre-Web and Kavita still win

Calibre-Web has the larger community by an order of magnitude, a decade of accumulated fixes, and the entire Calibre toolchain for conversion (EPUB to MOBI or KEPUB, send-to-Kindle) if you run it next to Calibre. BookLore does not convert formats. Kavita is the stronger choice if comics and manga are the bulk of the library; its reader and series handling for CBZ are more mature, and it has been through more release cycles. Komga is the comics-first Java cousin with a similar shape. BookLore's niche is "books and PDFs, no Calibre, multi-user, modern interface", and if that is your list, it is the best fit in the ebooks category right now; if conversion or comics-first matter, it is not.

What I'd do

For a mixed household library of EPUBs and PDFs where nobody wants to run Calibre, I would deploy BookLore with MariaDB on a pinned tag, point the bookdrop folder at a Syncthing share so new purchases sort themselves, enable OPDS for the phones, and run metadata fetching in review mode until I trusted it. I would keep the source folders on their own backed-up volume and treat the database as rebuildable. If my library were mostly comics, Kavita; if I needed Kindle conversion, Calibre-Web next to Calibre. And I would read BookLore's release notes every month, because at this age that is where the surprises are announced.

Compare BookLore

19 head-to-head comparisons.

Similar e-books & media library apps