我最近把评论系统切换到了Cusdis,这是一个非常年轻的项目,我是看着 GitHub Repo 从建立到现在近 900 个 star 的。产品体验不错,在开源协作的过程中也有很多收获,觉得有必要推荐一下,并且介绍下自己用的 workflow 所以有了这篇水文。

我为什么选择 Cusdis

评论系统有以下几种选择:

  • 公司产品,最有名的比如 Disqus,好处是使用人数多方便互动,不用自己管理 Infra,缺点是不由你说了算,比如强行给你加广告付费才能去除(驱动我换评论系统的最大原因),以及被墙及跑路的风险。
  • 白嫖后端产品,常见被白嫖的有 GitHub(utterances),LeanCloud(Valine),优点是省心,缺点是不好导出迁移。
  • 自造轮子产品,比如我曾经就做过一个,优点是完全自主,缺点是要做好没有 bug 还是有很多细节要考虑,而且维护 infra 也是一个开销。

Cusdis 其实三类全占,它既有一个 Hosted 服务你可以直接把数据托管在上面,也给了你自己部署自建数据库的自由。而且它支持从 Disqus 导入评论数据。于是我就尝试了一下,最后发现整个方案我挺满意,重点是全白嫖不花钱,下面分享一下。

我使用的工作流

数据库

Cusdis 支持连接你指定的 PostgreSQL 数据库实例,为了省心我首先想到了 DBaaS,但之前对这块不太熟,找了下各大知名云,都不是永久免费。于是我想到了Heroku,对于免费的实例只有 PostgreSQL 是可以免费用的,而 Cusdis 又(暂时)只支持连接 PostgreSQL,一切都是刚刚好。

注册帐号登录之后,进入到 Dashboard,右上角 Create new app 新增一个 app,区域选美国

20210428184818

转到 Resources 页面 Add-ons 里面搜索 PostgreSQL 并添加,这样一个数据库就好了

20210428184956

然后转到 Settings 页面,查看 Config Vars,把DATABASE_URL复制出来,就可以直接给 Cusdis 用了。

服务部署

我选择自己部署服务,Cusdis 提供的部署方式有两个:Docker 和 Vercel,用 Docker 的话还是需要一个自己的服务器,而服务器是!要!花!钱!的!所以排除,Cusdis 本身服务端是用 Next.js 开发的所以用 Vercel 部署就非常自然了。点击Deploy with Vercel这个按钮就能一键部署,然后配置好一些必要的环境变量就可以了,完成后直接访问分配的域名就能看到管理后台了。搞掂!

自动更新

Cusdis 是一个正在快速演进的项目,我希望有任何改进和 Bug 修复都立即更新到我的后台上,所以我用了 GitHub Action 这个大杀器,定时 pull 上游代码提交到 fork,非常丝滑,具体 workflow 可以看这里

新评论通知

有新评论到达时通知当然是必需的,可以参考文档的配置在 Vercel 中配置必要的环境变量就可以了。值得注意的是如果你用的是 Gmail,它会需要你设置一个独立密码才能给外部 app 调用 SMTP 服务,可以在 Google 帐户设置里启用。

Update in 1.1.2

现在 Cusdis 还支持 Webhook 式推送通知,你可以建一个服务来接收消息,再通过 Telegram Bot 给自己发通知。这个功能用 Serverless 云函数就能实现了,也有很多好用且免费的服务。我用的是一个刚出现的 Python 云函数服务Napkin.io,这是我写的 Napkin,你可以 Copy 过去改用自己的 token 和 chat ID,点 Deploy 就跑起来了,非常方便。最后记得在 Cusdis 后台登记 Webhook 的地址,使用效果:

20210430110151

开源贡献

Cusdis 是一个年轻的开源评论系统,有很多特性尚未支持,我这个搞 Python 的也提交过几次贡献,它的服务端是 Next.js,组件是 Svelte 写的,理解起来并不复杂。如果你也和我一样喜欢折腾喜欢 unstable 追新产品,不妨试试 Cusdis,帮助改善。最后也推荐一下作者的博客,内容质量高,非常启发思考。