最近群友说BookOrbit这个项目很火,就去项目主页看了下。
哦豁!电子书、漫画、有声书管理大一统了?威联通的集成App也即将推出,看样子大家都在不断进化。能火起来,是有原因的啊。
那我觉得,很有必要给大家分享一套完整搭建流程~
使用体验
不知不觉敲了三千多字,为了不浪费各位时间,这部分就放在前面。
支持电子书、有声书、漫画独立分类管理,首页集中展示继续阅读、阅读统计以及最近阅读内容,让个人数字书库更加直观。
%20%E6%8B%B7%E8%B4%9D.jpg)
书籍详情页支持展示封面、简介、标签、格式以及出版信息;阅读器支持字号调整、主题切换、背景颜色、排版布局等个性化设置。
%20%E6%8B%B7%E8%B4%9D.jpg)
除了查看书籍信息和播放时长,还可以快速进入章节列表,方便管理长篇有声内容。
%20%E6%8B%B7%E8%B4%9D.jpg)
支持睡眠定时、章节切换、智能续播、倍速播放以及快进快退调整,让碎片时间听书更加方便。
%20%E6%8B%B7%E8%B4%9D.jpg)
支持单册浏览和系列聚合查看,封面、章节以及作品信息集中管理,更适合长期收藏大量漫画资源。
%20%E6%8B%B7%E8%B4%9D.jpg)
支持分页、滚动以及 Webtoon 阅读方式,同时可以调整阅读界面和画布效果,适配不同类型漫画。
%20%E6%8B%B7%E8%B4%9D.jpg)
项目介绍
完整项目名:bookorbit/bookorbit。
BookOrbit 是一套自托管数字阅读平台,它并不只是做一个电子书书架,而是直接把电子书、PDF、漫画和有声书都塞进了一套系统里。EPUB、MOBI、AZW3、PDF、CBZ/CBR,以及 M4B、MP3、FLAC 等常见格式都能直接管理和阅读。
网页上看了一半的书,还可以继续在 Kobo 或 KOReader 上读;阅读进度、高亮和批注还能在几端之间同步。除此之外,它还塞进了阅读统计、目标、成就、OPDS、Send-to-Kindle、多用户这些功能。
而且现在已经原生支持简体中文和繁体中文,对国内 NAS 用户来说基本没有语言门槛。能火起来的原因。
项目特性
✅电子书、漫画、有声书大一统
常见电子书、PDF、漫画和有声书格式都可以放进同一套书库管理。
✅浏览器直接阅读
不用额外安装阅读器,打开网页就能看电子书、漫画、PDF,也可以直接听有声书。
✅阅读进度跨设备同步
支持 Kobo、KOReader 和 BookOrbit 之间同步阅读进度、高亮和批注。
✅阅读记录也能统一管理
自带阅读时长、连续阅读、目标、成就等统计,高亮和笔记还能统一搜索、导出。
✅不只是“看书”,书库管理也很完整
支持多书库、自动入库、元数据匹配、OPDS、Send-to-Kindle 和多用户管理。
部署流程
这次依旧以威联通 NAS 为例,通过 Container Station + Docker Compose 完成部署。
BookOrbit 本身需要搭配数据库使用,所以 Compose 内容会比普通单容器项目稍微长一点,不过实际部署并不复杂,基本还是复制配置、修改目录和密码后直接创建即可。
另外最开始群友在问.env的挂载读取问题。BookOrbit 官方方案确实是 docker-compose.yml + .env,数据库账号、密码、库名、JWT Secret、初始化 Token 等都从 .env 读取。为了不把部署复杂化,我就直接给全套了。
下面是本次使用的完整 Compose 配置:
services:
bookorbit:
image: ghcr.io/bookorbit/bookorbit:latest
container_name: bookorbit
restart: unless-stopped
init: true
ports:
- "3000:3000"
environment:
NODE_ENV: "production"
PORT: "3000"
# 数据库连接
POSTGRES_HOST: "postgres"
POSTGRES_PORT: "5432"
POSTGRES_USER: "bookorbit"
POSTGRES_PASSWORD: "bookorbit"
POSTGRES_DB: "bookorbit"
# 请修改为实际访问地址
APP_URL: "http://NAS_IP:3000"
CLIENT_URL: "http://NAS_IP:3000"
# 首次初始化需要
JWT_SECRET: "请修改为一段较长的随机字符串"
SETUP_BOOTSTRAP_TOKEN: "请修改为自己的初始化Token"
# 文件权限
PUID: "1000"
PGID: "1000"
# 书库选择器默认从 /books 开始
LIBRARY_BROWSE_ROOT: "/books"
depends_on:
postgres:
condition: service_healthy
volumes:
# 统一书库根目录,可包含不同类型内容,根据文件和元数据进行识别
# NAS的books下可分设漫画、书籍、有声书等更详细的子文件夹
- /share/Container/bookorbit/books:/books
- /share/Container/bookorbit/data/app:/data
read_only: true
tmpfs:
- /tmp
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
security_opt:
- no-new-privileges:true
stop_grace_period: 30s
postgres:
image: pgvector/pgvector:pg18
container_name: bookorbit-db
restart: unless-stopped
environment:
POSTGRES_USER: "bookorbit"
POSTGRES_PASSWORD: "bookorbit"
POSTGRES_DB: "bookorbit"
PGDATA: "/var/lib/postgresql/data/pgdata"
volumes:
- /share/Container/bookorbit/data/postgres:/var/lib/postgresql/data
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U bookorbit -d bookorbit"
]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
如果你想要用.env,请注意威联通的可用挂载方式。
env_file:
- /share/Container/bookorbit/.env
打开威联通的Container Station创建新的应用程序。

部署完毕后,浏览器输入NAS_IP:3180即可访问服务。初始化时,要注意最下面的「设置令牌」,一定要填写部署时配置的SETUP_BOOTSTRAP_TOKEN中的值。

创建书库
注册好后,便会自动登录,界面如下。先直接点击「创建您的第一个库」。

对库进行命名,以及选择库的显示图标。

接着选择该库需要挂载的目录,可快捷选择,也支持手动输入。

顺带给大家看看我这台测试NAS的目录安排,以及实际选择情况。

可以看到,跟我所挂载的/share/Media的子文件夹一致。

选择好之后继续下一步。
接着是选择扫描方式。「文件夹作为书」:一个文件夹 = 一个作品条目,里面的文件属于同一作品。「文件为 Book」:一个文件=一个作品条目。我在后续测试过后,给出如下建议:
- 电子书:选择「文件为 Book」
- 漫画:根据整理方式选择,CBZ/CBR 通常建议「文件为 Book」
- 有声书:如果一个作品包含多个音频文件,建议选择「文件夹作为书」
- 如果你的有声书直接是一个不分章节的完整文件,则仍然建议「文件为 Book」

因为不同类型作品,文件类型可能分的比较细致。例如漫画,就可以只勾选除了.cbz``.epub等漫画可识别格式,以防止库被污染。

接着是Metadata(本地元数据优先级) 设置,以及文件使用格式优先级(根据漫画/电子书/有声书种类不同执行调整)。「Embedded metadata」为文件内置信息,「OPF files」举个例子如通过 Calibre 生成的metadata.opf里面有更完整的信息。

继续。汉化还是不太完整。解释下图:阅读进度达到 0.25%,自动标记为正在阅读;阅读进度达到 98%,自动标记为已读完。

接着是设置自动检查新增书籍。

最后为元数据刮削。我的建议是都别开,保留原始电子书文件。

一些配置总结
为了提升你的阅读体验,一定要在控制台设置好各类作品的阅读配置,并如下图选择「我的账户」,这样所有设备的该账户都会统一阅读习惯!

大家前期可以创建库,简单添加些文件进行测试,不符合预期及时删除重建规则。毕竟整理到后期才发现某个地方不符合预期,是一件非常恶心的事儿。

元数据这块,实际测试下来,对中文用户最有帮助的应该还是 Google Books。毕竟它背后依靠 ISBN 体系检索,面对正规出版物时,数据完整度会比一些社区型数据库更可靠。
BookOrbit 虽然不是面向中文用户开发的项目(没有豆瓣/孔夫子这类中文书源),但中文出版物并不是完全没有覆盖。很多书籍会同步进入港台出版市场,繁体版本也会被 Google Books 收录,所以在匹配中文书籍时,除了简体书名,有时候尝试繁体名称、ISBN,反而更容易找到正确的封面和简介。

中文作品的ISBN、封面、作者、简介等元数据整理,目前还是 Calibre 更强!
左侧这个「设备与同步」,支持连接 Kobo、KOReader 等阅读设备,也提供 OPDS 书库访问。通过 OPDS,支持的阅读器可以直接访问 NAS 中的电子书,实现在线浏览和下载,不需要手动复制文件。对于国内 NAS 用户来说,OPDS + KOReader 可能是更实用的组合。

「账号」中的 Hardcover、Readwise、StoryGraph 等第三方阅读服务,同步阅读进度、评分以及笔记等数据。这部分作为扩展功能使用,国内用的太少太少。
另外,如果大家有字体冲突导致内容显示错误,还可上传补充字体包。

关于各个库
漫画、电子书/有声书的刮削原理通用,有声书其实也基本按照原书的作者简介封面等进行刮削。
以最麻烦的漫画为例吧。
这个软件比较难受的点在于漫画集。。。默认是独立单本,不会像Komga那样根据文件目录和命名自动组成系列,反而比较依赖元数据。

如下图,我点击折叠系列,仅有《地狱楽》进行了折叠。

折叠后,可在左侧「浏览」-「系列」中查看。


关键在于元数据的「系列」,要全部分卷统一,并打上匹配的卷号。

漫画(特指日漫,欧美我不咋看)的元数据刮削,可获取基本主要来源为下图这俩,更建议通过 ISBN 号搜索刮削。如果大家的自带,或者有已经刮好的元数据文件,直接上传那就最好了。

根据个人喜好,选择两者的刮削结果进行组合,最后申请到表单并保存即可。

封面标题等都可以再调整,满意之后,建议都锁上,以免出岔子。最后保存即可。

我将「狼と香辛料」刮削完毕后,也能成功合成系列,这样子观感便好了太多。


如果大家对最终调整结果满意,此时其实也可以选择在元数据编辑中点击「写入文件并重命名」。
关于有声书,请大家参照我之前说的建库流程「文件夹作为书」。NAS的文件如下。

很多封面是真的难找。。。尤其是网文。。。

可以看到播放显示的是总时长。

章节部分都能清晰显示,并且也会限时在总进度条中的节点位置。

效果还是非常不错的。
最后放一张电子书的列表展示,没啥好讲的了。

最后
因为是老外搓的AI项目,要做到真正符合国人口味可能还需要一定的时间,以及更多国内大佬的加入和打磨。
不过目前来说,体验还不错吧。
感谢观看,本文完。
评论区