一站式自托管阅读平台BookOrbit

一站式自托管阅读平台BookOrbit 简介什么是 BookOrbit BookOrbit是一个开源的自托管数字图书馆和阅读平台。它可以帮助你把散落在NAS、服务器或本地硬盘里的EPUB、PDF、漫画包和有声书整理成一个统一的阅读空间——内置多种格式阅读器、自动元数据补全、多用户权限管理还支持Kobo/KOReader同步和阅读统计分析。主要特点内置多格式阅读器无需额外安装插件直接在浏览器中阅读EPUB、KEPUB、MOBI、AZW3、PDF、CBZ/CBR/CB7漫画以及M4B/MP3/FLAC等有声书丰富的元数据来源支持从Google Books、Amazon、Goodreads、Open Library、iTunes、Audible、ComicVine等9个来源自动抓取书籍元数据可自定义字段规则智能书架与集合支持手动收藏和基于规则的Smart Scopes动态过滤视图让书架管理更灵活Kobo/KOReader 同步自动推送书籍到Kobo设备通过OPDS与KOReader实现双向阅读进度同步多用户与 OIDC/SSO支持细粒度权限控制、独立的阅读数据隔离可对接Authentik、Keycloak、Authelia等身份认证提供商阅读统计与分析每日阅读时间统计、热力图、连续阅读记录、阅读目标追踪和书库健康仪表盘开源免费基于AGPL-3.0协议开源可免费使用和修改应用场景个人数字书库管理将分散在各处的电子书集中管理自动补全封面、作者、简介等元数据家庭共享阅读为家庭成员创建独立账号各自管理阅读进度和书架互不干扰Kobo/Kindle 用户通过OPDS推送到Kobo设备支持Send-to-Kindle邮件投递有声书管理支持M4B、MP3、FLAC等格式内置浏览器端有声书播放器开发者测试开发人员可以快速搭建测试环境体验完整的自托管阅读平台功能BookOrbit是一个功能全面的一站式自托管阅读平台将电子书管理、多格式阅读、元数据补全和多用户协作整合在一起。安装在群晖上以 Docker 方式安装。提示BookOrbit的镜像托管在ghcr.io群晖Docker套件无法直接搜索需要通过命令行拉取镜像BookOrbit采用多容器架构应用 PostgreSQL数据库推荐使用docker-compose进行部署。env.txt老苏用AI翻译了一下 https://github.com/bookorbit/bookorbit/blob/main/.env.example 中的注释# 运行的 Docker 镜像。为更严格的部署请固定为 sha-* 标签或 sha256 摘要。 APP_IMAGEghcr.io/bookorbit/bookorbit:latest # 主机上应用公开的端口 APP_PORT3622 # 主机上在容器内映射为 /books 的文件夹。 # 将其指向你的图书馆根目录在 NAS 或 Portainer 安装中请使用绝对路径。 BOOKS_HOST_PATH./books # 可选Book Dock 投放区在主机上的文件夹在容器内映射为 /data/book-dock。 # 将电子书复制或移动到此处Book Dock 会自动拾取并处理它们。 # 如果未设置投放文件夹位于 ./data/app/book-dock默认应用数据卷内。 # 在挂载 NAS 共享或使用应用数据目录之外管理的文件夹时请使用绝对路径。 # BOOK_DROP_HOST_PATH/mnt/nas/book-drop # 容器运行时写入应用管理的数据文件夹时使用的 UID/GID。 # 大多数用户可保留这些默认值。 PUID1000 PGID1000 # 数据库凭据 POSTGRES_USERbookorbit POSTGRES_PASSWORDchange-this-password POSTGRES_DBbookorbit # 应用密钥 JWT_SECRETchange-this-to-a-long-random-secret # 用于初次调用 /auth/setup 端点x-setup-token 请求头的必需项 SETUP_BOOTSTRAP_TOKENchange-this-to-a-long-random-secret # 用于电子邮件和 Kobo 端点的外部/公共 URL APP_URLhttps://bookorbit.example.com # Node.js JavaScript 堆内存上限单位为 MB。对于非常大的图书库请提高该值。 NODE_MAX_OLD_SPACE_SIZE2048 # --- 可选覆盖项取消注释以设置 --- # 如果你已经运行自己的 PostgreSQL请设置 DATABASE_URL 并从 docker-compose.yml 中移除 postgres 服务。你的实例必须启用 # uuid-ossp、pg_trgm 和 vector (pgvector) 扩展。 # DATABASE_URLpostgres://user:passwordyourhost:5432/bookorbit # 或者分别设置各个字段POSTGRES_HOST、POSTGRES_PORT、POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB # 客户端前端在与 APP_URL 不同域名下提供服务时的 CORS 来源 # CLIENT_URLhttps://app.example.com # 仅在你的平台外部管理绑定挂载所有权时将其设置为 false。 # BOOKORBIT_FIX_PERMISSIONStrue # 如果你存储 SMTP 提供商凭据建议设置生成方法openssl rand -hex 32 # EMAIL_ENCRYPTION_KEY # 如果你存储迁移源凭据建议设置生成方法openssl rand -hex 32 # MIGRATION_ENCRYPTION_KEY # 日志级别默认info。设置为 debug 可输出详细日志。 # LOG_LEVELinfo # 允许解析到私有/本地域名的 OIDC issuer/discovery URL。 # 默认 false。仅在受信任的自托管网络中启用。 # OIDC_ALLOW_LOCAL_ISSUERSfalse # 可选在使用自动设置时允许 Cloudflare Web Analytics 信标。 # 保持不设置或 false 可保留严格的内容安全策略CSPscript-src self。 # CSP_ALLOW_CLOUDFLARE_INSIGHTSfalse下面是一个简单的示例# 应用设置 APP_IMAGEghcr.io/bookorbit/bookorbit:latest APP_PORT3622 BOOKS_HOST_PATH./books # UID/GID PUID1000 PGID1000 # 数据库凭据 POSTGRES_USERbookorbit POSTGRES_PASSWORDbookorbit123 POSTGRES_DBbookorbit # 应用密钥可以用 openssl rand -hex 32 生成 JWT_SECRETbf7dd22b68918a7a0044d0ec115c1f930e53de49d97a091c017fcd9318751100 # 用于初次调用 /auth/setup 端点x-setup-token 请求头的必需项 SETUP_BOOTSTRAP_TOKENadde1f95b500d897e64bbf12198a4b2f9b426bac9162eb5c7edbeaff9d648f57 # 用于电子邮件和 Kobo 端点的外部/公共 URL APP_URLhttp://192.168.0.197:3622 # Node.js JavaScript 堆内存上限单位为 MB。对于非常大的图书库请提高该值。 NODE_MAX_OLD_SPACE_SIZE2048说明SETUP_BOOTSTRAP_TOKEN用于首次安装时的身份验证安装完成后可以移除以禁用设置向导入口。docker-compose.yml下面是完整的docker-compose.yml配置已添加中文注释保存时记得采用UTF-8格式version:3.8services:app:image:${APP_IMAGE}container_name:bookorbit-apprestart:unless-stoppedinit:trueenv_file:-env.txtports:-${APP_PORT}:${PORT:-3000}environment:NODE_ENV:productiondepends_on:postgres:condition:service_healthyvolumes:-./books:/books# 电子书存放目录-./data/app:/data# 应用数据目录-./data/app/book-dock:/data/book-dock# 自动摄入目录read_only:truetmpfs:-/tmpcap_drop:-ALLcap_add:-CHOWN-DAC_OVERRIDE-FOWNER-SETGID-SETUIDsecurity_opt:-no-new-privileges:truestop_grace_period:30shealthcheck:test:[CMD-SHELL,node-e fetch(http://127.0.0.1:(process.env.PORT||3000)/api/v1/health).then(rprocess.exit(r.ok?0:1)).catch(()process.exit(1)),]interval:30stimeout:5sretries:3start_period:20spostgres:image:pgvector/pgvector:pg16container_name:bookorbit-dbrestart:unless-stoppedenvironment:POSTGRES_USER:${POSTGRES_USER}POSTGRES_PASSWORD:${POSTGRES_PASSWORD}POSTGRES_DB:${POSTGRES_DB}PGDATA:/var/lib/postgresql/data/pgdatavolumes:-./data/postgres:/var/lib/postgresql/data# 数据库持久化healthcheck:test:[CMD-SHELL,pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}]interval:10stimeout:5sretries:10start_period:20s然后通过SSH登录到您的群晖执行下面的命令# 新建文件夹 bookorbit 和 子目录mkdir-p/volume1/docker/bookorbit/{books,data/{app/book-dock,postgres}}# 进入 bookorbit 目录cd/volume1/docker/bookorbit# 将 docker-compose.yml 放入当前目录# 一键启动docker-compose--env-file env.txt up-d运行在浏览器中访问http://群晖IP:3622即可进入设置界面创建管理员账号其中Setup Token的值为你在env.txt中设置的SETUP_BOOTSTRAP_TOKEN进入主界面有设置向导进行功能说明创建书库创建你的书库设置书库名称配置书库目录指向/books点Add添加即可选择扫描的模式老苏选择了File as BookBookOrbit支持的格式还是很多的其他按需要进行设置。如果你已经上传了图书会看到扫描的进度扫描速度还是很快的也可以直接体验官方 Demo访问 https://demo.bookorbit.app 无需安装即可体验全部功能。OPDS进入Settings--OPDS可以找到端点点Add添加OPDS的账号和密码以静读天下为例确定之后会弹出账号和密码输入框认证通过之后就可以浏览了注意事项数据持久化./books目录存放你的电子书文件./data/postgres存放数据库建议定期备份这两个目录端口冲突如果3000端口已被占用可以在env.txt中修改APP_PORT3622文件权限如果遇到文件权限问题可以在env.txt中调整PUID和PGID为你的用户ID大书库优化如果书库非常大可以在env.txt中增加NODE_MAX_OLD_SPACE_SIZE4096来提升Node.js内存限制安全建议生产环境建议配置反向代理如Nginx并启用HTTPS安装完成后建议移除SETUP_BOOTSTRAP_TOKEN参考文档BookOrbit: Your Reading Space地址https://github.com/bookorbit/bookorbitBookOrbit 官方网站地址https://bookorbit.appGHCR 镜像页面地址https://ghcr.io/bookorbit/bookorbitBookOrbit 安装文档地址https://bookorbit.app/installation.html