690 字
2 分钟
twikoo:从MongoDB Atlas到本地部署

一.必备环境下载
1.安装 Node.js 环境
- 更新系统包索引
sudo apt update2.添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -- Ubuntu 默认源没有新版本 Node
- NodeSource 提供官方维护的高版本 Node
3.安装 Node.js
sudo apt install -y nodejs4.验证安装
node -vnpm -v回显版本号即成功安装
2.npm 配置
设置国内镜像,因为默认 npm 源在国外
npm config set registry https://registry.npmmirror.com3.MongoDB 数据库安装
- 安装 MongoDB
sudo apt updatesudo apt install -y mongodb-org2.启动 MongDB
sudo systemctl start mongodsudo systemctl enable mongod3.进入 MongoDB Shell
mongosh- 创建数据库和用户
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 tkserver2.启动 tkserver
MONGODB_URI="mongodb://twikoo:密码@127.0.0.1:27017/twikoo" HOST=127.0.0.1 PORT=8080 tkserverMONGODB_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 ServiceAfter=network.target
[Service]Type=simpleEnvironment="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.jsRestart=alwaysUser=root
[Install]WantedBy=multi-user.target启动:
sudo systemctl daemon-reexecsudo systemctl daemon-reloadsudo systemctl start tkserversudo systemctl enable tkserver三、安装 Nginx
- 如果没有配置 Nginx,那么:
sudo apt install -y nginx2.配置站点
sudo nano /etc/nginx/sites-available/twikoo- 配置(以我的站点为例):
注意:要将子域名申请 ssl 证书,如果你是阿里云用户可以申请个人测试证书,这样才能通过 https 访问,避免中间人攻击
如图:

# HTTP 强制跳 HTTPSserver { 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 -tsudo systemctl restart nginx反向代理的目的是为了避免直接暴露 8080,并且浏览器会拦截
检验部署成功与否
如果运行出现什么问题,随时查看
1.检查 MongoDB
systemctl status mongod
2.检查 tkserver 是否运行
sudo systemctl status tkserver4.检查 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:从MongoDB Atlas到本地部署
http://blog.sirens007.cn/posts/twikoo/ 部分信息可能已经过时
相关文章 智能推荐
1
Umami:从Cloud迁移到服务器
钻研一下~ 详细部署Umami在你的服务器中,可视化访问数据.
2
Java对象比较方式:equals、Comparable与Comparator
开发 通过示例分析 Java 对象比较的三种实现方式,包括 equals 重写、自然排序与自定义比较器.
3
七大经典排序算法:原理、实现与复杂度分析
开发 汇总常见七种排序算法的基本思想、实现过程与时间复杂度,并结合代码示例对比不同排序方法的适用场景.
4
二叉树知识整理:结构、性质与遍历实现
开发 从树的基础概念出发,系统总结二叉树的结构特点、性质推导、存储方式以及多种遍历实现方法.
5
大根堆、小根堆及TopK问题
开发 从堆的结构与操作出发,讲解建堆、调整及优先队列实现,并给出 TopK 问题的常见解法.
