目录

「Waline&Hugo&LoveIt」来,请开始你的表演

即使是静态博客,怎么能没有评论系统呢?我必须要干它了。本文记录如何让 Waline 赋能你的 Hugo 博客。

缘起

没那么多理由,别人有的,我也得有!一句话,就是干!!!

准备

初步选定官方推荐的 LeanCloud + Vercel + Waline 方案。虽然我有自己的服务器,而且这方案一看就是一套又一套,但我觉得羊毛是能薅一把是一把。

LeanCloud & Vercel

首先根据 Waline官方教程,部署好 LeanCloudVercel,即拿到 Vercel 中的服务地址。

https://store.yirami.xyz/review/waline_with_hugo_loveit/serverURL.png

Tips: 可以从这里进行 Vercel 下的仓库快速创建。

Gmail SMTP based on Google app passwords

需确保 Gmail 开启了 IMAP/SMTP 功能

为什么选择 Gmail 呢?因为我已经试了一次 QQ 企业邮箱,一通操作没能成功,从 Vercel 后台查看 Log 提示如下:

535 Error: authentication failed, system busy

我也不知道问题出在哪儿。幸亏,Gmail 不负所望,丝般顺滑,可以直接去这里生成应用专用密码。

再去 Vercel 项目仓库的 Settings -> Environment Variables 中按照评论通知一节中的说明添加几个环境变量,如:

SMTP_SERVICE: Gmail
SMTP_USER: 你的谷歌邮箱账户
SMTP_PASS: 刚刚生成的应用专用密码
SMTP_SECURE: true
SITE_NAME: 网站名称,用于在消息中显示
SITE_URL: 网站地址,用于在消息中显示
AUTHOR_EMAIL: 用来接收新评论通知的博主邮箱,如果是博主发布的评论则不进行提醒通知

添加并保存上述环境变量后,再去 Deployments 页面的历史部署中单击 ··· 并点击 Redeploy 即可。

搞起

主题配置

主题选用 LoveIt,下载最新的主题后,从 exampleSite/hugo.toml 文件中摘出 [params.page.comment.waline] 字段放入自己配置文件的合适位置。不用多说,把配置项 serverURL 中的地址换成前面从 Vercel 中拿到的服务地址。

# 仅列出必要的修改项,其它保持
[params.page.comment]
  enable = true
  [params.page.comment.waline]
    enable = true
    serverURL = "https://your_server_url.vercel.app"

至此,一个简单好用的评论系统就部署完成了。

反工

虽然,上述部署已经基本可用,但也有很现实的问题 —— 对大陆的访客不友好。对于该众所周知的问题,解决思路有如下几种。

暗度陈仓

借助 CloudflareDNS 解析及 Vercel 的自定义 Domains 可以绕过阻拦。

首先,在 Vercel 中进入应用的 Settings 选项卡,从左侧栏目中选择 Domains 并进入,然后单击 Add,即可按下图设置:

https://store.yirami.xyz/review/waline_with_hugo_loveit/add_custom_domain.png

如果是托管在 Cloudflare 的域名,可以选择自动模式添加,Vercel 会在其中自动添加两条解析记录,如下:

https://store.yirami.xyz/review/waline_with_hugo_loveit/DNS_resolution_records.png

注意,默认添加的 CNAME 可能指向 cname.vercel-dns.com,可以手动替换为 cname-china.vercel-dns.com

偷梁换柱

如果具有海外服务器,还可以将 Vercel 换掉,甚至将 LeanCloud 一起换掉。

看起来参考官方文档,即可使用 Docker 轻松部署。虽然目前使用前一方法已经可以较好解决国内访问的问题,但天有不测风云,真要到那天我估计会考虑只把 Vercel 换了,而白嫖 LeanCloud 的数据管理界面。

扯远了,这部分就占个坑,留待后续更新吧。。。

平反

前文说到基于 QQ 企业邮箱的 SMTP 设置没有成功,其实后来找到原因了。问题的关键是没有注意到其 SMTP 服务有个专门的开关,这里对该配置方案做一些补充。

首先,还是为特定的应用生成 客户端专用密码 。在 设置 -> 账户 -> 账户安全 一节中为应用生成专用密码。

https://store.yirami.xyz/review/waline_with_hugo_loveit/qq_gen_passwd.png

然后,进入 设置 -> 收发信设置 -> 开启服务 一节中勾选 开启IMAP/SMTP服务 并保存更改。

https://store.yirami.xyz/review/waline_with_hugo_loveit/qq_enable_smtp.png

最后回到相应的应用中配置 SMTP 服务:

  • SMTP 主机名:smtp.exmail.qq.com
  • SMTP 主机端口:$465$
  • SMTP 主机密码:填写第一步生成的专用密码