受够了网文 App 的广告和书源失效?这款 Rust 写的自托管神器reader,把 Legado 搬进了 Docker!缩略图
DISCOVER SOMETHING GOOD

reader

reader 把 legado 的书源规则搬进一个 Rust 单容器:多源并发搜索、换源、整书缓存、离线词典、TTS 朗读,全部跑在自己的机器上,不依赖第三方账号或云服务。对外只有一个端口,反代、域名、公网 IP 都不是必需的。

GitHub 仓库

平时看网文,你是不是也经历过这些“高血压”瞬间:

免费的 App 满屏都是“摇一摇”广告,看一章弹三次;

付费的 App 各种“本章说”和花里胡哨的社交功能,越做越臃肿;

好不容易用上 Android 的神器 Legado(阅读),却只能在手机上折腾,想在电脑或平板上看,进度死活同步不过去;而且一旦手机换机,辛苦找的书源和书架瞬间灰飞烟灭。

如果你也想拥有一个纯净、跨端、且数据永远属于自己的阅读体验,今天必须给你安利一款堪称 “自托管界天花板” 的开源项目——reader。

它用极其硬核的 Rust 语言重写,把 Legado 强大的书源规则引擎搬进了一个 Docker 单容器里。你的书源、你的书架、你的阅读进度,全部死死锁在你自己的机器上!

受够了网文 App 的广告和书源失效?这款 Rust 写的自托管神器reader,把 Legado 搬进了 Docker!插图

1. 核心杀器:Legado 规则引擎的“Web 化”

reader 最让人兴奋的地方,在于它完美兼容 Legado 的书源规则。

它内置了强大的规则引擎,支持 CSS、JSONPath、XPath、正则表达式甚至 JS 沙箱。那些在 Legado 里用 @put / @get 贯通搜索到正文的高级变量玩法,它全都支持。

  • 📚 书源在你手里:你只需要把 Legado 的 JSON 书源直接导入(注:出于版权考虑,仓库不自带书源,需自行导入),就能立刻在 Web 端享受全网搜书。
  • ⚡ 多源 SSE 流式搜索:搜索时,后端会并发请求多个书源,并通过 SSE(Server-Sent Events)把结果逐源流式推送到前端。哪个源先出结果就先显示哪个,还能随时停止,体验极其丝滑。
  • 🔄 无缝换源:书架上的书可以直接在后端换源并完美保留阅读进度;没加入书架的书也能在前端纯前端切换,绝不弄乱你的书架。

2. Rust 带来的“变态级”性能与缓存

作为一个用 Rust (axum) + React 构建的项目,reader 的性能表现堪称“降维打击”。

  • 🚀 多级缓存机制:目录缓存 24 小时,正文永久缓存。一旦你读过某章,它就会被死死缓存在本地的 SQLite 单文件中。
  • ⏱️ 毫秒级响应:官方实测,缓存命中路径的响应时间仅需 4–13ms。配合单容器极低的内存占用,哪怕你的 NAS 性能再弱,翻页也是“指哪打哪”。
  • 🧹 书源治理:自带逐规则 SSE 调试工作台,失效源自动标记(6小时死源跳过),帮你轻松打理几百个书源。

3. 细节狂魔:这才是“沉浸式阅读”该有的样子

除了硬核的底层,reader 在前端阅读体验上也做到了极致:

  • 📖 全能阅读器:支持主题/字号/行距自定义、沉浸模式、键盘翻页。最赞的是书签与批注功能,且进度在多端(手机/电脑/平板)完美同步。
  • 📕 本地书支持:不仅能看网文,还能直接导入 epub/txt/mobi/azw3/pdf/fb2/docx/cbz/umd 等几乎所有主流格式的本地书,甚至能导出 TXT/EPUB。
  • 📖 离线词典(零网络):内置 ECDICT 英汉 77 万词条 + 新华字典。看外文原版书时,划词即查,完全不需要网络,也不需要调用第三方 API,隐私拉满。
  • 🎙️ TTS 朗读:支持接入自建的 edge-tts 或云厂商网关,没装的话也能优雅降级使用浏览器自带的语音合成。

4. 极客最爱的“零外依赖”与 AI 辅助

在这个“连看个小说都要联网收集隐私”的时代,reader 的克制让人感动:

  • 🛡️ 前端零外依赖:为了保证绝对的私有和离线可用,作者把 Noto Serif/Sans SC 字体按 unicode-range 切成了 606 个子集进行自托管。你的网页绝对不会向任何外部 CDN 发送哪怕一个请求。
  • 🤖 AI 阅读助手(可选):接入大模型后,它只检索你本机已缓存的章节进行 RAG(检索增强生成),答案会精准标注章节出处,绝不 AI 幻觉编造,帮你快速梳理复杂网文的剧情和人物关系。
  • 👥 多用户与安全:支持命名空间隔离、邀请码注册、Token 鉴权,甚至做了 SSRF 防护。你可以放心地把它反代到公网,和朋友们共享你的“赛博藏书阁”。

5. 一键 Docker 部署

部署 reader 简单到令人发指,只需要一个 Docker 命令:

docker run -d --name reader -p 8080:8080 \
  -v "$PWD/data:/storage/storage" -e READER_APP_WORKDIR=/storage \
  ghcr.io/hehecat/reader:latest

(或者使用项目提供的 docker-compose.yml,一键 docker compose up -d)

启动后,打开 http://<机器IP>:8080,注册一个账号即可开始使用。数据全部保存在挂载的 data 目录下的 SQLite 单文件中,备份只需拷走这一个文件夹。

它用 Rust 保证了极致的性能,用 Legado 规则继承了庞大的生态,用“零外依赖”守住了隐私的底线。无论你是想给家里的 NAS 添置一个“私人图书馆”,还是想在公司的内网搭一个摸鱼看小说的神器,它都绝对值得你立刻部署。

GOOD TOOLS ARE BETTER TOGETHER

分享到社交平台

微微博QQQ 好友☆QQ 空间XX↗Telegram

复制链接后,也可以粘贴到微信或其他社交平台。