twikoo:从MongoDB Atlas到本地部署

一.必备环境下载

1.安装 Node.js 环境

  1. 更新系统包索引
bash 复制代码
sudo apt update

2.添加 NodeSource 仓库

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

3.安装 Node.js

bash 复制代码
sudo apt install -y nodejs

4.验证安装

bash 复制代码
node -v
npm -v

回显版本号即成功安装

2.npm 配置

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

bash 复制代码
npm config set registry https://registry.npmmirror.com

3.MongoDB 数据库安装

  1. 安装 MongoDB
bash 复制代码
sudo apt update
sudo apt install -y mongodb-org

2.启动 MongDB

bash 复制代码
sudo systemctl start mongod
sudo systemctl enable mongod

3.进入 MongoDB Shell

bash 复制代码
mongosh
  1. 创建数据库和用户
sql 复制代码
use twikoo

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

5.验证登录

bash 复制代码
mongosh -u twikoo -p --authenticationDatabase twikoo

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

二、部署 tkserver(Twikoo 后端)

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

bash 复制代码
sudo npm install -g tkserver

2.启动 tkserver

bash 复制代码
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(官方推荐)

bash 复制代码
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(规范)

创建服务

bash 复制代码
sudo nano /etc/systemd/system/tkserver.service

内容:

bash 复制代码
[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

启动:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start tkserver
sudo systemctl enable tkserver

三、安装 Nginx

  1. 如果没有配置 Nginx,那么:
bash 复制代码
sudo apt install -y nginx

2.配置站点

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

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

如图:

bash 复制代码
# 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.启用配置:

bash 复制代码
sudo ln -s /etc/nginx/sites-available/twikoo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

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

检验部署成功与否

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

1.检查 MongoDB

bash 复制代码
systemctl status mongod

2.检查 tkserver 是否运行

bash 复制代码
sudo systemctl status tkserver

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

bash 复制代码
ss -tlnp | grep 8080

正常应该得到

5.检查 MongDB 是否监听端口

bash 复制代码
ss -tlnp | grep 27017

6.测试接口

浏览器访问:

bash 复制代码
https://你的站点

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

bash 复制代码
twikoo: {
		envId: "https://twikoo.sirens007.cn",
		lang: SITE_LANG,
	},

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

参考文章:

私有部署 - Twikoo 官方文档

以上是我关于twikoo的笔记分享,也可以关注关注我的Sirens-Blog🥰

感谢你读到这里,这也是我学习路上的一个小小记录。希望以后回头看时,能看到自己的成长~

相关推荐
PC2005-cloud7 小时前
博文已索引但不展示:一次 Bing SEO 问题排查记录
服务器·人工智能
沸速存储7 小时前
整机瓶颈判断思路,自上而下定位卡顿根源
运维·服务器·电脑·内容运营
奈斯先生Vector8 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
乌萨奇也要立志学C++8 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
DLYSB_9 小时前
AIOps 大模型实战:基于 LangChain 运维 Agent 的根因诊断与现场声光播报闭环
运维·langchain·报警灯
一可米11 小时前
gitHub.com Actions自动化发布
运维·自动化·github
智塑未来11 小时前
证券公司智能运维平台哪个品牌做得好?擎创科技智能运维 2.0 适配券商全场景
运维·科技·区块链
2601_9657984711 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
蚰蜒螟12 小时前
从内核源码看Linux启动:chroot、execve与MS_MOVE的协奏曲
linux·服务器·网络
酷可达拉斯12 小时前
自动化运维-ansible配置文件与主机清单
linux·运维·自动化·ansible