🌒MoonLab

> 在MoonLab中搜索

  1. 1. Disqus & Github
  2. 2. Cusdis
  3. 3. Waline & Artalk
  4. 4. ISSO
  5. 5. 结束

博客评论系统的选择

Category: 其他

🏷️  blog   中文

18年,我最开始在typecho的时候直接用的是博客程序自带的评论系统。在19年换到Hexo后就一直在用Valine加上免费的LeanCloud,但如今博客之前的评论数据库早已丢失。而且当时的我也没有意识到数据的重要性,之前的评论全部消失掉也是有些可惜。

为了不重蹈覆辙,人是不可以在一个地方犯两次错误的,所以必须需要位我的博客寻找一个合适且稳定的评论系统。

我的博客在可预见的未来内,不会出现大量的访问量,且读>写。
我希望我的博客数据能完全由自己掌控,我的博客数据由这两者构成:文章和评论。
目前博客的文章并不用担心丢失,我在Github上有一份公开的同步备份,就是你现在所看到的。同时我的本地有两份备份,一份在我的PC上,一份在我的SD卡上。其中也包括了文章的图片。考虑到用SD卡作为媒介依旧不是特别保险,之后也会在远程的OneDrive同步一份。

因此目前需要着重考虑的就是评论数据了,我所需要的评论系统需要满足以下:

  • 数据完全掌控,体现在数据可以直接地导出
  • 易于备份和迁移
  • 访问者可以轻松地评论

Disqus & Github

Disqus 等中心化的评论系统,虽然有免费计划可以使用,但始终不稳定。除了评论数据绑定在平台,评论的用户还需要注册一个平台的账户,十分麻烦。并且这类评论接入服务对于用户隐私的保护实在存疑。

Disqus 会追踪用户行为,以及IP地址。它会根据你所访问的网站进行个性化广告投放,这对评论者的隐私是一个极其严重的侵犯。

而且考虑到之前国内的多说,在2017死掉了,我实在很难信任这些中心化的评论系统。他们肯定有一天会倒闭,到时候迁移数据就比较麻烦了。

还有一种很早就有的评论系统Gitalk, Gitment,都是利用Github Issues来托管评论。
这种评论系统虽然开放且隐私保护完善,但有一个巨大的缺陷:对于评论者来说,将自己的Github账号授权给一个网站去发起Issue是很危险的,如果恶意的网站一旦获取到了你的Access Token,其权限是非常大的。

但现在如果想将博客评论托管在Github上其实已经有了更好的选择。
giscus利用Github Discussion的API和Github App很好的解决了上面的问题。划定了Github App的权限。同时借助Discussion也能轻松地在Github上管理你博客内的评论。并且能很大程度上避免了垃圾评论。

但giscus会暴露评论者的Github账号,不仅会在网页的前端显示出来,而且在Github Discussion中也会有相应的记录。这在某些情况下是优点,但对于我的博客来说,我不希望将评论者的任何信息暴露在公网之中。

评论者所需提供的仅仅应该是一个用于识别的名字。

同时giscus也需要一个中心服务器来托管App,处理认证回调,调用Github API等等。只是官方提供了一个免费公开的服务。但你也可以自己托管在Vercel或其他地方中。

是否使用Github Discussion取决于对Github的信赖程度。

Cusdis

Cusdis是一个对标Disqus的更加轻量,注重隐私的评论系统,最最重要的是它是开源。整个网站只需插入一个几kb大小的js就可以使用。
免费版可以直接接入使用,非常好用。

但如果想要自己托管,就需要一个PostgreSQL Database,但是用在我的博客上还是有些臃肿了,事实上我认为大多数的网站的访问量还远远没有达到需要使用MySQL这类数据库的地步。一个简单的单文件的Sqlite是更好的选择,不仅便于迁移还易于管理。

关于这一部分的内容可以阅读Appropriate Uses For SQLite

Waline & Artalk

这两位也支持Sqlite,前者的前后端都是JavaScript写的,后者的后端是Go,客户端是JavaScript

不过两者的实现都有些沉余,很多功能我都用不上,而且如果要自己修改一些功能也比较麻烦。

ISSO

posativ/isso是用python写的,也支持从Disqus和wp迁移数据,不过我之前的评论数据全存在别的地方,现在应该已经丢过了,那已经是好几年前的事情了。

Waline官网上说Waline的gzip js大小是53kb,而isso实际使用上是19.4kb,还是更轻一些,而且也够我用了。

test

简单的安装启用过后,就是博客现在的这个样子了。

ISSO支持Markdown语法,评论feed的订阅(只能单独),评论先审后发,SMTP提醒回复,并且社区也算活跃。
评论者头像可以通过Gravatar获取,isso的js和css也可以配置cdn

同时ISSO还带有Admin模块:

admin

结束

博客评论的db文件储存在我的服务器中,后续要和文章数据一同,能够同步备份在远程的OneDrive中。

2018-2023 MoonLab