Twikoo 评论系统私有部署(非Docker)

前言

Twikoo是一个简洁、安全、免费的静态博客评论系统。它主要用于为静态博客(如 Hexo、Hugo 等)提供评论功能,支持 Markdown 语法,具有快速部署和轻量级的特点。以下是 Twikoo 使用云开发 / Vercel / 私有服务器作为评论后台。本文主要介绍在私有服务器上部署Twikoo,私有部署具有更高可靠性、可用性。

Twikoo 官网:https://twikoo.js.org

Twikoo on GitHub:https://github.com/twikoojs/twikoo

Twikoo 官方文档:https://twikoo.js.org/intro.html


一、 整体流程

  1. 服务端下载安装 Node.js
  2. 安装 Twikoo server: npm i -g tkserver
  3. 启动 Twikoo server: tkserver
  4. 访问 http://服务端IP:8080 测试服务是否启动成功
  5. 配置前置代理实现 HTTPS 访问(可以用 Nginx、负载均衡或 Cloudflare 等)
  6. 到博客配置文件中配置 envId 为 https:// 加域名(例如 https://twikoo.yourdomain.com

二、 部署Twikoo

本文使用的服务器环境是Ubuntu 24.04 LTS

2.1 安装 Node.js

(1) 安装Node.js

1
2
sudo apt update
sudo apt install nodejs npm

(2) 查看安装结果,打印对应版本号则安装成功

1
2
node -v
npm -v

2.2 安装 Twikoo Server

(1) 输入以下命令,安装Twikoo Server

1
sudo npm i -g tkserver

(2) 输入以下命令启动 Twikoo server

1
tkserver

image.png

(3) 访问 http://服务端IP:8080 测试服务是否启动成功,显示如下界面则表示启动成功

image.png

(4) 修改默认端口等设置(可选,无特殊需求可跳过此步)

方式一:修改Twikoo配置文件,Twikoo 的配置文件路径在 /usr/local/lib/node_modules/tkserver,其中配置端口的文件为/usr/local/lib/node_modules/tkserver/server.js

image.png

方式二:修改环境变量

在Linux系统中,添加环境变量可以通过修改~/.bashrc实现,以修改tkserver端口号成8088为例

1
nano ~/.bashrc

在文件末尾添加 export TWIKOO_PORT=8088,保存并退出

image.png

刷新环境变量

1
source ~/.bashrc

通过以上任意一种方式修改完默认端口号,再使用tkserver命令启动twikoo服务,端口已变成修改的值。

image.png

另外可以通过nohup tkserver >> tkserver.log 2>&1 & 命令后台启动tkserver
使用 TWIKOO_PORT=端口号 tkserver命令自定义端口启动tkserver

(5) 设置tkserver 开机自启动

  1. **确认 Node.js 和tkserver 安装路径:
1
2
which node 
which tkserver

这将返回 nodetkserver 的路径,需要记下这些路径。

image.png

  1. 创建 systemd 服务文件:

    1
    sudo nano /etc/systemd/system/tkserver.service
  2. 编辑服务文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [Unit]
    Description=Twikoo Server
    After=network.target

    [Service]
    Environment=TWIKOO_PORT=1234
    ExecStart=/usr/bin/env node /path/to/tkserver
    WorkingDirectory=/path/to
    Restart=always
    User=your_username
    Environment=NODE_ENV=production

    [Install]
    WantedBy=multi-user.target

  • Environment=TWIKOO_PORT=1234:设置 TWIKOO_PORT 环境变量以指定自定义端口。
  • /usr/bin/env node:通过 env 命令查找 node 的实际路径,无需修改。
  • /usr/local/bin/tkservertkserver 程序文件的实际路径。
  • WorkingDirectorytkserver 的工作目录。
  • your_username:Linux服务器的用户名。

以我本机为例,node 路径为 /usr/bin/nodetkserver 安装在 /usr/local/bin/tkserver,用户名为 root(建议用户名使用root,避免权限问题导致的启动失败),端口我设置为默认端口8080,具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Twikoo Server
After=network.target

[Service]
Environment=TWIKOO_PORT=8080
ExecStart=/usr/bin/env node /usr/local/bin/tkserver
WorkingDirectory=/usr/local/bin/
Restart=always
User=root
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

  1. 重新加载 systemd 配置并启用服务:
1
2
sudo systemctl daemon-reload
sudo systemctl restart tkserver
  1. 检查服务状态和日志:
1
2
sudo systemctl status tkserver
sudo journalctl -u tkserver -f

可以尝试重启服务器后,并访问http://服务端IP:端口 测试开机自启动是否设置成功,显示如下界面则表示启动成功

image.png

2.3 配置HTTPS

完成前面步骤,twikoo后台已经部署完成,我们可以在主题配置文件中将前面的http://服务端IP:端口作为twikoo的envId填入既可以完成twikoo的部署,但为了提高网站的安全性,建议给twikoo服务添加一个域名,并设置为HTTPS访问,具体操作如下:

2.3.1 安装 Nginx

下载安装 Nginx

1
sudo apt install nginx

查看版本

1
nginx -v

2.3.2 创建twikoo子域名和申请证书

  1. 在阿里云中对主机域名再添加一个子域名
    image.png

image.png

如我这里就是:twikoo.fatpig.cc
  1. 再申请一个免费SSL证书

image.png

  1. 将上一步申请的证书下载下来,放到服务器上。

    例:我的存放路径:/etc/nginx/ssl

将两个文件twikoo.fatpig.cc.key和twikoo.fatpig.cc.pem放入该目录下。

  1. 输入以下命令,在/etc/nginx/sites-enabled路径下在其中新建一个twikoo.conf的配置文件
1
nano /etc/nginx/sites-enabled/twikoo.conf

根据实际情况修改以下配置,并粘贴到twikoo.conf中,保存并退出

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
upstream twi { # 需要配置upstream
server fatpig.cc:8080; # 你的主域名+端口
}

server {
listen 80; # 监听80端口,处理HTTP请求
server_name twikoo.fatpig.cc; # 子域名

# 将所有HTTP请求重定向到HTTPS
return 301 https://$host$request_uri;
}

server {
listen 443 ssl; # 监听443端口,处理HTTPS请求
server_name twikoo.fatpig.cc; # 子域名

ssl_certificate /etc/nginx/ssl/twikoo.fatpig.cc.pem;
ssl_certificate_key /etc/nginx/ssl/twikoo.fatpig.cc.key;

# SSL配置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://twi;
# 如需CORS头,请取消以下行的注释
# add_header Access-Control-Allow-Origin "*" always;
# add_header Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS";
# add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
}
}

  1. 测试nginx配置是否正确,并重启nginx服务
1
2
nginx -t
sudo systemctl restart nginx
  1. 访问twikoo子域名,如出现以下界面,表示twikoo域名https访问配置成功

image.png

2.3.3 修改主题配置文件

1
2
twikoo:
envId: https://twikoo.fatpig.cc/

2.3.4 重新生成部署网站

重新生成部署网站后,文章下方就会出现评论框,点击小齿轮进入管理面板,初次访问需要设置密码,请牢记。

image.png

三、针对私有部署的更新方式

  1. 停止旧版本 kill $(ps -ef | grep tkserver | grep -v 'grep' | awk '{print $2}')
  2. 拉取新版本 npm i -g tkserver@latest
  3. 启动新版本 tkserver
  4. 浏览器输入ip:端口来验证版本