在自己的服务器端部署Twikoo

服务端下载安装Node.js

一键式安装Node.js

1
2
3
4
5
6
7
8
9
cd /tmp && wget https://nodejs.org/dist/latest/node-v23.8.0-linux-x64.tar.xz
tar xf node-v23.8.0-linux-x64.tar.xz
mv node-v23.8.0-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/node /bin/node
ln -s /usr/local/node/bin/npm /bin/npm
echo 'export PATH=/usr/local/node/bin:$PATH' >> /etc/profile
source /etc/profile
node -v
npm -v

安装Twikoo server

1
npm i -g tkserver

根据需要配置环境变量

Twikoo环境变量

启动 Twikoo server

1
2
tkserver
# Linux 服务器可以用 nohup tkserver >> tkserver.log 2>&1 & 命令后台启动

访问

一般来说,访问地址:http://服务端IP:8080
结果返回:

1
{"code":100,"message":"Twikoo 云函数运行正常,请参考 https://twikoo.js.org/quick-start.html#%E5%89%8D%E7%AB%AF%E9%83%A8%E7%BD%B2 完成前端的配置","version":"1.6.8"}

若能正常访问,服务端地址(包含 http:// 和 端口号 )例如 http://服务器IP地址:8080即为你的环境id

设置Hexo-Butterfly主题配置

1.在主题配置文件中启用 Twikoo

1
2
3
4
5
6
comments:
use: Twikoo
text: true
lazyload: false
count: false
card_post_count: false

2.在Twikoo配置中填入参数

1
2
3
4
5
twikoo:
envId: http://你的域名/
region:
visitor: false
option:

访问博客页面进行设置

重新更新一下hexo,并确保tkserver已在后台运行,这个时候打开博客文章界面就可以看到评论区域了,如果没有配置好,评论内容界面是刷新不出来的。

Twikoo评论区

配置TWikoo反向代理

如果你的网站配置了SSL证书,Twikoo配置前置代理实现HTTPS访问,否则会出现错误提示:
Access to XMLHttpRequest at ‘https://xxxxxx‘ from origin ‘http://xxxxxxxx:8080‘ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

首先需要找到nginx.conf文件

1
2
cd /usr/local/nginx/conf
vim nginx.conf

在HTTPS server配置反向代理

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
31
32
33
34
35
36
37
38
39
# HTTPS server

server {
listen 443 ssl;
server_name lanlanyangyang.fun;

ssl_certificate cert/lanlanyangyang.fun.pem;
ssl_certificate_key cert/lanlanyangyang.fun.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;


ssl_prefer_server_ciphers on;

+ add_header Strict-Transport-Security max-age=31536000 always;


location / {
root /data/blog;
index index.html index.htm;

}
# 反向代理到后端服务
+ location /twikoo/ {
+ proxy_pass http://localhost:8080;
+ 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;
+ proxy_set_header REMOTE-HOST $remote_addr;
+ }


}

注:若反向代理配置直接使用了 location /,所有根路径请求会被转发到Twikoo后端,导致静态资源无法访问
配置完成后可执行以下命令

1
2
nginx -t # 检查语法
nginx -s reload # 重新加载配置

此时_config.butterfly.yml修改一下地方

1
2
3
4
5
twikoo:
envId: http://你的域名/twikoo/
region:
visitor: false
option:

此时,就可以正常评论了