selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
Bookshelf logo

Self-host Bookshelf

Self-hosted ebook library with OPDS catalog for e-readers

BetaOpen SourceMIT
Updatedlast week
LanguageTypescript
Setup difficultyModerate
ThemeDark mode
Stars
373
Port
3000 (HTTP server for the web UI and OPDS catalog)
Install with Docker Compose

What is Bookshelf?

Bookshelf is a self-hosted ebook library for managing personal EPUB and PDF collections. It publishes books to either Cloudflare R2 (via Cloudflare Workers) or a local filesystem, with no database required. Features include browser-based EPUB and PDF readers with multiple layouts (two-page, single-page, continuous scroll), page tint options (paper, sepia, night), OPDS 1.2/2.0 catalog for e-readers (KOReader, Thorium, Calibre, Panels, Moon+ Reader, Aldiko, Chunky), profile support for multiple readers with reading position sync, cover generation from PDFs and EPUBs, and streaming reads for large files. It runs via Docker (port 3000) or directly with Node.js 24+. No authentication is built-in — it's designed for trusted networks or behind a reverse proxy. Licensed under MIT.

Should you self-host Bookshelf?

Bookshelf scores 47/100 on selfhost.directory (how scoring works) and ranks #9 of 19 in Ebook Management. It has 373 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Calibre (83/100, 26 264 stars). It scores higher overall, so compare the two before you pick. See Bookshelf vs Calibre side by side.

Features

  • Cloudflare R2 storage
  • Cover generationRequires poppler-utils and webp tools for PDF covers
  • Download resume
  • EPUB reader
  • Keyboard Navigation
  • Local Filesystem Storage
  • Multi-format books
  • Multiple reader profiles
  • No Database Required
  • OPDS Catalog
  • PDF reader
  • Reading position syncLast-write-wins for concurrent devices on same profile
  • Streaming reads

Bookshelf README

How to install Bookshelf

Install Bookshelf with Docker Compose

Docker and Docker Compose
Environment variables
BOOKSHELF_READ_ONLY, BOOKSHELF_PROVIDER, BOOKSHELF_DIRECTORY, BOOKSHELF_SITE_URL

mkdir books && cp ~/Downloads/*.epub books/ docker compose run --rm sync --create docker compose up -d

Image includes poppler-utils and webp for cover generation. Library data persists in a Docker volume at /data.

More in Ebook Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…