搭建私人数字图书馆: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

初始设置

首次访问会进入设置向导:

  1. 创建管理员账户:设置用户名、密码和邮箱
  2. 配置时区:选择你所在的时区
  3. 完成设置:点击”Complete Setup”

配置电子书库

创建第一个图书馆

  1. 登录后进入 SettingsLibraries
  2. 点击 “Add Library”
  3. 配置图书馆:
    • Name:My Library(或任何你喜欢的名字)
    • Path/books
    • Enable scanning:开启
  4. 保存后点击 “Scan Library” 扫描书籍

导入书籍

Booklore 提供三种导入方式:

方法一:直接复制文件

# 复制书籍到 books 目录
cp /path/to/your/books/*.epub ~/booklore/books/

# 在 Web 界面触发扫描
# Settings → Libraries → Scan Now

方法二:使用 Bookdrop(推荐)

Bookdrop 允许你将文件拖放到指定目录,Booklore 会自动处理:

  1. SettingsBookdrop 启用功能
  2. 将书籍复制到 ~/booklore/bookdrop/ 目录
  3. Booklore 会自动导入并处理元数据
cp /path/to/new/book.epub ~/booklore/bookdrop/
# Booklore 会自动检测并导入

方法三:Web 上传

  1. 进入你的图书馆
  2. 点击 “Upload Books”
  3. 选择文件上传

配置元数据获取

启用自动元数据功能可以让 Booklore 自动获取书籍封面、简介等信息:

  1. 进入 SettingsMetadata
  2. 可选:添加 Google Books API密钥(免费且推荐)
  3. 启用 Auto-fetch on import
# 获取 Google Books API 密钥
# 访问 https://console.cloud.google.com/
# 创建项目并启用 Books API
# 生成 API 密钥并粘贴到 Booklore 设置中

配置 OPDS 服务

OPDS(Open Publication Distribution System)是电子书分发的标准协议,让你能够在各种阅读应用中访问你的图书馆。

启用 OPDS

  1. 进入 SettingsOPDS Configuration
  2. 打开 Enable OPDS Server 开关
  3. 复制显示的 Catalog URL(格式:http://your-domain/opds

OPDS 认证

如果你希望 OPDS 目录需要认证:

  1. 在 OPDS 设置中启用 Require Authentication
  2. 用户需要使用 Booklore 账户登录才能访问

测试 OPDS

在浏览器中访问你的 OPDS URL,应该看到 XML 格式的目录信息。

KOReader 集成与进度同步

KOReader 是一个功能强大的开源阅读器,支持 Kobo、Kindle 等多种设备。Booklore 提供了原生的 KOReader 进度同步支持。

重要前提

⚠️ KOReader 同步仅适用于通过 Booklore OPDS 下载的书籍。直接侧载到设备的书籍无法同步,因为同步系统依赖于 Booklore 的内部标识符。

步骤一:在 Booklore 中配置 KOReader 同步

  1. 进入 SettingsDevices
  2. 找到 KOReader Settings 部分
  3. 点击 Edit 配置凭证:
    • Username:设置 KOReader 专用用户名
    • Password:设置强密码
  4. 点击 Save 保存
  5. 打开 Enable KOReader Sync 开关
  6. 复制显示的 API URL(格式:http://your-domain/api/koreader

步骤二:配置用户权限

要允许用户同步进度,需要给他们分配相应权限:

  1. 进入 SettingsUsers
  2. 选择要配置的用户
  3. 勾选 KOReader Sync 权限
  4. 保存更改

只有拥有此权限的用户才能从 KOReader 同步进度。

步骤三:在 KOReader 中设置同步

1. 添加 OPDS 目录

  1. 打开 KOReader,点击顶部搜索图标
  2. 选择 OPDS catalog
  3. 点击左上角 + 添加新服务器
  4. 输入你的 OPDS URL(确保包含末尾的 /
    https://your-domain/opds/
  5. 使用 Booklore 账户登录
  6. 浏览并下载书籍到设备

2. 配置进度同步

  1. 打开 KOReader,进入 SettingsProgress Sync
  2. 选择 Custom Sync Server
  3. 输入从 Booklore 复制的 API URL
  4. 点击 OK 保存

3. 注册/登录

  1. 选择 Register / Login
  2. 输入你在 Booklore 中设置的 KOReader 用户名和密码
  3. 点击 Login

4. 设置文档匹配方法

  1. 在同步设置中,找到 Document matching method
  2. 选择 Binary 模式以确保正确同步

使用同步功能

手动同步

当有书籍打开时:

  • 推送进度:选择 Push progress from this device
  • 拉取进度:选择 Pull progress from other devices now

自动同步

在 KOReader 的同步设置中,可以设置自动同步频率:

  1. 进入 Progress SyncAutomatic Sync
  2. 设置同步间隔(如每 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 连接失败

解决方案

  1. 确认 URL 包含末尾的 //opds/ 而非 /opds
  2. 检查防火墙设置
  3. 确认 Booklore 中的 OPDS 服务已启用
  4. 检查用户是否有 OPDS 访问权限

Q: KOReader 同步不工作

解决方案

  1. 确认书籍是通过 OPDS 下载的
  2. 检查 API URL 是否正确(应包含 /api/koreader
  3. 验证用户名和密码
  4. 在 KOReader 中检查”文档匹配方法”是否设为”Binary”
  5. 查看 Booklore 日志:docker compose logs booklore

Q: 元数据获取失败

解决方案

  1. 检查网络连接
  2. 添加 Google Books API 密钥
  3. 手动编辑书籍信息:Settings → Books → 选择书籍 → Edit
  4. 尝试重新扫描图书馆

Q: 书籍导入后不显示

解决方案

  1. 检查文件格式是否支持(EPUB、PDF、CBZ、CBZ 等)
  2. 查看任务管理器:Settings → Task Manager
  3. 手动触发扫描:Settings → Libraries → Scan Now
  4. 查看容器日志:docker compose logs -f booklore

性能优化建议

定期清理

定期清理不需要的书籍和缓存:

# 进入容器
docker exec -it booklore bash

# 清理缓存
rm -rf /app/data/cache/*

扩展功能

阅读统计

Booklore 提供内置的阅读统计功能,可以查看:

  • 阅读时长
  • 已完成书籍数量
  • 阅读进度趋势

访问:StatisticsReading Stats

智能书架

创建动态书架自动组织书籍:

  1. 进入 Shelves
  2. 创建新书架,选择 Magic Shelf
  3. 设置规则(如:按标签、作者、系列分类)

多用户管理

为家庭成员创建独立账户:

  1. SettingsUsersAdd User
  2. 设置用户名、密码和权限
  3. 每个用户有独立的阅读进度和书签

总结

通过 Booklore 和 KOReader 的组合,你可以构建一个完整的个人数字阅读生态系统:

  • Booklore 作为中心枢纽,管理所有电子书和元数据
  • OPDS 提供标准的书籍分发协议,兼容各种阅读应用
  • KOReader 同步 确保在所有设备上的阅读进度保持一致

这种自建方案不仅保护了你的阅读隐私,还提供了比商业平台更好的用户体验。所有数据都在你的控制之下,无需担心平台关闭或服务条款变更。

开始构建你的数字图书馆吧!Happy Reading! 📚

Comments

Loading comments...
Home