📅配置 NotionNext 博客 Waline 评论系统

2022-6-16|2023-4-8
D_SUPER
D_SUPER
type
status
date
slug
summary
category
tags
icon

NotionNext 添加了新的评论系统 —— valine 和 waline (With backend Valine). 使用 valine 可以搭配 valine-admin 管理评论。而 waline 是 valine 的升级版,配置更简便,建议直接 waline 一步到位了!NotionNext 配置 Waline 官方教程Waline 项目地址
我尝试了 Railway 部署和 Vercel 部署两种方式(之前用Railway作为Cusdis的评论数据库,注册了账号)。部署完成后,得到评论服务的 链接 即为 NotionNext 需要的配置参数 NEXT_PUBLIC_WALINE_SERVER_URL
三种方法:Railway 部署简便,但存在在线时长限制;Vercel + LeanCloud 部署数据库空间容量大(远超所需),但在 LeanCloud 注册部分较复杂,但可能存在跨域问题;Vercel + PostgreSQL 部署较 LeanCloud 简单,但可能存在跨域问题。

基本部署

Railway 部署

Railway 搭建更方便,因为内置 PostgreSQL 数据库,不需要另外配置数据库,无需注册LeanCloud。 Railway 支持 Github 登录。
注:目前 Railway 免费用户可能存在每月 500H 运行时长限制(月初重置),部署项目可能存在服务中断。(20230202) 推荐阅读: postgresql 数据库迁移

基础配置步骤

  • 点击 [Deploy on Railway],跳转至 Railway 平台快速部署。登录之后会让你选择新建仓库的名称,环境变量部分不需要改动,直接点击下方的 Deploy 按钮进行部署即可。
notion image
  • 进入管理界面后,选择 PostgreSQLQuery ,将 waline.pgsql 中的内容粘贴至输入框中,点击底部的 Run Query 按钮完成数据库的初始化。
    • waline.pgsql 初始化数据库代码
  • 最后在 Settings → Domains 中就可以获取到访问的地址了。在此处可以可以设置博客二级域名指向该服务,得到NotionNext所需的评论服务链接。
notion image
  • 在NotionNext中添加 NEXT_PUBLIC_WALINE_SERVER_URL 环境变量。

进阶设置

  • 在红框选项下,设置服务的环境变量。
notion image

Vercel + LeanCloud 部署

Vercel 部署使用 LeanCloud 数据库服务,需要设置三个数据库相关的配置参数。

基础配置步骤

  • 注册LeanCloud 国际版账号,创建应用,在 设置应用凭证 中获得:
    • AppID + AppKey + MasterKey
  • 点击 [Depoly] (By tangly1024),跳转至 Vercel 进行 Server 端部署。
    • 此处推荐使用 NotionNext 开发者 tangly1024 配置的[Depoly]一键部署waline(调整了跨域访问的问题)
    • waline 官方 [Deploy] (仅供参考)
notion image
  • SettingsEnvironmrnt Variables 设置数据库相关环境变量:
    • 在环境变量(Environment Variables)中配置 LEAN_IDLEAN_KEYLEAN_MASTER_KEY 三个环境变量。它们的值分别对应在 LeanCloud 中获得的 AppIDAppKeyMasterKey
      NAME
      VALUE
      LEAN_ID
      ${AppID}
      LEAN_KEY
      ${AppKey}
      LEAN_MASTER_KEY
      ${MasterKey}
      notion image
  • DeploymentsRedeploy ,让修改的环境变量生效。
notion image
  • SettingsDomains 下,可以将二级域名指向该 vercel 服务,得到NotionNext所需的评论服务链接。 【教程:Vercel应用绑定自己的域名
notion image
  • 在NotionNext中添加 NEXT_PUBLIC_WALINE_SERVER_URL 环境变量。

进阶设置

  • 设置环境变量与基础配置中操作相同。

Vercel + PostgreSQL 部署

步骤与 Vercel + LeanCloud 部署 基本一致,区别仅在于使用不同数据库,更具体操作可结合上一小节。
  • bit.io 新建 PostgreSQL 数据库(提供 3G 免费数据库);
  • 初始化数据库: Data → Query 填入以下代码
    • waline.pgsql 初始化数据库代码 [*]
notion image
  • 在 Connect 中(见上图)获取数据库连接参数:PG_DBPG_USERPG_PASSWORDPG_HOST(替换 LeanCloud 数据库的环境变量),即可部署。
    • 环境变量名称
      必填
      默认值
      备注
      PG_DB
      PostgreSQL 数据库库名
      PG_USER
      PostgreSQL 数据库的用户名
      PG_PASSWORD
      PostgreSQL 数据库的密码
      PG_HOST
      127.0.0.1
      PostgreSQL 服务的地址
      PG_PORT
      3211
      PostgreSQL 服务的端口
      PG_PREFIX
      wl_
      PostgreSQL 数据表的表前缀
      PG_SSL
      false
      是否使用 SSL 连接 PostgreSQL 数据库
  • 点击 [Depoly] (By tangly1024),跳转至 Vercel 进行 Server 端部署。
    • 此处推荐使用 NotionNext 开发者 tangly1024 配置的[Depoly]一键部署waline(调整了跨域访问的问题)
    • waline 官方 [Deploy] (仅供参考)
  • SettingsDomains 下,可以将二级域名指向该 vercel 服务,得到NotionNext所需的评论服务链接。 【教程:Vercel应用绑定自己的域名
  • 在NotionNext中添加 NEXT_PUBLIC_WALINE_SERVER_URL 环境变量。

设置管理员账户

登录 <serverURL>/ui/register 进行注册,第一个注册的账户会被设定成管理员。

进阶设置 - 配置 SMTP 服务

配置SMTP可以允许waline给用户提供邮件服务:提醒网站新增评论,给新注册用户发验证码,提供忘记密码重置邮件链接等。Railway 部署增加环境变量会自动刷新,而 vercel 部署增加环境变量后,记得手动 Redeploy(见 Vercel 基础配置步骤)

增加环境变量

上述部署方式进阶设置均为在服务中增加环境变量,添加以下新的环境变量(✅为必要设置):
  • AUTHOR_EMAIL:博主邮箱,用来区分发布的评论是否是博主本身发布的。如果是博主发布的则不进行提醒通知。
  • SMTP_SERVICE:SMTP 邮件发送服务提供商,可以在这个页面查看所有支持的运营商。如果没在列表中的可以自行配置 SMTP_HOSTSMTP_PORT
  • SMTP_HOST:SMTP 服务器地址,如果未配置 SMTP_SERVICE 的话该项必填。
  • SMTP_PORT:SMTP 服务器端口,如果未配置 SMTP_SERVICE 的话该项必填。
  • SMTP_USER:SMTP 邮件发送服务的用户名,一般为登录邮箱。
  • SMTP_PASS:SMTP 邮件发送服务的密码,一般为邮箱登录密码,部分邮箱(例如 163 邮箱)是单独的 SMTP 密码。
  • SITE_NAME:网站名称,用于在消息中显示。
  • SITE_URL:网站地址,用于在消息中显示。
  • SENDER_NAME:自定义发送邮件的发件人,选填。
  • SENDER_EMAIL:自定义发送邮件的发件地址,选填。
  • MAIL_SUBJECT:评论回复邮件标题自定义,选填。
  • MAIL_TEMPLATE:评论回复邮件内容自定义,选填。
  • MAIL_SUBJECT_ADMIN:新评论通知邮件标题自定义,选填。
  • MAIL_TEMPLATE_ADMIN:新评论通知邮件内容自定义,选填。

yandex.com 配置模板

yandex.com 免费注册,提供功能较为全面的服务。yandex mail 还提供免费的域名邮箱服务-Yandex Connect,免费提供 1000 个子邮箱,每个子邮箱 10G 容量。
yandex.com 在[Waline页面]没有预设,需要填写 SMTP_HOSTSMTP_PORT。具体参数可以在[yandex官方]找到。
NAME
VALUE
备注
AUTHOR_EMAIL
aaa@bbb.com
博主邮箱,用来区分发布的评论是否是博主本身发布的。如果是博主发布的则不进行提醒通知。
SMTP_HOST
smtp.yandex.com
SMTP 服务器地址
SMTP_PORT
465
SMTP 服务器端口
SMTP_USER
xxx@yandex.com
SMTP 邮件发送服务的用户名,为登录邮箱
SMTP_PASS
abcd…dcx
yandex.com 提供的 APP 密码
SITE_NAME
D_SUPER
网站名称,用于在消息中显示
SITE_URL
https://dsuper.xyz
网站地址,用于在消息中显示

Waline 个性化设置

设置用户等级

在部署的环境变量中添加 LEVELS 关键词,设置值为 0,10,20,50,100,200 ,表示:
等级
条件
默认等级标签
0
0 <= count < 10
潜水
1
10 <= count < 20
冒泡
2
20 <= count < 50
吐槽
3
50 <= count < 100
活跃
4
100 <= count < 200
话痨
5
200 <= count
传说
除了可以自定义等级判断规则之外,我们还可以在客户端自定义等级标签。
默认只提供了 6 级文案,但并不表示只能有 6 个级别。具体的等级上限是根据你设置的等级判断规则来的。增加新的等级建议自己配置上等级对应的文案,没有提供文案的话默认展示的就是 Level 10 这样的默认文案。
NotionNext 的实现我估计是修改: walinecomponents.js 但是没验证。[参考]

Waline 的更新

Railway 部署更新

notion image

Vercel 部署更新

在 vercel Redepoly
https://github.com/walinejs/waline/tree/main/example 新代码 push 到自己的 Github 库 vercel-waline.(可能并不需要😝)

其他问题

Vercel 部署 最新评论持续 Loading…

根据我个人的调试过程总结,下述步骤仅供参考。
  • 检查在 Vercel 中,是否将 waline.你的博客.com 二级域名指向搭建的 waline 服务。
  • 在 NotionNext 中,更新 NPUBLIC_WALINE_SERVER_URLhttps://waline.你的博客.com 形式。

LeanCloud 国际版20220719政策变化对 Waline 的影响

结论是:不影响 vercel 部署访问 LeanCloud 的 Waline 创建方式。
邮件原文
回复
LeanCloud 国际版 IP 限制的这个事情,对 Waline 没有影像哈,Waline 是用 Vercel 访问的 LeanCloud,Vercel 是国外 IP 所以不受影响。 — By lizheming

关于 Railway 部署评论时间不一致的问题

(改) waline.pgsql,用于初始化数据库

推荐阅读


SimCompanies 销售盈利策略分析 以生鲜超市销售橘子为例Notion认证 - Notion Essentials Certification
  • Waline