A dead‑simple self‑hosted EPUB library + reader:
- Upload multiple EPUB files from your device
- Browse them in a shelf view with extracted book covers
- Read in-browser with themes + typography controls (font, size, margins, line height, colors)
- Upload and use custom fonts (TTF, OTF, WOFF, WOFF2)
- Remembers your last position per book
- Install as PWA (Progressive Web App)
This project is licensed under the MIT License - see the LICENSE file for details.
- Books: This repository does not include any sample books. You must add your own EPUB files to the
data/books/directory. Only include books you have the legal right to distribute. - Fonts: Only open-source fonts are included. Custom fonts can be uploaded by users.
- Dependencies: All npm dependencies are open-source with permissive licenses.
Default User Credentials:
- Username:
admin - Password:
admin
services:
thinkread:
image: nikunjsingh/thinkread-ebook-reader:latest
ports:
- "8080:8080"
volumes:
- ./thinkread/data:/data # this is the data directory for the database and the files
environment:
- DATA_DIR=/data
restart: unless-stoppedUse this configuration if you want to store your library (book files) on a different drive or directory from the application data (covers, settings, users).
services:
thinkread:
image: nikunjsingh/thinkread-ebook-reader:latest
ports:
- "8080:8080"
volumes:
# Application data (covers, fonts, database)
- ./thinkread/data:/data
# Your book library (external HDD or specific folder)
- /path/to/your/books:/books
environment:
- DATA_DIR=/data
- BOOKS_DIR=/books
restart: unless-stoppeddocker run -d \
--name thinkread \
-p 8080:8080 \
-v ./thinkread/data:/data \
-e DATA_DIR=/data \
--restart unless-stopped \
nikunjsingh/thinkread-ebook-reader:latestFor development with hot-reload and watch mode:
docker compose -f docker-compose.dev.yml up --buildAccess:
- Web UI: http://localhost:5173
- API Server: http://localhost:8080
For production deployment:
docker compose up --buildAccess:
- Application: http://localhost:8080
Uploaded books + app data are stored in ./thinkread/data (mapped to /data inside the container).
- Supported Formats: EPUB, MOBI (automatically converted to EPUB), and PDF.
- Automatic Extraction: EPUB covers and PDF thumbnails are automatically extracted.
- Custom fonts: Upload TTF, OTF, WOFF, or WOFF2 files in the reader settings for personalized typography.