Grimmory 是一款开源自托管数字图书馆,是 Booklore 的社区分支。内置阅读器支持 EPUB/PDF/漫画,内嵌批注和高亮追踪,自动从 Google Books 抓取元数据,支持 Kobo 设备同步与 Kindle 推送,Docker 一键部署,AGPL-3.0 完全免费。

🎤 引言

Calibre-Web、Readarr、Bookshelf……自托管电子书方案一搜一大把,但大多数偏向"书库管理",阅读体验、批注同步、硬件设备联动做得并不好。

Grimmory 是 Booklore 的社区独立分支,GitHub 3.5k stars、241 forks,定位是"认真对待阅读的人的自托管数字图书馆"。支持漫画(CBZ/CBR)、EPUB、PDF、内嵌阅读器带批注和高亮、阅读进度追踪;设备联动方面支持 Kobo 硬件同步和 Kindle 一键推送;部署全靠 Docker,三行命令跑起来。


⭐ 核心功能

📚 格式支持

Grimmory 支持的格式覆盖主流电子书和漫画:

类型格式
电子书EPUB, MOBI, AZW, AZW3, FB2
文档PDF
漫画CBZ, CBR, CB7
有声书M4B, M4A, MP3, OPUS

基本上囊括了个人数字阅读会遇到的全部格式,不用转格式直接导入。

🖥 内置阅读器

阅读体验是 Grimmory 的亮点:

  • 浏览器内阅读:不用下载到本地,直接在网页端打开 EPUB/PDF/漫画
  • 批注与高亮:阅读时随手划线标注,支持高亮颜色分类
  • 阅读进度追踪:自动记录看到第几页,关掉再打开从断点继续
  • 阅读进度多设备同步:Kobo 设备或 KOReader 上读一半,手机打开网页版无缝衔接

🔍 元数据自动抓取

手动给每本书填信息太累,Grimmory 支持从以下来源自动抓取:

  • Google Books:封面、简介、作者、出版社
  • Open Library:更全的图书馆数据
  • Amazon:商品详情(部分地区可用)

抓取后元数据全部可编辑,手动微调完全自由。

📂 Smart Shelves 与 BookDrop

Smart Shelves 是 Grimmory 的智能书架功能,支持:

  • 规则过滤(按格式、语言、作者、标签)
  • 全文搜索
  • 动态书架:满足条件的书自动归入,书库更新后书架内容跟着变

BookDrop 是"甩进去就完事"的懒人功能:

  1. 把书扔进监控文件夹
  2. Grimmory 自动识别格式、提取元数据、排队等待导入
  3. 你去后台看一眼,确认导入

整个流程自动化,批量导书省心。

📡 设备同步与推送

  • Kobo 设备同步:Grimmory 内置 Kobo 官方 sync 协议,接入后阅读进度和批注自动双向同步
  • OPDS 兼容:任何 OPDS 协议的阅读 App 都能连接 Grimmory 获取书库
  • KOReader 同步:KOReader 用户也能接入
  • Kindle 推送:一键把书推送到 Kindle 邮箱,格式自动转换(EPUB → MOBI/AZW3)

👥 多用户支持

Grimmory 支持多账号,每个用户有:

  • 独立书架
  • 独立阅读进度
  • 独立偏好设置

认证方式支持本地账号和 OIDC(OpenID Connect),适合家庭或小团队搭建共用书库。


📥 安装使用

Docker Compose 部署(推荐)

Step 1:创建目录

mkdir grimmory && cd grimmory

Step 2:编写 .env

APP_USER_ID=1000
APP_GROUP_ID=1000
TZ=Etc/UTC
DATABASE_URL=jdbc:mariadb://mariadb:3306/grimmory
DB_USER=grimmory
DB_PASSWORD=ChangeMe_Grimmory_2025!
API_DOCS_ENABLED=false
DISK_TYPE=LOCAL
MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!
MYSQL_DATABASE=grimmory

Step 3:编写 docker-compose.yml

services:
  grimmory:
    image: grimmory/grimmory:latest
    container_name: grimmory
    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}
      - API_DOCS_ENABLED=${API_DOCS_ENABLED}
      - DISK_TYPE=${DISK_TYPE}
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "6060:6060"
    volumes:
      - ./data:/app/data
      - ./books:/books
      - ./bookdrop:/bookdrop
    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
    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 4:启动

docker compose up -d

打开 http://localhost:6060,创建管理员账号,开始建库。

BookDrop 配置(懒人导入)

docker-compose.yml 的 volumes 里加上:

volumes:
  - ./bookdrop:/bookdrop

然后把书扔进 bookdrop 文件夹,等着就行。


🎯 适用场景

  • 家庭共用书库:多用户各看各的,进度互不干扰,Kindle 推送功能给老人小孩用方便
  • 漫画收藏爱好者:CBZ/CBR 直接导入,内置阅读器支持放大缩小,整理比 Calibre 更适合亚洲读者
  • Kobo 深度用户:Kobo 官方 sync 协议支持,批注直接同步到 Grimmore 网页端
  • 技术向阅读者:有 API 文档(API_DOCS_ENABLED=true),可以二次开发或集成到其他工具
  • 有声书爱好者:M4B/MP3/OPUS 有声书支持,有声书党的需求也能覆盖

🔍 对比/替代方案

工具阅读器设备同步KoboKindle多用户协议
Grimmory✅ OPDSAGPL-3.0
Calibre-WebGPL-3.0
Readarr✅ Radarr 生态MIT
Kavita✅ OPDSGPL-3.0
Booksonic✅ (音频)GPL-3.0

Grimmory 最大的差异化是 Kobo 官方 sync + Kindle 推送,这在同类开源项目里很少见。Calibre-Web 轻量但功能少;Kavita 更偏漫画和多媒体;Grimmory 是综合体验最均衡的方案。


⚠️ 注意事项

  • 需要 Docker:没有 Docker 基础的用户部署门槛略高,但文档写得很清楚,照抄就行
  • AGPL-3.0:基于此协议修改代码需要开源,如果拿来商业使用注意合规
  • Kobo sync 需要官方固件:部分越狱/修改版固件可能不兼容
  • 不支持 WebDAV:目前没有 WebDAV 导出,对习惯用 NAS 做书库的人不够友好
  • 没有内置格式转换:Kindle 推送时 Grimmory 会自动转换格式,但本地若有 EPUB→PDF 需求还是要靠 Calibre 预处理

✅ 总结

Grimmory 是那种"上手之后就不想换"的工具——Docker 装好、书扔进去、Kobo 连上,一套流程走完很舒服。

优点

  • Kobo + Kindle 设备联动完整,阅读进度和批注无缝同步
  • BookDrop 懒人导入,全自动元数据抓取
  • 内置阅读器支持批注高亮,浏览器直接看不用开 App
  • 支持漫画格式 CBZ/CBR,有声书格式 M4B/MP3
  • 社区活跃(Discord + Weblate 翻译),不是僵尸项目

缺点

  • Docker 部署对纯新手有门槛
  • AGPL-3.0 协议修改代码要开源
  • 没有 WebDAV
  • 不支持自动格式转换

适合谁:有 Kobo 设备、想要多设备同步批注、习惯自托管的技术用户。
不适合谁:纯小白用户(Calibre-Web 更简单),不需要设备联动的人。

GitHub:https://github.com/grimmory-tools/grimmory,官网 https://grimmory.org/,有中文文档。