博客建成也有3年时间了, 最近在维护的时候发现 gitment 这个项目很久都没有维护了, 而且社区的人提出了关于 gitment 获取的github权限过大, 但这也是没有办法的事情, github oauth 权限并不能指定 issue.

寻找替换方案

经过一番调研发现了多种替换方案, 其中 @hmsjy2017 提到

 - utterances 及其衍生版:
    - utterances
    - giscus 由 GitHub Discussions 驱动的评论系统。
    - beaudar 基于 GitHub issue 的轻量评论插件,Utterances 的中文版本
 - Waline 注重安全,功能强大
另外,以下评论系统有已知安全风险:

 - Valine (从 v1.4.0 以后闭源,阅读统计篡改,XSS 安全,隐私泄露,垃圾评论)
 - Gitalk (权限过高,client secret 暴露)
 - Gitment (权限过高,client secret 暴露)
 - Vssue (权限过高)

最终选择了使用 Beaudar 这个项目来作为当前 gitment 的替代方案, BeaudarUtterances 的中文版本, 使用 Github 最新的 Github Apps 方案来进行评论提交, 精细化权限到仅指定仓库的 Issue 权限.

而且后端设计可以使用 Cloudflare Workers 来进行搭建. 之前 Gitment 也是我将其写成了基于 Cloudflare Workers 的方案进行后端服务器搭建(参见这个项目), 所以其根本原理并没有改变, 继续实现 Serverless 的优雅常驻解决方案.

搭建自己的Beaudar

为了长期不维护也能稳定运行, 决定自己搭建一个自用的 Beaudar 供本博客使用. 由于官方其实并没有提供自托管文档, 在参阅了 Utterances 其中一个官方的 Issue, Fork 了相关代码, 进行细致的修改和替换之后(可以参阅这里的提交). 采用 Cloudflare PagesCloudflare Workers 进行搭建, 实现 Beaudar over Cloudflare 的目标(虽然写本文章的昨天, Cloudflare 刚刚全球炸了一次, 但是长期看还是很稳定的).

接下来只需要修改模板, 添加支持

if theme.beaudar
    #disqus_thread(class="beaudar" style="padding-bottom: 300px;")
        script(
            src="https://comment.shiyunjin.com/client.js"
            repo="shiyunjin/shiyunjin.github.io"
            issue-term="pathname"
            label="💬comment"
            theme="github-light"
            loading="false"
            input-position="top"
            crossorigin="anonymous"
            async
        )

在下面试一下