搭建私人数字图书馆:Booklore 部署与 KOReader 进度同步指南
为什么需要自建电子书服务器?
在云服务和订阅制盛行的今天,我们的电子书往往分散在各个平台:Kindle、Apple Books、微信读书……每个平台都有自己的格式限制和生态壁垒。自建电子书服务器不仅能让你完全掌控自己的阅读数据,还能实现跨设备的无缝阅读体验。
Booklore 是一个新兴的开源电子书管理平台,相比 Calibre-Web 等老牌方案,它提供了更现代化的界面、更好的移动端支持以及原生的 KOReader 进度同步功能。
Booklore 核心特性
- 🔒 隐私优先:所有数据存储在你自己的服务器
- 👥 多用户支持:可以为家人朋友创建独立账户
- 🤖 智能元数据:自动从 Google Books 等来源获取书籍信息
- 📱 OPDS 支持:兼容所有支持 OPDS 的阅读应用
- 🔄 KOReader 同步:原生支持 KOReader 阅读进度同步
- 📤 Bookdrop:简单的拖放式书籍导入
- 🎨 现代界面:响应式设计,支持暗色模式
使用 Docker 部署 Booklore
Booklore 官方提供了完整的 Docker 部署方案,推荐使用 Docker Compose 进行部署。
准备工作
首先创建必要的目录结构:
mkdir -p ~/booklore/{config,data,books,bookdrop}
cd ~/booklore
创建 Docker Compose 配置
创建 docker-compose.yml 文件:
services:
booklore:
image: docker.1ms.run/booklore/booklore:latest
container_name: booklore
environment:
- USER_ID=1000
- GROUP_ID=1000
- TZ=Asia/Shanghai
- DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
- DATABASE_USERNAME=booklore
- DATABASE_PASSWORD=
- BOOKLORE_PORT=6060
depends_on:
mariadb:
condition: service_healthy
ports:
- 6060:6060
volumes:
- /booklore/data:/app/data
- /booklore/books:/books
- /bookdrop:/bookdrop
- /shelf:/shelf
healthcheck:
test: wget -q -O - http://localhost:6060/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=1000
- PGID=1000
- TZ=Asia/Shanghai # 与时区保持一致
- MYSQL_ROOT_PASSWORD=
- MYSQL_DATABASE=booklore
- MYSQL_USER=booklore
- MYSQL_PASSWORD=
volumes:
- /config:/config # 自动生成数据库配置文件夹
restart: unless-stopped
healthcheck:
test:
- CMD
- mariadb-admin
- ping
- -h
- localhost
interval: 5s
timeout: 5s
retries: 10
启动服务
# 启动容器
docker compose up -d
# 查看日志确认启动成功
docker compose logs -f booklore
# 访问 Web 界面
# 浏览器打开 http://localhost:6060
初始设置
首次访问会进入设置向导:
- 创建管理员账户:设置用户名、密码和邮箱
- 配置时区:选择你所在的时区
- 完成设置:点击”Complete Setup”
配置电子书库
创建第一个图书馆
- 登录后进入 Settings → Libraries
- 点击 “Add Library”
- 配置图书馆:
- Name:My Library(或任何你喜欢的名字)
- Path:
/books - Enable scanning:开启
- 保存后点击 “Scan Library” 扫描书籍
导入书籍
Booklore 提供三种导入方式:
方法一:直接复制文件
# 复制书籍到 books 目录
cp /path/to/your/books/*.epub ~/booklore/books/
# 在 Web 界面触发扫描
# Settings → Libraries → Scan Now
方法二:使用 Bookdrop(推荐)
Bookdrop 允许你将文件拖放到指定目录,Booklore 会自动处理:
- 在 Settings → Bookdrop 启用功能
- 将书籍复制到
~/booklore/bookdrop/目录 - Booklore 会自动导入并处理元数据
cp /path/to/new/book.epub ~/booklore/bookdrop/
# Booklore 会自动检测并导入
方法三:Web 上传
- 进入你的图书馆
- 点击 “Upload Books”
- 选择文件上传
配置元数据获取
启用自动元数据功能可以让 Booklore 自动获取书籍封面、简介等信息:
- 进入 Settings → Metadata
- 可选:添加 Google Books API密钥(免费且推荐)
- 启用 Auto-fetch on import
# 获取 Google Books API 密钥
# 访问 https://console.cloud.google.com/
# 创建项目并启用 Books API
# 生成 API 密钥并粘贴到 Booklore 设置中
配置 OPDS 服务
OPDS(Open Publication Distribution System)是电子书分发的标准协议,让你能够在各种阅读应用中访问你的图书馆。
启用 OPDS
- 进入 Settings → OPDS Configuration
- 打开 Enable OPDS Server 开关
- 复制显示的 Catalog URL(格式:
http://your-domain/opds)
OPDS 认证
如果你希望 OPDS 目录需要认证:
- 在 OPDS 设置中启用 Require Authentication
- 用户需要使用 Booklore 账户登录才能访问
测试 OPDS
在浏览器中访问你的 OPDS URL,应该看到 XML 格式的目录信息。
KOReader 集成与进度同步
KOReader 是一个功能强大的开源阅读器,支持 Kobo、Kindle 等多种设备。Booklore 提供了原生的 KOReader 进度同步支持。
重要前提
⚠️ KOReader 同步仅适用于通过 Booklore OPDS 下载的书籍。直接侧载到设备的书籍无法同步,因为同步系统依赖于 Booklore 的内部标识符。
步骤一:在 Booklore 中配置 KOReader 同步
- 进入 Settings → Devices
- 找到 KOReader Settings 部分
- 点击 Edit 配置凭证:
- Username:设置 KOReader 专用用户名
- Password:设置强密码
- 点击 Save 保存
- 打开 Enable KOReader Sync 开关
- 复制显示的 API URL(格式:
http://your-domain/api/koreader)
步骤二:配置用户权限
要允许用户同步进度,需要给他们分配相应权限:
- 进入 Settings → Users
- 选择要配置的用户
- 勾选 KOReader Sync 权限
- 保存更改
只有拥有此权限的用户才能从 KOReader 同步进度。
步骤三:在 KOReader 中设置同步
1. 添加 OPDS 目录
- 打开 KOReader,点击顶部搜索图标
- 选择 OPDS catalog
- 点击左上角 + 添加新服务器
- 输入你的 OPDS URL(确保包含末尾的
/)https://your-domain/opds/ - 使用 Booklore 账户登录
- 浏览并下载书籍到设备
2. 配置进度同步
- 打开 KOReader,进入 Settings → Progress Sync
- 选择 Custom Sync Server
- 输入从 Booklore 复制的 API URL
- 点击 OK 保存
3. 注册/登录
- 选择 Register / Login
- 输入你在 Booklore 中设置的 KOReader 用户名和密码
- 点击 Login
4. 设置文档匹配方法
- 在同步设置中,找到 Document matching method
- 选择 Binary 模式以确保正确同步
使用同步功能
手动同步
当有书籍打开时:
- 推送进度:选择 Push progress from this device
- 拉取进度:选择 Pull progress from other devices now
自动同步
在 KOReader 的同步设置中,可以设置自动同步频率:
- 进入 Progress Sync → Automatic Sync
- 设置同步间隔(如每 5 分钟)
在 Booklore 中查看同步进度
同步后,你可以在 Booklore 的书籍详情页看到:
- 进度百分比:显示当前阅读进度
- 黄色进度条:在封面下方可视化显示进度
- 重置进度:点击可重置该书的 KOReader 进度
备份与维护
备份重要数据
定期备份以下目录:
# 创建备份脚本
cat > backup-booklore.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/path/to/backup"
BOOKLORE_DIR="$HOME/booklore"
DATE=$(date +%Y%m%d_%H%M%S)
# 备份数据库和配置
tar -czf "$BACKUP_DIR/booklore_config_$DATE.tar.gz" -C "$BOOKLORE_DIR" config
# 备份书籍(可选,如果你有其他备份方案)
# tar -czf "$BACKUP_DIR/booklore_books_$DATE.tar.gz" -C "$BOOKLORE_DIR" books
echo "Backup completed: booklore_config_$DATE.tar.gz"
EOF
chmod +x backup-booklore.sh
设置定时备份
# 添加到 crontab(每天凌晨 2 点备份)
crontab -e
# 添加以下行
0 2 * * * /path/to/backup-booklore.sh
更新 Booklore
cd ~/booklore
# 拉取最新镜像
docker compose pull
# 重启服务
docker compose up -d
常见问题解决
Q: OPDS 连接失败
解决方案:
- 确认 URL 包含末尾的
/(/opds/而非/opds) - 检查防火墙设置
- 确认 Booklore 中的 OPDS 服务已启用
- 检查用户是否有 OPDS 访问权限
Q: KOReader 同步不工作
解决方案:
- 确认书籍是通过 OPDS 下载的
- 检查 API URL 是否正确(应包含
/api/koreader) - 验证用户名和密码
- 在 KOReader 中检查”文档匹配方法”是否设为”Binary”
- 查看 Booklore 日志:
docker compose logs booklore
Q: 元数据获取失败
解决方案:
- 检查网络连接
- 添加 Google Books API 密钥
- 手动编辑书籍信息:Settings → Books → 选择书籍 → Edit
- 尝试重新扫描图书馆
Q: 书籍导入后不显示
解决方案:
- 检查文件格式是否支持(EPUB、PDF、CBZ、CBZ 等)
- 查看任务管理器:Settings → Task Manager
- 手动触发扫描:Settings → Libraries → Scan Now
- 查看容器日志:
docker compose logs -f booklore
性能优化建议
定期清理
定期清理不需要的书籍和缓存:
# 进入容器
docker exec -it booklore bash
# 清理缓存
rm -rf /app/data/cache/*
扩展功能
阅读统计
Booklore 提供内置的阅读统计功能,可以查看:
- 阅读时长
- 已完成书籍数量
- 阅读进度趋势
访问:Statistics → Reading Stats
智能书架
创建动态书架自动组织书籍:
- 进入 Shelves
- 创建新书架,选择 Magic Shelf
- 设置规则(如:按标签、作者、系列分类)
多用户管理
为家庭成员创建独立账户:
- Settings → Users → Add User
- 设置用户名、密码和权限
- 每个用户有独立的阅读进度和书签
总结
通过 Booklore 和 KOReader 的组合,你可以构建一个完整的个人数字阅读生态系统:
- Booklore 作为中心枢纽,管理所有电子书和元数据
- OPDS 提供标准的书籍分发协议,兼容各种阅读应用
- KOReader 同步 确保在所有设备上的阅读进度保持一致
这种自建方案不仅保护了你的阅读隐私,还提供了比商业平台更好的用户体验。所有数据都在你的控制之下,无需担心平台关闭或服务条款变更。
开始构建你的数字图书馆吧!Happy Reading! 📚
Comments