首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

Bookshelf – 在对象存储上运行的自托管电子书库

2026-08-25 1 阅读 约8分钟阅读 arbayi
分享:
字号:
一个用于存放您已拥有的电子书的自托管图书馆。一个服务器渲染的页面列出了它们,使用搜索框过滤它们,提供下载服务,并在浏览器中读取它们 - EPUB 和 PDF,每个都有自己的阅读器 - 作为 R2 上的 Cloudflare Worker,或作为磁盘目录上的 Node 服务器。上面的所有内容都是 npm run demo - 一个生成的公共域标题书架,因此可以在不先找到书籍的情况下复制屏幕截图。 Node 24 或更新版本以及类 Unix 系统:同步工具使用 which 查找其图像工具,因此不支持 Windows。安装了 cwebp 和 pdftoppm 后,封面效果会更好 - 请参阅发布,或使用 Docker,它同时提供这两个版本。 git clone https://github.com/murerkinn/bookshelf.git cd bookshelf npm install 将一些书籍(EPUB 或 PDF)放入 books/ 中,然后选择图书馆应存放的位置。最短路径,图像自带 cwebp 和 pdftoppm,因此无需在主机上安装任何内容即可直接使用封面。 mkdir books && cp ~ /Downloads/ * .epub books/ docker compose run --rmsync --create docker compose up -d 书架位于 http://localhost:3000 。标志会通过,因此 docker compose run --rmsync --force 和 --dry-run 的行为与本地相同。一个名为“图书馆”的卷包含已出版的书籍以及应用程序写入的所有内容(配置文件和阅读位置),因此它是唯一需要备份的内容。该镜像是为文件系统提供商构建的:它是一个 Node 服务器,并且 Cloudflare 不需要容器。它以非 root 用户身份运行,并创建该用户拥有的 /data,以便命名卷继承应用程序可以写入的所有权。如果您想绑定挂载主机目录,请先 chown 它: chown -R 1000:1000 /srv/bookshelf 在您拥有的机器上,没有 Docker 任何地方都没有帐户。将 bookshelf.config.json 指向某个目录,发布到其中,然后运行应用程序: npm runsync -- --create # builds library/,然后将其发布到 shelf-data/ npm run build npm start -w @bookshelf/app library/ 是同步工具构建的树;目录是它发布的地方,它保存着正在提供服务的书籍。将其保留在存储库之外——shelf-data/ 已经是了。需要 Cloudflare 帐户和 npx wrangler 登录名。两个签入的文件带有该项目自己的存储桶和 Worker 名称,并且需要进行编辑 - 请参阅 R2 提供程序。 npm runsync -- --create # 创建存储桶,然后上传到其中 npm run deploy 两者必须就哪个存储桶保存库达成一致,否则应用程序将提供一个空架子。在上传任何内容之前,都会对它们进行相互检查,并报告不匹配的情况,而不是通过发布。手头没有书,或者想要一些值得截图的东西?九个生成的公共域标题 - 八个 EPUB 和一个 PDF,因此两个读者都可以从书架上单击一下 - 不下载任何内容: npm run demo # 将它们写入书籍/然后通过上述任一途径发布和服务。标题和作者都是长期不受版权保护的真实作品,所以它们的架子看起来就像一个架子;里面的散文是占位符。请注意,此存储库中的配置指向 R2,因此 npm runsync 会转到那里,除非您更改它。任何陌生人可以访问的内容都应该拒绝更改:存储保持服务并停止接受。无法添加、重命名或删除配置文件,并且读取位置会返回到浏览器中 - 与无法写入的提供者的降级相同,因为对于应用程序来说,情况是相同的。现有配置文件之间的切换仍然有效;那是一个 cookie,而不是更改。它是在写入时强制执行的,而不是通过隐藏表单来执行,因此直接发布操作也会遭到同样的拒绝。没有认证。任何可以访问该应用程序的人都可以阅读和下载整个库,因此请将其放在您信任的网络上或位于询问谁来电的地方。请参阅尚未完成。所有这些都从存储库根运行; Turborepo 首先构建任务所依赖的任何内容。 npm run dev # 本地开发服务器,针对本地 R2 存储桶 npm runsync # 构建库并将其上传到存储桶 npm run build # 构建每个工作区 npm run check-types # 对每个工作区进行类型检查 npm run Preview # 构建 + 在本地运行 Worker npm run deploy # 构建 + 部署到 Cloudflare Workers npm test # 测试套件 npm run lint # biome,跨存储库 npm run cf-typegen -w @bookshelf/app编辑 wrangler.jsonc 后重新生成 cloudflare-env.d.ts 。发布库 同步工具、其标志和覆盖 库的格式 最终在存储桶中的内容,以及为什么它是可再生的 存储提供者 合同,以及两个交付的库各自可以做什么 Cloudflare R2 配置、部署、本地发布 在您自己的计算机或 VPS 上运行它的文件系统 正在阅读的配置文件,以及他们在哪里 在浏览器中阅读 章节如何到达页面 架构端口、适配器和组合根 演示库 如何构建公共架子,以及如何重建它没有认证。知道该 URL 的任何人都可以阅读并下载
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱