一.必备环境下载

1.安装 Node.js 环境

  1. 更新系统包索引
sudo apt update

2.添加 NodeSource 仓库

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
  • Ubuntu 默认源没有新版本 Node
  • NodeSource 提供官方维护的高版本 Node

3.安装 Node.js

sudo apt install -y nodejs

4.验证安装

node -v
npm -v

回显版本号即成功安装

2.npm 配置

设置国内镜像,因为默认 npm 源在国外

npm config set registry https://registry.npmmirror.com

3.MongoDB 数据库安装

  1. 安装 MongoDB
sudo apt update
sudo apt install -y mongodb-org

2.启动 MongDB

sudo systemctl start mongod
sudo systemctl enable mongod

3.进入 MongoDB Shell

mongosh
  1. 创建数据库和用户
use twikoo

db.createUser({
  user: "twikoo",
  pwd: "你的密码",
  roles: [
    { role: "readWrite", db: "twikoo" }
  ]
})

5.验证登录

mongosh -u twikoo -p --authenticationDatabase twikoo

根据提示内容输入密码即可

二、部署 tkserver(Twikoo 后端)

1.全局安装 tkserver(此处需要前面的 Node.js)

sudo npm install -g tkserver

2.启动 tkserver

MONGODB_URI="mongodb://twikoo:密码@127.0.0.1:27017/twikoo" HOST=127.0.0.1 PORT=8080 tkserver
  • MONGODB_URI:数据库连接字符串
  • HOST=127.0.0.1:只允许本机访问(安全)
  • PORT=8080:服务端口
名称 描述 默认值
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"] []

3.后台运行(即24 小时不间断运行)

方法一:nohup(官方推荐)

nohup env MONGODB_URI="mongodb://twikoo:密码@127.0.0.1:27017/twikoo" HOST=127.0.0.1 PORT=8080 tkserver > /var/log/tkserver.log 2>&1 &

方法二:systemctl(规范)

创建服务

sudo nano /etc/systemd/system/tkserver.service

内容:

[Unit]
Description=Twikoo Service
After=network.target

[Service]
Type=simple
Environment="MONGODB_URI=mongodb://twikoo:密码@127.0.0.1:27017/twikoo"
Environment="HOST=127.0.0.1"
Environment="PORT=8080"
ExecStart=/usr/bin/node /usr/lib/node_modules/tkserver/server.js
Restart=always
User=root

[Install]
WantedBy=multi-user.target

启动:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start tkserver
sudo systemctl enable tkserver

三、安装 Nginx

  1. 如果没有配置 Nginx,那么:
sudo apt install -y nginx

2.配置站点

sudo nano /etc/nginx/sites-available/twikoo
  1. 配置(以我的站点为例):

注意:要将子域名申请 ssl 证书,如果你是阿里云用户可以申请个人测试证书,这样才能通过 https 访问,避免中间人攻击

如图:

# HTTP 强制跳 HTTPS
server {
    listen 80;
    server_name twikoo.sirens007.cn;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name twikoo.sirens007.cn;

    ssl_certificate /粘贴你的证书路径.crt;
    ssl_certificate_key /粘贴你的私钥路径.key;

    # TLS 安全增强
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 关键:允许评论内容上传
    client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1: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;

        # WebSocket 支持(Twikoo兼容)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 超时优化
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

4.启用配置:

sudo ln -s /etc/nginx/sites-available/twikoo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

反向代理的目的是为了避免直接暴露 8080,并且浏览器会拦截

检验部署成功与否

如果运行出现什么问题,随时查看

1.检查 MongoDB

systemctl status mongod

2.检查 tkserver 是否运行

sudo systemctl status tkserver

4.检查 tkserver 是否监听 8080 端口

ss -tlnp | grep 8080

正常应该得到

5.检查 MongDB 是否监听端口

ss -tlnp | grep 27017

6.测试接口

浏览器访问:

https://你的站点

得到如图所示即表示 tkserver 没有问题,以上配置完后即可正常在博客主题中加入对应接口,类似以下:

twikoo: {
		envId: "https://twikoo.sirens007.cn",
		lang: SITE_LANG,
	},

至此,以上配置完后相应的评论数据可以通过各种可视化数据库查看,相应访问速度也会更快!

参考文章:

私有部署 - Twikoo 官方文档
以上是我关于twikoo的笔记分享,也可以关注关注我的Sirens-Blog🥰
感谢你读到这里,这也是我学习路上的一个小小记录。希望以后回头看时,能看到自己的成长~

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐