简介

之前博客用过WordPress,但是动态博客用起来有些太重了,并且很多功能也用不到,所以重新搭建了hexo框架的静态博客。评论系统首先使用的是Giscus,但是需要登录github账号进行评论,对于一些没有技术基础的用户易用性较差,所以选择本地化搭建一套免费的,易用性强的评论静态网站评论系统。本文使用hexo静态博客系统 Butterfly 5.4版本主题下使用Twikoo评论系统。

搭建

本文使用私有部署,如果使用云部署可以参考twikoo官网文档。私有部署涉及终端操作、申请证书、配置反向代理或负载均衡等操作,如果都不了解,建议使用别的部署方式

  1. 安装环境配置

    服务端下载安装 Node.js根据实际的操作系统,使用对应命令下载。具体安装命令可以根据系统使用nodejs的下载页面进行生成。

    image-20250905223902256

  2. 安装 Twikoo server

1
sudo npm i -g tkserver
  1. 根据需要配置环境变量

名称 描述 默认值
MONGODB_URI MongoDB 数据库连接字符串,不传则使用 lokijs null
MONGO_URL MongoDB 数据库连接字符串,不传则使用 lokijs null
TWIKOO_DATA lokijs 数据库存储路径 ./data
TWIKOO_PORT 端口号 8080
TWIKOO_THROTTLE IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误 250
TWIKOO_LOCALHOST_ONLY true时只监听本地请求,使得 nginx 等服务器反代之后不暴露原始端口 null
TWIKOO_LOG_LEVEL 日志级别,支持 verbose / info / warn / error info
TWIKOO_IP_HEADERS 在一些特殊情况下使用,如使用了 CloudFlare CDN 它会将请求 IP 写到请求头的 cf-connecting-ip 字段上,为了能够正确的获取请求 IP 你可以写成 ["headers.cf-connecting-ip"] []
  1. 启动服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
启动服务有多种方式,本文建议使用systemctl统一管理

sudo vim /lib/systemd/system/tkserver.service

[Unit]
Description=TKServer service
After=network.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5
LimitNOFILE=655350
ExecStart=/usr/local/bin/tkserver
Environment="TWIKOO_PORT=8000 TWIKOO_DATA=/home/ops/service/twikoo-data TWIKOO_LOCALHOST_ONLY=true"
StandardOutput=append:/var/log/twikoo/twikoo.log
StandardError=append:/var/log/twikoo/twikoo.error.log


[Install]
WantedBy=multi-user.target


注意将所需要的变量写入Environment。

启动服务并设置为开机启动:
sudo systemctl start tkserver.service
sudo systemctl status tkserver.service
sudo systemctl enable tkserver.service
  1. 配置前置代理实现 HTTPS 访问

    可以用 Nginx、负载均衡或 Cloudflare 等。本文使用nginx可以参考以下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
server_name twikoo.yourdomain.com; //域名根据实际需求配置
return 307 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name twikoo.yourdomain.com; //域名根据实际需求配置

ssl_certificate /etc/nginx/cert/yourdomain.com.crt; //证书根据实际需求配置
ssl_certificate_key /etc/nginx/cert/yourdomain.com.key; //证书根据实际需求配置

client_max_body_size 2m;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
  1. 博客前端配置

    文件中配置 envId 为 https:// 加域名(例如 https://twikoo.yourdomain.com)。本文以Butterfly 5.4为例 修改主题的config.yml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
comments:
# Up to two comments system, the first will be shown as default
# Leave it empty if you don't need comments
# Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/Artalk
# Format of two comments system : Disqus,Waline
use: twikoo //修改为twikoo



# Twikoo
# https://github.com/imaegoo/twikoo
twikoo:
envId: https://twikoo.yourdomain.com //修改为nginx的twikoo域名
region:
# Use Twikoo visitor count as the page view count
visitor: true
option:

提示:

  1. 数据默认在 data 目录,请注意定期备份数据。
  2. Linux服务器如果不想使用systemctl服务,可以直接使用命令启动,例如: nohup tkserver >> tkserver.log 2>&1 & 命令后台启动。

开启管理面板

点击评论窗口的“小齿轮”图标,设置管理员密码

image-20250905234424132

进行相关的需求配置

image-20250905234510132

推荐开启的插件:

  1. 图床

评论区可以使用上传图片

image-20250905234632204

  1. 邮件通知

当有评论时,可以邮件通知。

image-20250905234843162

image-20250905234926681