Twikoo 评论系统数据重置指南

建站
0 字 / 约 0 分钟

Twikoo 部署复盘 | 阿里云 ECS + Docker + Nginx + 双域名 HTTPS

记录一次「评论失败」→「完全可用」的踩坑与修复过程
适用:VitePress / 任意静态站、双域名、Docker 运行、Let’s Encrypt 证书

1. 后端部署(Docker 一次性启动)

bash
# 持久化目录
sudo mkdir -p /opt/twikoo/data

# 拉取并后台运行
docker run -d --name twikoo --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v /opt/twikoo/data:/app/data \
  imaegoo/twikoo:latest

# 验证
curl http://127.0.0.1:8080
# 返回 {"code":100,"message":"Twikoo 云函数运行正常"} 即可

Nginx 反向代理(关键配置)

nginx
# 文件:`/etc/nginx/sites-available/chiplayout`
# 80 统一跳转
server {
    listen 80;
    server_name chiplayout.net www.chiplayout.net chiplayout.top www.chiplayout.top;
    return 301 https://$host$request_uri;
}

# 443 双域名共用
server {
    listen 443 ssl http2;
    server_name chiplayout.net www.chiplayout.net chiplayout.top www.chiplayout.top;

    ssl_certificate      /etc/letsencrypt/live/chiplayout.net/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/chiplayout.net/privkey.pem;
    include              /etc/nginx/snippets/ssl-params.conf;

    root /web/vitepress/dist;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    # === Twikoo 精确代理 ===
    location = /twikoo {
        proxy_pass         http://127.0.0.1:8080;
        proxy_http_version 1.1;
        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;
        proxy_request_buffering off;
        proxy_redirect     off;
    }
}

启用并重载:

bash
sudo ln -s /etc/nginx/sites-available/chiplayout /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

申请 / 续期 HTTPS 证书

bash
sudo apt install certbot python3-certbot-nginx -y
# 多域名一张证书
sudo certbot --nginx -d chiplayout.net -d www.chiplayout.net \
             -d chiplayout.top  -d www.chiplayout.top
# 自动续期测试
sudo certbot renew --dry-run

前端调用(最小可用片段)

html
<div id="twikoo"></div>
<script src="https://cdn.jsdelivr.net/npm/twikoo@1.6.44/dist/twikoo.all.min.js"></script>
<script>
twikoo.init({
  envId: 'https://chiplayout.top/twikoo/',   // 与 Nginx 路径完全一致,末尾无 /
  el: '#twikoo',
  lang: 'zh-CN'
})
</script>

常见坑速查

现象根因修复
评论失败「云函数运行正常」请求体为空location = /twikoo + proxy_pass http://127.0.0.1:8080; 末尾无 /
404 //多一层斜杠前端 envId 与 proxy_pass 保持 一个斜杠 差异
跨域协议/域名不一致前后统一 https
空响应body 被缓冲proxy_request_buffering off;

## 备份与更新

bash
# 备份评论数据
tar zcf twikoo-backup-$(date +%F).tar.gz -C /opt/twikoo/data .

# 更新镜像
docker pull imaegoo/twikoo:latest
docker stop twikoo && docker rm twikoo
# 用同一命令重新 run(数据卷还在)

验证通过

浏览器访问:

  • https://chiplayout.net/twikoo{"code":100,...}
  • 任意文章页提交评论 → 实时刷新出现 → 后台 docker logs -f twikoo 可见 {event:"commentSubmit",...}

至此 Twikoo 全链路打通,备忘完毕 ✅

重启&&查看

bash
docker restart twikoo
docker ps | grep twikoo