bookhoard/bookhoarder

Self-hosted EPUB library — no database, just object storage

10

stars

60

commits

TypeScript

primary language

Sep 6, 2026

updated

bookhoarder.dev
docker
ebook
ebook-reader
epub
nextjs
personal-library
s3
self-hosted
typescript

README

Bookhoarder

Bookhoarder

A self-hosted EPUB library. Object storage is the only persistence layer — no database to provision, back up, or migrate between versions.

CI Latest release Docker image License Website Documentation

Quickstart (Docker)

docker compose up

This starts the app plus a local MinIO instance (the S3-compatible bucket) and creates the bookhoard bucket automatically. Open http://localhost:3000.

Deploying

Docker is the fastest way to try it; Bookhoarder also runs as a Cloudflare Worker or in Kubernetes — same image or source, different environment variables. Full walkthroughs for each are in the docs:

Local development

pnpm install
cp .env.example .env.local   # defaults to the local filesystem driver
pnpm dev

Open http://localhost:3000.

To develop against S3/MinIO instead of the local driver, run docker compose up minio minio-init and set STORAGE_DRIVER=s3 in .env.local (see .env.example for the rest of the S3 vars).

Documentation

Full docs are at docs.bookhoarder.dev (source: bookhoard/docs), including a features overview and HTTP API reference.

Features

  • EPUB upload, ingest, and an in-browser reader (epub.js) with per-profile reading progress, ratings, and shelves
  • Multi-profile support (admin/reader roles) with optional per-profile passwords
  • Metadata lookup and cover fetching via Open Library, with manual editing
  • Trending books, library search by title/author, and send-to-e-reader over SMTP
  • OPDS catalog feed (/opds) for browsing and downloading straight from any OPDS-compatible e-reader app — the URL is in Settings → E-Reader Email
  • Pluggable storage driver: local filesystem or S3-compatible object storage, including a configurable directory prefix for sharing a bucket with other apps (see docker-compose.yml for a MinIO-backed setup)

License

Bookhoarder is licensed under the Elastic License 2.0. You're free to self-host, modify, and use it — including internally at a company — but you may not offer it to third parties as a hosted or managed service.

Contributors

omegion

52 commits

bookhoard/bookhoarder

Self-hosted EPUB library — no database, just object storage

10

stars

60

commits

TypeScript

primary language

Sep 6, 2026

updated

bookhoarder.dev
docker
ebook
ebook-reader
epub
nextjs
personal-library
s3
self-hosted
typescript

README

Bookhoarder

Bookhoarder

A self-hosted EPUB library. Object storage is the only persistence layer — no database to provision, back up, or migrate between versions.

CI Latest release Docker image License Website Documentation

Quickstart (Docker)

docker compose up

This starts the app plus a local MinIO instance (the S3-compatible bucket) and creates the bookhoard bucket automatically. Open http://localhost:3000.

Deploying

Docker is the fastest way to try it; Bookhoarder also runs as a Cloudflare Worker or in Kubernetes — same image or source, different environment variables. Full walkthroughs for each are in the docs:

Local development

pnpm install
cp .env.example .env.local   # defaults to the local filesystem driver
pnpm dev

Open http://localhost:3000.

To develop against S3/MinIO instead of the local driver, run docker compose up minio minio-init and set STORAGE_DRIVER=s3 in .env.local (see .env.example for the rest of the S3 vars).

Documentation

Full docs are at docs.bookhoarder.dev (source: bookhoard/docs), including a features overview and HTTP API reference.

Features

  • EPUB upload, ingest, and an in-browser reader (epub.js) with per-profile reading progress, ratings, and shelves
  • Multi-profile support (admin/reader roles) with optional per-profile passwords
  • Metadata lookup and cover fetching via Open Library, with manual editing
  • Trending books, library search by title/author, and send-to-e-reader over SMTP
  • OPDS catalog feed (/opds) for browsing and downloading straight from any OPDS-compatible e-reader app — the URL is in Settings → E-Reader Email
  • Pluggable storage driver: local filesystem or S3-compatible object storage, including a configurable directory prefix for sharing a bucket with other apps (see docker-compose.yml for a MinIO-backed setup)

License

Bookhoarder is licensed under the Elastic License 2.0. You're free to self-host, modify, and use it — including internally at a company — but you may not offer it to third parties as a hosted or managed service.

Contributors

omegion

52 commits

Languages

TypeScript

97.7%

CSS

1.2%