BookLite is a simple, self-hosted digital book library. It is inspired by BookLore but strips away the complexity — no OPDS feeds, no KOReader sync, no comic/audiobook support, no complex permissions or BookDrop imports. Just the essentials: upload books, organize them, fetch metadata, and sync to your Kobo.
If you need the full feature set, check out BookLore.
- Upload EPUB, KEPUB, and PDF files from the web UI
- Collections with drag-and-drop organization
- Metadata from 7 providers (Open Library, Google Books, Amazon, bol.com, Hardcover, Goodreads, Douban)
- Kobo sync — books and reading progress over the built-in Kobo API
- Multi-user with simple Owner/Member roles
- Built-in EPUB and KEPUB reader
- Full-text search powered by SQLite FTS5
- Backend: Fastify + TypeScript + Drizzle + SQLite (WAL)
- Frontend: React + Vite + TanStack Query + dnd-kit
- Runtime: Single Docker container
cp .env.example .env
docker compose -f deploy/compose.yml up -d --buildOn first run either:
- Use
/setupin the UI, or - Set bootstrap env vars in
deploy/compose.yml:
BOOTSTRAP_OWNER_EMAILBOOTSTRAP_OWNER_USERNAMEBOOTSTRAP_OWNER_PASSWORD
See .env.example:
PORT(default6060)APP_DATA_DIR(default/app/data)BOOKS_DIR(default/books)JWT_SECRETBASE_URLACCESS_TOKEN_TTL_SECONDS(default900, 15 minutes)REFRESH_TOKEN_TTL_SECONDS(default2592000, 30 days)BOOKLITE_FRONTEND_MODE(auto/vite/static/off, defaultauto)autoresolves tovitewhenNODE_ENVis notproductionautoresolves tostaticwhenNODE_ENV=production
AMAZON_BOOKS_DOMAIN(optional, defaultcom)AMAZON_BOOKS_COOKIE(optional)GOOGLE_BOOKS_LANGUAGE(optional, exampleen)GOOGLE_BOOKS_API_KEY(optional)HARDCOVER_API_KEY(optional)
npm install
npm run dev
npm run docker:dev- App (API + UI):
http://localhost:6060
Optional split dev mode (legacy API + Vite proxy):
npm run dev:splitnpm run build
npm run typecheck
npm testapps/api- Fastify APIapps/web- React apppackages/shared- shared TS contractsdeploy- Docker compose files for local/prod-like runs
- Sync endpoint remains at
/api/kobo/{token}/... - Only EPUB and KEPUB books are synced to Kobo
- PDF remains library-only
- Progress sync uses latest timestamp wins