0. 为什么选择 Cloudflare 方案?

相比传统的 Vercel + MongoDB 方案,利用 Cloudflare Workers + D1 数据库可以获得极致的冷启动速度(<0.5s),并且完全免费。结合 R2 存储桶,还可以实现完全自主掌控的评论图床。


1. 环境准备与项目初始化

首先,从官方仓库克隆 Cloudflare 版本的 Twikoo 并安装依赖。

1
2
3
4
# 克隆仓库  
git clone https://github.com/twikoojs/twikoo-cloudflare.git  
cd twikoo-cloudflare  
npm install  

⚠️ 关键优化:绕过 1MB 限制

Cloudflare Workers 免费版有 1MB 的打包体积限制。由于 Node.js 兼容性问题,我们需要手动清空一些无用的包:

1
2
# 在 Windows 下建议使用 Node 脚本清空,避免编码问题  
node -e "['node_modules/jsdom/lib/api.js', 'node_modules/tencentcloud-sdk-nodejs/tencentcloud/index.js', 'node_modules/nodemailer/lib/nodemailer.js'].forEach(f => require('fs').writeFileSync(f, ''))"  

2. 配置 Cloudflare D1 数据库

D1 是系统的“大脑”,负责存储所有的评论文字和用户信息。

  1. 登录 Cloudflare
    1
    
    npx wrangler login  
    
  1. 创建数据库

    1
    
    npx wrangler d1 create twikoo  
    

    注意:执行后会返回一个 database_id,请记录下来。

  2. 初始化表结构

    1
    
    npx wrangler d1 execute twikoo --remote --file=./schema.sql -y  
    

3. 配置 R2 存储桶 (图床)

如果您已经有了 R2 存储桶(例如 blog-picture),可以直接绑定。

修改 wrangler.toml 文件:

1
2
3
4
5
6
7
[[r2_buckets]]  
binding = "R2"  
bucket_name = "blog-picture"  # 您的桶名  
  
[vars]  
# 您的 R2 自定义访问域名  
R2_PUBLIC_URL = "https://img.deermiya.com"  

4. 部署与上线

万事俱备,一键部署发布到 Cloudflare 全球节点。

1
npx wrangler deploy --minify  

部署成功后,你会得到一个以 .workers.dev 结尾的地址。


5. 修改博客配置 (Hugo 示例)

在 Hugo 博客的配置文件中加入刚部署好的后端地址。

修改 config.yaml

1
2
3
params:  
    twikoo:  
        envId: "https://your-worker.workers.dev" # 填入你的地址  

修改 comments.html 模板

1
2
3
4
5
6
7
8
<div id="tcomment"></div>  
<script src="https://cdn.staticfile.org/twikoo/1.6.40/twikoo.all.min.js"></script>  
<script>  
    twikoo.init({  
        envId: '{{ .Site.Params.twikoo.envId }}',  
        el: '#tcomment',  
    })  
</script>  

6. 后台初始化与管理

访问你的博客,在评论区上方点击小齿轮图标

  1. 设置管理密码:第一次进入必须设置。
  2. 图片上传验证:尝试上传一张图片,检查是否成功存储到了 R2 桶中通过自定义域名预览。

总结

这就是目前最优雅、最快速的评论系统部署方案。所有的评论、配置、图片都掌握在自己手中,且依托于 Cloudflare 的全球网络,真正实现了毫秒级加载!