利用cloudflare搭建twikoo评论系统
查看了各个评论系统 Gittalk
、Gitment
、Disqus
、Livere
、Valine
、Waline
、Twikoo
等。综合了多种方案,最后选用了 Twikoo
,一来是因为简洁美观,满足博主的审美,二来全栈使用 Cloudflare
的方案,不用再去申请其他的账号了。
部署Twikoo
复制仓库
首先 Fork 博主的仓库,输入你自己的仓库名称,点击 Create fork
按钮创建自己的仓库。
国内对github的访问向来是时断时续的,如果安装失败可以等一等,或者使用科学上网工具
创建D1数据库
- 登录
Cloudflare
,点击左侧栏存储和数据库
-D1 SQL数据库
,点击创建
按钮,填入twikoo
作为数据库名后,点击创建
按钮。 - 创建成功后回到列表页面,可以找到对应红框中的
ID
复制出来。 - 然后点击
twikoo
数据库,选择控制台
页签,将仓库根目录下的schema.sql
文件中的内容全部复制到输入框中,点击执行
按钮。 - 很快数据库表就创建完了,最后修改仓库根目录下的
wrangler.toml
文件中的database_id
值。
1 | [[d1_databases]] |
创建R2存储
- 点击左侧栏
R2 对象存储
,点击创建存储桶
,填入twikoo
作为存储桶名称,点击创建存储桶
按钮。 - 创建成功后后回到列表页面,就可以看到刚才创建的存储桶了。
- 再点击
twikoo
进入存储桶,点击设置
页签,在公开访问
点击连接域
, 输入你想设置的域名比如twikoo.r2.example.org
。 - 然后点击
继续
,再点击连接域
就会回到设置页面,这时你会看到你设置的域状态为正在初始化
,过几分钟再次刷新状态就变成了活动
。 - 接下来还需要将刚才的域名写入修改仓库根目录下的
wrangler.toml
文件中。
1 | [vars] |
Worker部署
在
Cloudflare
的左侧栏点击Workers 和 Pages
,点击创建
,再点击创建 Worker
,输入名称cf-create-worker
。然后点击
部署
,过一会显示部署成功,再点击继续处理项目
,选择设置
页签,滚动到构建区域,点击连接
按钮。此时右侧会弹出一个面板,先连接你的
Github
账号,然后选择你的仓库,如果列表中找不到可以直接输入仓库名,比如twikoo-cloudflare
,再选择main
分支。然后在
部署命令
的输入框中填入npx wrangler deploy --minify
,最后点击连接
按钮保存。
如果在前一步的列表中仓库名是手动输入的,你需要在这里点击 管理
按钮,跳转到 Github
登录账号。
完成登录后进入
Repository access
页面,点击Select repositories
按钮,选择你的仓库后点击Save
按钮。此时页面会跳转回
Cloudflare
,有可能会报一个错误,不用管它,直接关闭页面就可以了。现在把前面修改的
wrangler.toml
文件保存并提交到Github
仓库,此时就会触发Worker
的自动构建了,过一会你就会在Workers 和 Pages
页面看到部署已经更新,点击访问
按钮,一切正常的话,你会看到这样的内容:
1 | { |
绑定域名
再次点击 twikoo-cloudflare
进入 设置
页签,在 域和路由
中点击 添加
,右侧弹出 域和路由
面板。点击 自定义域
,输入你想要绑定的域名,比如 twikoo.example.org
,点击 添加域
按钮。
添加完成后你的域名就和部署的 Worker
绑定好了。
配置博客
修改主题配置
回到上一篇创建的个人博客仓库,在 themes/hexo-theme-matery
目录下打开 _config.yml
文件进行编辑,搜索关键字 twikoo
将 enabled
改为 true
,再将 envId
改成前面部署绑定的域名。
1 | twikoo: |
修改完提交到 Github
后 Cloudflare Pages
会自动部署,等部署完打开你的个人博客,在你的博文最下面就可以看到评论区了。
配置评论模块
- 点击评论区的小齿轮图标,首次进入需要设置密码,设置完就会进入管理面板,点击
配置管理
页签进行初始配置。 - 点开
隐私
,在IMAGE_CDN
处输入cloudflare
,点击保存
按钮启用图片上传功能。
其余每个配置项都有很详细的说明,大家可以自行慢慢摸索,不修改也已经可以正常使用了。
防止机器人
- 发表评论时可以使用
Cloudflare Turnstile
的检查来阻止机器人,如果需要启用先在Cloudflare
的左侧栏点击Turnstile
,点击添加小组件
按钮。 - 小组件名称可以随便填写,比如
twikoo
,点击下面的添加主机名
按钮会在右侧弹出面板。在最上面的输入框填入个人博客的域名,比如blog.example.org
,点击右侧的添加
按钮,主机名就会出现在下面的已选择主机名列表中。再点击最下面的添加
按钮,右侧面板关闭,主机名会添加到主机名管理
区域的列表中。最后点击右下角的创建
按钮,就会显示已成功创建Turnstile
小组件。 - 在这个页面上
站点密钥
和密钥
是你需要复制下来配置到Twikoo
的管理面板中的。接下来再次打开管理面板,点开反垃圾
,在TURNSTILE_SITE_KEY
处填入站点密钥
的内容,在TURNSTILE_SECRET_KEY
处填入密钥
的内容,点击保存
关闭面板。 - 完成后再次发表评论就会出现
Cloudflare
的机器人检查框了,大部分情况下等一会就会显示成功,或者出现一个勾选框确认后检查成功,只有极少数情况会发起JS质询
进行挑战。
后记
至此,一个基本上完整的评论系统就上线了,对于 Twikoo
的其他配置,还有一些建议:
- 使用隐藏入口不要暴露管理面板的配置按钮;
- 设置一个复杂的密码不要让别人轻易猜出来;
- 添加评论通知,[pushoo.js]pushoo.js 提供了丰富的通知方式,可以自行看文档选择最适合的方式。