1.前言

本站的评论系统最开始是Typecho自带的评论模块,因为无人评论所以开始并未在意。

后来,我将评论系统改为Giscus,它依托Github Discussions,轻量便捷,但在我迁移网站至GitHub后,发现butterfly主题的Giscus评论框只有英文界面,便放弃了继续使用Giscus的想法,只是因为我想统一全站界面语言。

2.评论系统的变化

2.1.最开始的构想

开始,我将目光放在了Gitalk上,它依托GitHub issues作为存储,只需要GitHub账号登录即可发言,可以说相当便捷,故成为了评论框架。

那么,为什么要换呢? 这是因为issue的特性导致,用户发布评论就会自动订阅这个issue,而issue一旦有新的留言就会给所有评论者自动发送一封spam邮件,对部分评论者造成困扰。

新评论的邮件轰炸

于是,我选择了Twikoo作为新的评论系统,因为它安装简单,评论方便,界面也简洁。

Twikoo评论界面

3.搭建过程

我的方案是在Netlify上部署Twikoo后端,因为Netlify有充足的免费额度供我使用,100GB/月的流量供应评论后端绰绰有余,当然你也可以使用其他服务商的计算服务来部署,下面是各云函数服务商的优缺点表(取自Twikoo官方文档部分):

部署方式 推荐度 描述
腾讯云一键部署 ★☆☆☆☆ 虽然方便,但是仅支持按量计费环境——也就是说,一键部署的环境,当免费资源用尽后,将会产生费用。且按量计费环境无法切换为包年包月环境。免费额度数据库读操作数只有 500 次 / 天,无法支撑 Twikoo 的运行需求
腾讯云手动部署 ★★☆☆☆ 手动部署到腾讯云云开发环境,在中国大陆访问速度较快。需要付费购买环境才能部署。
腾讯云命令行部署 ★☆☆☆☆ 仅针对有 Node.js 经验的开发者。
Vercel 部署 ★★★☆☆ 适用于想要免费部署的用户,在中国大陆访问速度较慢甚至无法访问,绑定自己的域名可以提高访问速度。
Railway 部署 ★★☆☆☆ 有免费额度但不足以支持一个月连续运行,部署简单,适合全球访问。
Zeabur 部署 ★☆☆☆☆ 需要绑定支付宝或信用卡,部署简单,适合中国大陆访问,免费计划环境随时可能会被删除。
Netlify 部署 ★★★★☆ 有充足的免费额度,中国大陆访问速度不错。
Hugging Face 部署 ★★★★☆ 免费,中国大陆访问速度不错。允许通过 Cloudflare Tunnels 自定义域名。
AWS Lambda 部署 ★★★☆☆ 全球最大的云平台,适合已经使用 AWS 全家桶的用户。
Cloudflare workers 部署 ★★☆☆☆ 部署需使用命令行,冷启动时间较短,功能有部分限制。
私有部署 ★★☆☆☆ 适用于有服务器的用户,需要自行申请 HTTPS 证书。
私有部署 (Docker) ★★★☆☆ 适用于有服务器的用户,需要自行申请 HTTPS 证书。

以下均为官方文档中复制,详细请见官方教程

注意

Netlify 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用

Netlify 免费等级(Functions Level 0)支持每月 125,000 请求次数和 100 小时函数计算时长

  1. 申请 MongoDB Atlas 账号,获取 MongoDB 连接字符串
  2. 申请并登录 Netlify 账号,创建一个 Team
  3. 打开 twikoojs/twikoo-netlify 点击 fork 将仓库 fork 到自己的账号下
  4. 回到 Netlify,点击 Add new site - Import an existing project

img

  1. 点击 Deploy with GitHub,如果未授权 GitHub 账号,先授权,然后选择前面 fork 的 twikoo-netlify 项目

img

  1. 点击 Add environment variables - New variable,Key 输入 MONGODB_URI,Value 输入前面记录的数据库连接字符串,点击 Deploy twikoo-netlify

img

  1. 部署完成后,点击 Domain settings - 右侧 Options - Edit site name,可以设置属于自己的三级域名(https://example.netlify.app

img

  1. 进入 Site overview,点击上方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示

img

  1. 云函数地址(包含 https:// 前缀和 /.netlify/functions/twikoo 后缀,例如 https://example.netlify.app/.netlify/functions/twikoo)即为您的环境 id