手把手教你如何搭建自己的 Twikoo 评论系统

什么是 Twikoo

Twikoo 是一个简洁、安全且免费的静态网站评论系统,支持在网站中快速集成评论功能。Twikoo 评论系统的特点如下:

  • 免费搭建(使用云开发 / Vercel / 私有部署评论后台)
  • 简单部署(支持云开发 / Vercel 一键部署)

更多 Twikoo 请查看 Twikoo 官网

搭建流程

我们本次搭建基于 Vercel 平台,Vercel 是一个 Serverless 部署平台,支持一键部署 Next.js、Nuxt.js、Vue.js、React 等前端项目。我们将使用 Vercel 一键部署 Twikoo 评论系统。本文默认你已经有了 Vercel 账号,如果没有请先注册一个 Vercel 账号。

MongoDB Atlas

MongoDB Atlas 是 MongoDB Inc 提供的 MongoDB 数据库托管服务。免费账户可以永久使用 500 MiB 的数据库,足够存储 Twikoo 评论使用。

  1. 申请 MongoDB AtLas 账号
  2. 创建免费 MongoDB 数据库,区域推荐选择离 Twikoo 后端(Vercel / Netlify / AWS Lambda / VPS)地理位置较近的数据中心以获得更低的数据库连接延迟。如果不清楚自己的后端在哪个区域,也可选择 AWS / Oregon (us-west-2),该数据中心基建成熟,故障率低,且使用 Oregon 州的清洁能源,较为环保
  3. 在 Database Access 页面点击 Add New Database User 创建数据库用户,Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名和密码,建议点击 Auto Generate 自动生成一个不含特殊符号的强壮密码并妥善保存。点击 Database User Privileges 下方的 Add Built In Role,Select Role 选择 Atlas Admin,最后点击 Add User

  1. 在 Network Access 页面点击 Add IP Address 添加网络白名单。因为 Vercel / Netlify / Lambda 的出口地址不固定,因此 Access List Entry 输入 0.0.0.0/0(允许所有 IP 地址的连接)即可。如果 Twikoo 部署在自己的服务器上,这里可以填入固定 IP 地址。点击 Confirm 保存

  1. 在 Database 页面点击 Connect,连接方式选择 Drivers,并记录数据库连接字符串,请将连接字符串中的 <username>:<password> 修改为刚刚创建的数据库 用户名:密码

  1. (可选)默认的连接字符串没有指定数据库名称,Twikoo 会连接到默认的名为 test 的数据库。如果需要在同一个 MongoDB 里运行其他业务或供多个 Twikoo 实例使用,建立加入数据库名称并配置对应的 ACL。

连接字符串包含了连接到 MongoDB 数据库的所有信息,一旦泄露会导致评论被任何人添加、修改、删除,并有可能获取你的 SMTP、图床 token 等信息。请妥善记录这一字符串,之后需要填入到 Twikoo 的部署平台里。

Vercel 部署

注意:Vercel 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用
默认域名 *.vercel.app 在中国大陆访问速度较慢甚至无法访问,绑定自己的域名可以提高访问速度

  1. 申请 MongoDB Atlas 账号,获取 MongoDB 连接字符串
  2. 申请 Vercel 账号
  3. 点击以下按钮将 Twikoo 一键部署到 Vercel

Deploy

  1. 进入 Settings - Environment Variables,添加环境变量 MONGODB_URI,值为前面记录的数据库连接字符串
  2. 进入 Settings - Deployment Protection,设置 Vercel Authentication 为 Disabled,并 Save (这一步我没配置,好像也没问题?)

  1. 进入 Deployments , 然后在任意一项后面点击更多(三个点) , 然后点击 Redeploy , 最后点击下面的 Redeploy
  2. 进入 Overview,点击 Domains 下方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示
  3. Vercel Domains(包含 https:// 前缀,例如 https://xxx.vercel.app)即为您的环境 id