Self-hosted EPUB library — no database, just object storage
10
stars
60
commits
TypeScript
primary language
Sep 6, 2026
updated
A self-hosted EPUB library. Object storage is the only persistence layer — no database to provision, back up, or migrate between versions.
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.
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:
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).
Full docs are at docs.bookhoarder.dev (source: bookhoard/docs), including a features overview and HTTP API reference.
/opds) for browsing and downloading straight from any
OPDS-compatible e-reader app — the URL is in Settings → E-Reader Emaildocker-compose.yml for a MinIO-backed setup)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.
52 commits
8 commits
TypeScript
97.7%
CSS
1.2%
Self-hosted EPUB library — no database, just object storage
10
stars
60
commits
TypeScript
primary language
Sep 6, 2026
updated
A self-hosted EPUB library. Object storage is the only persistence layer — no database to provision, back up, or migrate between versions.
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.
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:
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).
Full docs are at docs.bookhoarder.dev (source: bookhoard/docs), including a features overview and HTTP API reference.
/opds) for browsing and downloading straight from any
OPDS-compatible e-reader app — the URL is in Settings → E-Reader Emaildocker-compose.yml for a MinIO-backed setup)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.
52 commits
8 commits
TypeScript
97.7%
CSS
1.2%