电子书必备,NAS部署BookOrbit,多终进度统一无缝观看
为什么我们需要一个自托管的数字图书馆?因为不同设备间同步阅读进度、整理成百上千本电子书实在太折腾了。之前的我,为了在手机、Kobo和电脑之间保持阅读一致,要么用云盘手动上传下载,要么忍受各类阅读APP的格式限制,封面简介全靠手动补全,效率低得令人抓狂。
直到今天我看到一个新项目,BookOrbit——一款免费开源的自托管数字图书馆平台,它就像一位全能图书管理员,不仅能收纳电子书、PDF、漫画、有声书等几乎所有格式,还自带影视库般的“刮削”技能,自动从多个来源为书籍抓取封面、简介和作者信息,瞬间让杂乱的书库变得赏心悦目。移动端更是惊喜,除了标准Web界面,还能与Kobo设备和KOReader APP双向同步,阅读进度和标注无缝跨设备互通,彻底告别“看到哪页忘了”的尴尬。
跟市面上其他阅读方案不一样的是,BookOrbit内置了多用户支持、OIDC/SSO登录、详尽阅读统计、OPDS订阅、可自定义仪表盘、Kindle一键推送以及Smart Scopes智能书架等一大堆硬核功能,几乎满足了我对个人书库的所有幻想。平时我不用的时候,直接把它挂在NAS上跑,所有数据本地存储,隐私安全完全自己掌控。
唯一的遗憾是目前仅支持英文——不过我在项目的Issues里看到已经有不少用户在催多语言,作者也明确回复说项目尚新,优先修复BUG和完善核心功能,多语言后期会考虑。按这个节奏,中文原生支持应该不会太远。所以趁现在,赶紧去GitHub给作者点个Star,助力项目加速迭代吧!

关于BookOrbit

🔺什么是BookOrbit?BookOrbit能做什么?
BookOrbit 是一个自托管的数字图书馆与阅读同步平台,利用 Docker 容器和本地存储实现多设备阅读数据的高效融合。
简单来说,BookOrbit 就像一个替你“打理所有电子书和阅读痕迹”的私人图书管理员。它本身不是云存储服务,而是一套运行在你 NAS 或服务器上的完整系统,让你所有设备上的阅读进度、标注和藏书都汇聚到同一个屋檐下。你只需把 EPUB、PDF、漫画或有声书丢进指定文件夹,它就能自动刮削封面和简介;在 Kobo 阅读器、KOReader App 或网页端随意翻开一本书,进度和划线都会实时双向同步,真正做到“拿起哪台设备都能接着看”。
威联通Container Station安装BookOrbit教程
BookOrbit的安装和使用相对来说比较简单,使用 Docker 就可以直接安装。
内存占用大概 500MB 左右,所以大家无需担心资源占用,基本上可以忽略不记,甚至在树莓派上面也可以跑。

🔺BookOrbit 需要目录来持久化保存配置文件和数据库,防止容器重建后数据丢失。
在File Station文件总管中,于/Container目录下新建一个名为BookOrbit的文件夹(路径建议为/Container/BookOrbit),这是存放yaml文件的位置。

🔺BookOrbit 官方推荐的 Docker 镜像是ghcr.io/bookorbit/bookorbit:latest。建议去作者的主页把docker compose yaml的文件复制下来让AI帮你修改适配一下威联通的NAS。我已经帮你们修改完了,内容如下:
name: bookorbit
services:
app:
container_name: bookorbit-app
image: ghcr.io/bookorbit/bookorbit:latest
restart: unless-stopped
init: true
ports:
- "3400:3400"
environment:
NODE_ENV: production
PORT: 3400
DATABASE_URL: postgresql://bookorbit:your_password@postgres:5432/bookorbit
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
POSTGRES_USER: bookorbit
POSTGRES_PASSWORD: your_password # ⚠️ 修改
POSTGRES_DB: bookorbit
JWT_SECRET: your_jwt_secret_here # ⚠️ 修改
SETUP_BOOTSTRAP_TOKEN: your_bootstrap_token # ⚠️ 修改
APP_URL: http://192.168.1.100:3400 # ⚠️ 修改
CLIENT_URL: http://192.168.1.100:3400 # ⚠️ 修改
PUID: 1000 # ⚠️ 根据你的用户ID调整
PGID: 100
NODE_MAX_OLD_SPACE_SIZE: auto
BOOK_DOCK_PATH: ""
LIBRARY_BROWSE_ROOT: ""
depends_on:
postgres:
condition: service_healthy
volumes:
# 书籍目录(绝对路径,请修改为你的实际书籍文件夹)
- /share/Public/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
healthcheck:
test:
[
"CMD",
"node",
"-e",
"const p=process.env.PORT||3400;fetch('http://127.0.0.1:'+p+'/api/v1/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
postgres:
container_name: bookorbit-db
image: pgvector/pgvector:pg18
restart: unless-stopped
environment:
POSTGRES_USER: bookorbit
POSTGRES_PASSWORD: your_password # ⚠️ 必须与上面一致
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
配置说明:
image: 使用了BookOrbit的官方镜像。
ports: 将容器内部的 3400 端口映射到NAS的3400端口。如果你希望更换访问端口,可以修改3400这个数值,但请注意不要与其他服务冲突。
restart: unless-stopped: 容器将在意外停止时自动重启,并跟随Docker服务一起启动。

打开 Container Station。
点击左侧「应用程序」→ 点击「创建」。
在弹出窗口中:
将上面第三步中的 docker-compose.yml 完整内容粘贴到编辑框中。
点击「验证 YAML」检查语法无误。
点击「创建」,Container Station 会自动拉取镜像并启动容器。
部署完成后,在「应用程序」列表中会出现BookOrbit,状态为“运行中”。
检查一下运行状态:
部署完成后,可以通过以下方式确认服务正常:
打开浏览器,访问http://你的威联通NAS的IP地址:3400。
如果看到BookOrbit 的 Web 界面,说明部署成功。
当然,如果你跟我一样遇到网络问题,你也可以下载tar文件再本地安装。

启动之后,在浏览器中访问 http://<威联通IP>:3400 即可进入设置界面,创建管理员账号
其中 Setup Token 的值为你在 env.txt 中设置的 SETUP_BOOTSTRAP_TOKEN
设置好你的账户密码之后就可以用了。
BookOrbit能干什么?为什么我会觉得它值得装?
第一,易用性超高的界面

🔺BookOrbit比较好的一点是,它自己提供了非常直观的管理界面,这样的话,你在任意一台电脑上想看小说的时候,就不用苦哈哈给这台电脑再登录你的正版的账号,或者联网之后去打开满是病毒的盗版网页,你需要做的只是打开BookOrbit的网页,然后登录打开页面开始看就行。

🔺BookOrbit安装好之后是要自己指定一个本地文件夹来做源的,我是自己之前就积累了一堆本地的pdf的书,所以直接把它指定到我本地的文件夹就行了。

🔺再配置书库目录,指向 /books,点 Add 添加即可

🔺选择扫描的模式,我选择了 File as Book,BookOrbit 支持的格式还是很多的。

🔺记得提前把你的书都存到books文件夹下面。

🔺最后选择自动更新扫描模式选个每日自动扫描,这样你新加进去的书就不用手动更新了。其他按需要进行设置。如果你已经上传了图书,会看到扫描的进度。

🔺如果你懒得远程进文件夹后台管理,你也可以跟我一样直接新建好书架之后在网页端传pdf的书上去,它就自动更新归类了。在线传输的话,是可以做到多个文件同时选中传输的。
第二,怎样连接到手机用OPDS呢?
这是我最看重的一点。BookOrbit的核心思路是:成为你的书源。

🔺BookOrbit进入 Settings –> OPDS 可以找到端点,我在自己基于zerotier网络上的另外一台手机上打开OPDS,就可以获取自己的OPDS 的账号和密码。

🔺以 静读天下 为例,确定之后,会弹出账号和密码输入框,认证通过之后,就可以浏览了。

🔺然后你就可以安安心心在手机上看你在NAS里的书了,并且还是用的你自己的手机的APP。
注意事项
数据持久化:./books 目录存放你的电子书文件,./data/postgres 存放数据库,建议定期备份这两个目录
端口冲突:如果 3400 端口已被占用,可以在 env.txt 中修改 APP_PORT=3622
文件权限:如果遇到文件权限问题,可以在 env.txt 中调整 PUID 和 PGID 为你的用户 ID
大书库优化:如果书库非常大,可以在 env.txt 中增加 NODE_MAX_OLD_SPACE_SIZE=4096 来提升 Node.js 内存限制
安全建议:生产环境建议配置反向代理(如 Nginx)并启用 HTTPS;安装完成后建议移除 SETUP_BOOTSTRAP_TOKEN
要注意的是:OPDS 主要用于第三方阅读器浏览和下载书籍,不代表所有 OPDS 客户端都能同步阅读进度。BookOrbit 的进度同步重点是网页端、Kobo 和安装插件后的 KOReader。
结语
BookOrbit是一款功能强大且易于使用的网络在线图书阅读工具,和以往的图书阅读工具相比,我现在用 BookOrbit 可以享受到最佳的阅读体验。BookOrbit 是利用nas和浏览器之间的直接连接来实现高效、安全的数据交换的。
如果你跟我一样家里的内网已经是全2.5G速率,那你完全可以利用BookOrbit把家里的各种设备的文件交互做到顶着内网的速率上限去实现多端统一看小说的体验。
如果你想看更多 NAS、自托管Docker等相关玩法,也欢迎继续关注。没写过的内容,也可以评论区留言交流。
本篇就到这里,我们下篇再见。
