Skip to content

配置 twikoo 评论系统

版权

提示

本文是在 博主One 文章:《配置 twikoo 评论系统》 基础上增加了自己实践过程的一些细节,转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢~

Twikoo 的安装

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

Twikoo 支持多种部署方式:云函数,Vercel,私有部署、Docker.... 具体参见文档:https://twikoo.js.org/backend.html

‍ 最原始的方法,也就是直接在服务器上部署,步骤很简单:安装 node → 安装 tkserver → 启动。

sh
$ npm i -g tkserver

$ ln -s /opt/nodejs/node/bin/tkserver /usr/local/bin/tkserver

$ tkserver

然后就可以访问了,地址是:http://服务端IP:8080

1739612290655

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

提示

可能需要在云服务器上开启 8080 端口的防火墙

还是推荐用 Docker 来部署。我之前是用私有部署,几年后想升级 Twikoo,但是因为 node 版本太老了,导致升级失败... 然后试着升级 node,又是一堆报错...

docker 部署 😜

sh
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo

docker-compose.yaml 内容:

yaml
version: "3"
services:
  twikoo:
    image: imaegoo/twikoo
    container_name: twikoo
    restart: unless-stopped
    ports:
      - 8080:8080
    environment:
      TWIKOO_THROTTLE: 1000
    volumes:
      - ./data:/app/data

自己实际部署:😜

  • 创建并启动一个名为 twikoo 的 Docker 容器
sh
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8426:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo

,并在其中生成了一个 docker-compose.yaml 文件

sh
# 创建名为 `twikoo` 的目录
mkdir /root/twikoo
# 创建docker-compose.yaml 文件并添加以下内容
cat >>/root/twikoo/docker-compose.yaml <<EOF
version: '3'
services:
  twikoo:
    image: imaegoo/twikoo
    container_name: twikoo
    restart: unless-stopped
    ports:
      - 8426:8080
    environment:
      TWIKOO_THROTTLE: 1000
    volumes:
      - ./data:/app/data
EOF

# 进入该目录
cd /root/twikoo
# 检查 8080 端口是否已经被其他进程占用
netstat -antlp|grep 8080
# 启动twikoo镜像服务
docker-compose  up -d
[+] Building 0.0s (0/0)                                                                                                  docker:default
[+] Running 2/2
 Network twikoo_default  Created                                                                                                 0.0s
 Container twikoo        Started                                                                                                 0.0s
 [root@VM-4-16-centos twikoo]# docker ps -l
CONTAINER ID   IMAGE            COMMAND                   CREATED          STATUS          PORTS                                       NAMES
dc43659872fe   imaegoo/twikoo   "docker-entrypoint.s…"   56 minutes ago   Up 56 minutes   0.0.0.0:8426->8080/tcp, :::8426->8080/tcp   twikoo
[root@VM-4-16-centos twikoo]#

==Twikoo 目录结构==

在私有部署的情况下,在你执行 tkserver 的时候,就会在当前目录创建:

  • data 文件夹:存放评论数据、配置等
  • tkserver.log:日志文件

因此,有必要在你自己指定的目录下启动 tkserver,方便后期的数据备份、日志分析等。

如果你使用的是 Docker,在上述命令里其实也用了 ${PWD}/data 来指定数据文件的目录,请自行选择。

sh
[root@VM-4-16-centos twikoo]# ls
data  docker-compose.yaml
[root@VM-4-16-centos twikoo]# ls data/
db.json  db.json.0  db.json.1  db.json.2
[root@VM-4-16-centos twikoo]#

配置 HTTPS

理论上这样部署,就完成后台的部分了,但鉴于我的网站用了 HTTPS,而 Twikoo 本身并不支持,因此还需要做反向代理

我这里配置 HTTPS 是用到cloudflare

  • 进入cloudflare,在【账户主页】找到您的域名点击进去(如果没有请添加域名),进去后找到 DNS 记录,添加二级域名
    • 类型:A
    • 名称:twikoo(自定义就行)
    • IPv4:填写服务器的 IP

image-20250215181017931

配置 Nginx 反向代理

nginx
upstream twi {
   server peterjxl.com:8080; #你的域名+加端口
}

server {
    listen  443 ssl;
    server_name  twikoo.peterjxl.com; #子域名
    ssl_certificate  /opt/nginxrun/conf/cert/8852603_twikoo.peterjxl.com.pem;
    ssl_certificate_key /opt/nginxrun/conf/cert/8852603_twikoo.peterjxl.com.key;

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

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    ssl_prefer_server_ciphers  on;

    location / {
	proxy_pass http://twi;
    }
}

自己实际配置 😜

nginx
# 进入该目录
cd /etc/nginx/conf.d/
# 创建文件
vim twikoo.seasir.top.conf

[root@VM-4-16-centos conf.d]#  cat twikoo.seasir.top.conf
server {
    listen 80;
    server_name  twikoo.seasir.top;
    #配置https重定向
    return 301 https://$host$request_uri;
}

server {
    listen  443 ssl;
    server_name  twikoo.seasir.top;

    location / {
        proxy_pass http://云服务器ip:8080/; # 实际的后台路径
        client_max_body_size 100M;
        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;
    }

    access_log /var/log/nginx/photo.onedayxyy.cn.https.log;
}

# 用于测试 Nginx 配置文件的语法是否正确
nginx -t

配置完成后需要重启 NGINX 服务

sh
nginx -s reload

这样,访问 https://twikoo.seasir.top/,就会转发到我的服务器 IP:8080 ,完成反向代理

image-20250215182647730

前端配置 Twikoo

  • 编辑 Demo\docs-base\.vitepress\config.mts文件,修改为如下代码:
ts
  comment: {
    // provider: "giscus",
    provider: "twikoo",
    options: {
      // twikoo 配置,官网:https://twikoo.js.org/
      envId: "填写您自己的twikoo域名",
      jsUrl: "https://cdn.staticfile.org/twikoo/1.6.42/twikoo.all.min.js",
    },
  },

验证

sh
pnpm domo:base dev
最近更新