由Valine转向Waline评论系统以及所遇到的问题

由于LeanCloud要停止服务的消息,再加上Valine系统的各种缺陷,我开始考虑要转向其它的静态网站评论系统。

img

关于 LeanCloud 停止对外提供服务的通知
https://docs.leancloud.app/sdk/announcements/sunset-announcement

评论系统的选择

说到用于静态网站的评论系统,选择其实有很多很多的,Valine、Waline、rtalik、Twikoo等等一大堆可用的。

而我的要求则是:简洁、免费和安全

简洁

其实各家开源的评论系统已经很不错了,基本都不是什么花里胡哨的外观。除非你去选择那些专门的评论系统服务商,免费的各种限制,有广告亦或者是必须登陆后才能评论啥的。

免费

倒是免费这东西嘛……说到免费还得看你部署的方式,主流的开源评论系统都是有免费的部署方案,例如Waline,又或者是Twikoo。在部署前还是需要提前查看好其中的说明文档,最后根据文档的部署方式到各家服务商查询一下,是否更改了定价。很多东西都是需要不断更新的,但是文档这东西,可能在系统写出来后就没怎么进行更新了。

安全

安全嘛,得要看你是怎么判断的了。

其实很早之前就了解到Valine的安全问题了,Valine因为设计架构上的缺陷,可能会造成数据可篡改和用户信息泄露等等的问题。只是我一直都没有动力去换,在出了LeanCloud停止服务这件事情后,我便开始着手评论系统的更换。

现在很多的评论系统都不想Valine一样无后端,前端直接连接数据库,而是通过服务端中间层,这大大的提升了它人获取用户信息的难度。


选择

在熬夜挑选之下,我还是选择了几个我比较看好的系统,分别是WalineTwikoo,并且实际的在本地进行了实装和测试。

一个是为了代替不安全的Valine而生的,另外一个也算是较为成熟的系统。

实际部署完成以后,我个人还是觉得有必要说一下。

这里我还是选择了Waline,毕竟在外观上Valine和Waline可以说很是类似,也就代表着我不需要花费很大的精力去修改它的外观或者某些功能。

至于Twikoo,说实在话并不是特别的好修改,要动的东西比较多(无论是js或者css文件),我追求的是和Valine差不多类似的外观。还有一点就是它的js文件是真的大太多了,部署上还比Waline要麻烦。

(只支持MongoDB数据库,你得单独的去注册MongoDB Atlas,然后创建数据库,再去选择vercel进行部署,多了一大堆步骤)

部署Waline

整体的部署过程可以参考Waline的说明文档,在Vercel上部署Waline,它是一个完美的说明文档。

快速上手 | Waline (就参考此文档,不要看下方部署里的Vercel部署,那个是基于Leancloud的!)
https://waline.js.org/guide/get-started/

我个人推荐是在Vercel上进行部署,最不推荐的是Railway!

先不说Railway费用的问题,Waline的部署说明文档已经不适用于现在的Railway了

新手小白直接选择Vercel部署就行!(一定要按照上方的链接!)

迁移遇到的问题

部署Waline,按照上面的文档走是铁定没有任何问题的!但是在迁移上,我可是遇到了很多问题。


Leancloud导出的数据无法通过数据迁移助手进行转换

数据迁移助手 | Waline
https://waline.js.org/migration/tool.html

上面是Waline的数据迁移助手,各位可以自行尝试一下。反正我这里是没法正常使用的。

我是通过Deepseek帮忙改了改将数据放到数据库中的。(没办法,除了做毕设那会,现在早就不碰数据库相关的东西了,我懒得再去看资料写东西转换导入了)


迁移完成后,评论会报错“duplicate key value violates unique constraint “wl_comment_pkey””

解决办法:在数据库中运行 SELECT setval('wl_comment_seq', (SELECT MAX(id) FROM wl_comment)+1)

如果你使用的是Vercel,则在你的项目中选择 Storage点击 Open in Neon

在新打开的页面中选择 SQL Editor,在其中运行此命令。

具体可以参考快速上手-创建数据库 | Waline。在执行SQL语句时替换命令即可。