
Garrul:基于单个 Cloudflare Worker 的网站评论系统
来源标题:Show HN: Garrul – Comments system for your site on a single Cloudflare Worker
开发者推出 Garrul 评论系统,用单个 Cloudflare Worker 配合 D1 和 KV,部署在用户自己的账户中,无需容器、VPS 或数据库服务器。该系统注重评论者隐私,IP 地址经 HMAC 哈希处理、IPv6 先截断,免费额度约可支撑每天 10 万页面浏览量。嵌入组件限制在 30KB gzip 以内。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
我的博客(跑在 Cloudflare 和 Astro 上)需要一个评论系统,试过的其他方案都不太合心意。于是 Garrul 诞生了:它只用你自己的 Cloudflare 账户里的一个 Cloudflare Worker,配上 D1 + KV。不需要容器、不需要 VPS、也没有数据库服务器要管理或操心!大多数站点用免费额度就够,我拿它跑 5 个流量不大的站点,毫无问题。
我一开始就把评论者的隐私放在第一位,同时兼顾易用性,这也是我一路做很多决定的基础。比如,我们从不直接存 IP 地址。每个 IP 都做 HMAC 哈希,IPv6 先截断。
我一有机会就持续做优化,比如配置、会话、首批评论、订阅状态等原本要分好几个独立请求,现在合成一次调用。发帖也只要一次调用,特定页面/文章甚至可以只开「表态」模式。反垃圾和 Turnstile 校验只在用户真正聚焦到评论发布框时才触发。算下来免费额度大约够每天 10 万页面浏览量。
挂件本身限制在 gzip 后 30KB,CI 设了超标即失败,免得我们发布臃肿的嵌入代码。
想在 Cloudflare 免费额度内玩,比较大的一个麻烦是 KV 每天只有 1000 次写入。我们以前是按请求用 KV 缓存,结果有天早上醒来发现有第一波机器人爬站,把评论功能锁了一整天,这教训让我把缓存挪到了 Cache API。
Demo(匿名发帖可用):https://garrul.com/#comments
欢迎任何改进系统的反馈。优化和安全是我当前的重点,谁能在这些方面帮上忙,我都感激不尽。
功能亮点:
- 支持 Markdown 的楼中楼评论
- OAuth(Google、Facebook、X、Discord、GitHub 登录)或匿名发帖
- 置顶评论、可选邮件回复通知、给版主的帖子摘要,以及一个能直接在 Telegram 里管理全部评论的 Telegram 机器人(我每天都用这个机器人)。
- 多语言,支持从 Disqus、Remark42 等多个系统导入。
采用 Apache2.0 许可。
所以目前它和 Cloudflare 绑在一起,意味着虽然 Cloudflare D1 其实就是 SQLite,你也没法把它跑到 CF 以外的地方。对我们来说,你的数据随时可以从管理面板导出成纯 SQLite dump(用 npm run db:export)、JSON 或 CSV。这个项目我大量用了 AI 辅助,包括编码、测试和红队测试。我审查进入的东西,CI 也能拦住不少。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。