Bookshelf 

2个月前发布 122 00

Bookshelf 是一个轻量级、开源的自托管电子书库解决方案。它摒弃了传统复杂的数据库架构,直接将 EPUB 和 PDF 文件存储在对象存储(如 Cloudflare R2)或本地文件系统中。用户只需将书籍放入指定文件夹,即可通过浏览器在线阅读,或通过 OPDS 目录在 Kobo 等电子阅读器上同步阅读。

所在地:
美国
收录时间:
2026-08-31
Bookshelf Bookshelf 

Bookshelf 是一个轻量级、开源的自托管电子书库解决方案。它摒弃了传统复杂的数据库架构,直接将 EPUB 和 PDF 文件存储在对象存储(如 Cloudflare R2)或本地文件系统中。用户只需将书籍放入指定文件夹,即可通过浏览器在线阅读,或通过 OPDS 目录在 Kobo 等电子阅读器上同步阅读。

Bookshelf 

核心亮点

  • 零数据库架构:无需安装 MySQL 或 PostgreSQL,数据直接以文件形式存储,备份与迁移极其简单。
  • 灵活部署:
    • Cloudflare Worker + R2:低成本、高可用的云端方案,适合公开或半公开分享。
    • 本地 Node.js/Docker:完全私有化部署,适合个人家庭服务器(NAS)。
  • 多端阅读支持:
    • Web 阅读器:内置基于浏览器的阅读器,支持 EPUB 和 PDF。
    • OPDS 集成:生成标准 OPDS 目录,完美兼容 Kobo、Calibre 等主流阅读设备与应用。
  • 极速同步:提供高效的同步工具,自动处理封面生成、元数据提取及文件上传。

快速开始

1. 一分钟试用 (本地演示)

需要 Node 24+ 及类 Unix 系统(不支持 Windows)。

git clone https://github.com/murerkinn/bookshelf.git
cd bookshelf
npm install
npm run demo

npm run demo 会自动生成 9 本公有领域书籍(8 本 EPUB + 1 本 PDF)并启动本地服务。

2. Docker 部署 (推荐)

最简单且自带封面生成工具的部署方式。

mkdir books && cp ~/Downloads/*.epub books/
docker compose run --rm sync --create
docker compose up -d

访问 http://localhost:3000 即可查看书库。

3. 本地 Node.js 部署

修改 bookshelf.config.json 使用文件系统提供者:

{ "storage": { "provider": "fs", "directory": "shelf-data" } }

然后运行:

npm run sync -- --create
npm run build
npm start -w @bookshelf/app

4. Cloudflare R2 部署

编辑配置文件指向您的 R2 存储桶和 Worker,然后运行:

npx wrangler login
npm run sync -- --create
npm run deploy

重要安全提示

  • 无身份验证:默认情况下,任何能访问书库地址的人都可以下载所有书籍。建议将其部署在受信任的内网中,或通过反向代理添加身份验证层。
  • 无加密存储:书籍以明文存储,文件名经过拼音化处理。若需隐私保护,建议使用加密卷或在文件系统提供者基础上增加访问控制。
  • 并发写入冲突:若多设备同时使用同一配置阅读,阅读进度以最后写入为准。

配置概览

环境变量作用
BOOKSHELF_READ_ONLY设为 1 时禁止写入操作,适合公共只读环境。
BOOKSHELF_PROVIDER覆盖构建时使用的存储提供者(如 fs 或 r2)。
BOOKSHELF_DIRECTORY指定文件系统提供者查找书籍的目录。
BOOKSHELF_SITE_URL设置公共访问地址,用于生成正确的预览链接。

相关导航