在 AMH 面板中部署博客评论系统 Twikoo

Twikoo 是什么

Twikoo 是一个挺好用的博客评论系统,有如下特点

  • 基于 Nodejs,支持静态博客
  • 样式简洁通用,支持嵌套,基本无需修改
  • 私有部署的时候无需数据库
  • 支持插入图片、代码、表情,支持代码高亮
  • 支持配置 Akismet 反垃圾,支持频次控制
  • 支持邮件通知

更多特性可以看这里:Twikoo 文档 - 快速上手

为什么要私有部署

其实最开始是白嫖的 Vercel 和 MongoDB,但是因为备份数据不方便,决定换成私有部署

过程

部署的环境是

  • Debain VPS
  • AMH 面板(LNMP)

安装 Twikoo

  1. 安装 Node.js,参见:《在 AMH 面板中使用 Node.js 的一些记录》
  2. 安装 Twikoo,详情参见:私有部署
# 安装 Twikoo
npm i -g tkserver

# 查看 Twikoo 的安装目录
npm root -g
  1. 编辑环境变量
vi ~/.bashrc
  1. 增加 Twikoo 相关的环境变量
export TWIKOO_DATA="数据存放的目录,例如 home/wwwroot/domain.com/data"
export TWIKOO_PORT="端口号,例如 8080"
  1. 保存后,执行
source ~/.bashrc

配置 Nginx 反代

我直接用博客的一个子目录地址而不是子域名,这样省得再配置一遍 SSL,也不会有跨域等乱七八糟的问题

假设这个子目录是 twikoo,假设上面配置的端口号是 8080

在 AMH 面板的 “网站-规则管理” 中编辑 AMRewrite 规则(注意 nginx 中 location 的顺序优先级)

location ^~ /comment/ {
    # 设置一些代理的header信息,这些信息将被透传到 Node.js 服务的header信息里
    proxy_set_header Connection "";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    # 代理服务
    proxy_pass http://127.0.0.1:8999$request_uri;

    # 忽略其他重写
    proxy_redirect off;
}

启动 Twikoo 并设置保活

# 安装 pm2
npm install -g pm2

# 启动服务
pm2 start tkserver

# 保存服务
pm2 save

# 保活
pm2 startup

好了,剩下的可以参照 Twikoo 文档配置使用了