配置 twikoo 评论系统
版权
提示
本文是在 博主One 文章:《配置 twikoo 评论系统》 基础上增加了自己实践过程的一些细节,转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢~
Twikoo 的安装
Twikoo 支持多种部署方式:云函数,Vercel,私有部署、Docker.... 具体参见文档:https://twikoo.js.org/backend.html
最原始的方法,也就是直接在服务器上部署,步骤很简单:安装 node → 安装 tkserver → 启动。
$ npm i -g tkserver
$ ln -s /opt/nodejs/node/bin/tkserver /usr/local/bin/tkserver
$ tkserver
然后就可以访问了,地址是:http://服务端IP:8080
Linux 服务器可以用 nohup tkserver >> tkserver.log 2>&1 &
命令后台启动。
提示
可能需要在云服务器上开启 8080 端口的防火墙
还是推荐用 Docker 来部署。我之前是用私有部署,几年后想升级 Twikoo,但是因为 node 版本太老了,导致升级失败... 然后试着升级 node,又是一堆报错...
docker 部署 😜
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo
docker-compose.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 容器
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8426:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo
,并在其中生成了一个 docker-compose.yaml
文件
# 创建名为 `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
来指定数据文件的目录,请自行选择。
[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
配置 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;
}
}
自己实际配置 😜
# 进入该目录
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 服务
nginx -s reload
这样,访问 https://twikoo.seasir.top/,就会转发到我的服务器 IP:8080 ,完成反向代理
前端配置 Twikoo
- 编辑
Demo\docs-base\.vitepress\config.mts
文件,修改为如下代码:
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",
},
},
验证
pnpm domo:base dev