博客建成也有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
的替代方案, Beaudar
是 Utterances 的中文版本, 使用 Github
最新的 Github Apps
方案来进行评论提交, 精细化权限到仅指定仓库的 Issue
权限.
而且后端设计可以使用 Cloudflare Workers
来进行搭建. 之前 Gitment
也是我将其写成了基于 Cloudflare Workers
的方案进行后端服务器搭建(参见这个项目), 所以其根本原理并没有改变, 继续实现 Serverless
的优雅常驻解决方案.
搭建自己的Beaudar
为了长期不维护也能稳定运行, 决定自己搭建一个自用的 Beaudar
供本博客使用. 由于官方其实并没有提供自托管文档, 在参阅了 Utterances
其中一个官方的 Issue, Fork
了相关代码, 进行细致的修改和替换之后(可以参阅这里的提交). 采用 Cloudflare Pages
和 Cloudflare 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
)