booklore
Introduction: BookLore: A self-hosted, multi-user digital library with smart shelves, auto metadata, Kobo & KOReader sync, BookDrop imports, OPDS support, and a built-in reader for EPUB, PDF, and comics.
Tags:
# 📚 BookLore
### Your Personal Library, Beautifully Organized
🌐 Official Website: https://booklore.org
---
BookLore is a powerful, self-hosted web application designed to organize and manage your personal book collection with elegance and ease. Build your dream library with an intuitive interface, robust metadata management, and seamless multi-user support.
🚀 Get Started • 📖 Documentation • 🎮 Try Demo • 💬 Community
## ✨ Features That Make BookLore Shine
| ### 📖 Library Management - Smart Organization: Custom shelves with powerful filters - Magic Shelves: Dynamic, auto-updating collections - Auto Metadata: Rich details from multiple sources - Advanced Search: Find any book instantly | ### 🌐 Connectivity - Kobo Integration: Seamless device sync - OPDS Support: Connect any reading app - KOReader Sync: Cross-platform progress tracking - Email Sharing: One-click book sending |
| ### 👥 User Experience - Multi-User Support: Granular permissions - Flexible Auth: Local or OIDC providers - Mobile Ready: Responsive on all devices - Built-in Reader: PDFs, EPUBs, comics | ### 🚀 Smart Features - BookDrop Import: Auto-detect bulk files - Private Notes: Personal reading annotations - Community Reviews: Enriched book data - Progress Tracking: Reading statistics |
## 💖 Support the Project
Your support helps BookLore grow and improve! 🌱
> 💡 Support the Kobo Sync Bounty →
> 💡 Support the Kobo Sync Bounty →
## 🎮 Live Demo: Explore BookLore in Action
Experience BookLore's features in a live environment before deploying your own instance!
| 🌐 Demo URL | 👤 Username | 🔑 Password |
|----------------------------------------------------|-------------|--------------------|
| demo.booklore.org |
> Admin features (user management, library setup) require a self-hosted instance.
booklore | 9HC20PGGfitvWaZ1 |
> ⚠️ Note: Demo account has standard user permissions only.> Admin features (user management, library setup) require a self-hosted instance.
## 🚀 Getting Started with BookLore
### Choose Your Path
|
### 📘 Documentation
Guides for installation, setup, features, and more
|
### 🐳 Quick Deploy
Get up and running in minutes with Docker
|
## 🐳 Deploy with Docker
Prerequisites
Ensure you have Docker and Docker Compose installed.
📦 Image Repositories
- 🐳 Docker Hub:booklore/booklore
- 📦 GitHub Container Registry: ghcr.io/booklore-app/booklore
> 💡 Legacy images at ghcr.io/adityachandelgit/booklore-app remain available but won't receive updates.
Step 1️⃣: Create Environment Configuration
Create a .env file in your project directory:
# 🎯 BookLore Application Settings
APP_USER_ID=0
APP_GROUP_ID=0
TZ=Etc/UTC
BOOKLORE_PORT=6060
# 🗄️ Database Connection (BookLore)
DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
DB_USER=booklore
DB_PASSWORD=ChangeMe_BookLoreApp_2025!
# 🔧 MariaDB Container Settings
DB_USER_ID=1000
DB_GROUP_ID=1000
MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!
MYSQL_DATABASE=booklore
Step 2️⃣: Create Docker Compose File
Create a docker-compose.yml file:
services:
booklore:
image: booklore/booklore:latest
# Alternative: Use GitHub Container Registry
# image: ghcr.io/booklore-app/booklore:latest
container_name: booklore
environment:
- USER_ID=${APP_USER_ID}
- GROUP_ID=${APP_GROUP_ID}
- TZ=${TZ}
- DATABASE_URL=${DATABASE_URL}
- DATABASE_USERNAME=${DB_USER}
- DATABASE_PASSWORD=${DB_PASSWORD}
- BOOKLORE_PORT=${BOOKLORE_PORT}
depends_on:
mariadb:
condition: service_healthy
ports:
- "${BOOKLORE_PORT}:${BOOKLORE_PORT}"
volumes:
- ./data:/app/data
- ./books:/books
- ./bookdrop:/bookdrop
healthcheck:
test: wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck
interval: 60s
retries: 5
start_period: 60s
timeout: 10s
restart: unless-stopped
mariadb:
image: lscr.io/linuxserver/mariadb:11.4.5
container_name: mariadb
environment:
- PUID=${DB_USER_ID}
- PGID=${DB_GROUP_ID}
- TZ=${TZ}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- ./mariadb/config:/config
restart: unless-stopped
healthcheck:
test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost" ]
interval: 5s
timeout: 5s
retries: 10
Step 3️⃣: Launch BookLore
docker compose up -d
Step 4️⃣: Access Your Library
Open your browser and navigate to:
🎉 Welcome to your personal library!
## 📥 BookDrop: Automatic Import
### Drop Files, Import Automatically
BookLore's BookDrop feature automatically detects and processes book files dropped into a designated folder.
How It Works
graph LR
A[📁 Drop Files] --> B[🔍 Auto-Detect]
B --> C[📊 Extract Metadata]
C --> D[✅ Review & Import]
- File Watcher: Monitors the BookDrop folder continuously
- Auto-Detection: Processes new files and extracts metadata
- Metadata Enrichment: Fetches details from Google Books, Open Library
- Review & Finalize: Review, edit, and import to your library
Docker Configuration
Add the BookDrop volume to your docker-compose.yml:
services:
booklore:
volumes:
- ./data:/app/data
- ./books:/books
- ./bookdrop:/bookdrop # 👈 BookDrop magic happens here
## 🤝 Community & Support
|
### 🐞 Bug Reports
Found an issue?
|
### 💡 Feature Req
Have an idea?
|
### 🤝 Contribute
Join development!
|
### 💬 Chat
Join community!
|
## 👨💻 Contributors
### Thanks to all our amazing contributors! 🙏
Want to see your face here? Start contributing today!
## ⚖️ License
GNU General Public License v3.0
Copyright © 2024-2025 BookLore
---
Made with ❤️ by the BookLore community
⬆ Back to Top
