Valine 一款快速、简洁且高效的无后端评论系统。服务端可以借助LeanCloud免费部署到Vercel 部署 (服务端)
配置Valine
- 注册LeanCloud 账号:
- 进入 LeanCloud 官网注册一个国际账号。
- 创建一个新的应用以便使用 LeanCloud 提供的后端服务。
关联github账号登陆,创建Valine应用,名称任意,例如Valine
- 获取 Valine App ID 和 App Key:
- 在 LeanCloud 控制台中,进入你创建的应用。
- 在左侧导航栏中找到“设置”选项。
- 在应用凭证部分,复制
App ID
、App Key
、REST API 服务器地址
- 在Vercel的应用中依次进入【settings】、【environment-variables】添加上面获取的环境变量
LEAN_KEY
与LEAN_ID
值。然后进入【deployments】【Redeploy】重新部署生效。
完成后会自动分配一个二级域名,类似xxx-xxx-xxxx-projects.vercel.app
【可选】进入【settings】【domains】绑定自己的域名
评论通知的环境设置在在进入leancloud应用的Play
=== CLIENT ENGINE
=== 设置
添加自定义环境变量
【Redeploy】重新部署生效。
- valine评论数据管理
点击Visit
打开进入https://xxx-xxx-xxxx-projects.vercel.app 是一个独立的网页单面。 在域名后边加上/ui/register
注册,默认首次注册的用户是为评论管理员,可以删除评论等操作,也可以进入LeanCloud的控制台找到数据存储=>结构化数据=>Comment,在这里你可以对评论的数据进行管理
在Hugo主题中引入Valine
以PaperMod主题为例,找到需要添加Valine的页面或模板文件,以下方法二选一
方法一:在~/themes/PaperMod/layouts/_default/single.html
添加以下代码
复制替换 LeanCloud 控制台中的【设置】【应用凭证】的App ID
、App Key
、REST API 服务器地址
值
<div id="comments"></div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js"></script>
<script>
new Valine({
el: '#comments',
appId: 'App-ID',
appKey: 'App-Key',
serverURLs: "REST API 服务器地址",
placeholder: '说点什么吧...',
});
</script>
方法二: 修改~/themes/PaperMod/layouts/partials/comments.html
的内容如下
{{- /* Comments area start */ -}}
{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}}
<link rel="stylesheet" href="https://unpkg.com/@waline/client@v2/dist/waline.css" />
<div id="waline"></div>
<script type="module">
import { init } from 'https://unpkg.com/@waline/client@v2/dist/waline.mjs';
const locale = {
nick: '昵称',
nickError: '请填写昵称',
mail: '邮箱',
mailError: '请填写正确的邮件地址',
link: '网址',
optional: '可选',
placeholder: '仅填写昵称即可发表回复。\n填写邮箱可收到回复提醒。\n评论区支持 Markdown 语法及预览。\n',
sofa: '来发评论吧~',
submit: '提交',
like: '喜欢',
cancelLike: '取消喜欢',
reply: '回复',
cancelReply: '取消回复',
comment: '评论',
refresh: '刷新',
more: '加载更多...',
preview: '预览',
emoji: '表情',
uploadImage: '上传图片',
seconds: '秒前',
minutes: '分钟前',
hours: '小时前',
days: '天前',
now: '刚刚',
uploading: '正在上传',
login: '管理',
logout: '退出',
admin: '博主',
sticky: '置顶',
word: '字',
wordHint: '评论字数应在 $0 到 $1 字之间!\n当前字数:$2',
anonymous: '匿名',
level0: '潜水',
level1: '冒泡',
level2: '吐槽',
level3: '活跃',
level4: '话痨',
level5: '传说',
gif: '表情包',
gifSearchPlaceholder: '搜索表情包',
profile: '个人资料',
approved: '通过',
waiting: '待审核',
spam: '垃圾',
unsticky: '取消置顶',
oldest: '按倒序',
latest: '按正序',
hottest: '按热度',
reactionTitle: '你认为这篇文章怎么样?',
};
init({
// options
el: '#waline',
serverURL: 'REST API 服务器地址',
locale,
emoji: false, // 表情
search: false, // GIF 表情包
reaction: false, // 文章反应
requiredMeta: ['nick'],
pageSize: 10,
imageUploader: false,
copyright: true,
pageview: true,
like: false,
});
</script>
{{- /* Comments area end */ -}}
- 全局设置,修改hugo站点配置文件
config.yaml
将comments: true
开启全站默认允许评论 运行hugo server
重新生成站点后生效 - 单篇设置,在post文章中设置
comments: false
关闭评论,不加comments
参数选项=全局设置
placeholder
【可选】评论框占位提示符。serverURLs
【可选】该配置适用于国内自定义域名用户, 海外版本会自动检测(无需手动填写) v1.3.10+
如果你遇到了 CDN 加载速度较慢的问题,你可以尝试使用其他的 CDN 地址来加载这些文件,如:
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/valine/dist/Valine.min.js"></script>
参考 https://valine.js.org/configuration.html
LeanCloud 国际版国内不能用?
LeanCloud 国际版国为你懂的原因,在国内是不能正常访问的。可以导出数据切换到国内版,要备案域名,所以放弃。可以通过CNAME别名绑定2个子域名解决。
- 在LeanCloud控制面板的【设置】==【域名绑定】中的【API 访问域名】按提示绑定自己的域名
- vercel应用中【settings】【environment-variables】添加环境变量名为
LEAN_SERVER
值是上面绑定自己的域名 - 重新部署vercel应用生效,然后【settings】【domains】中再次绑定另一个域名。外部
serverURLs
可直接调用它。
Valine-Admin添加邮件通知
!!! 自带的邮件提醒功能将在v1.4.0发布时下线,请使用自带邮件提醒的用户注意更改为第三方邮件提醒
快速开始
首先需要确保 Valine 的基础功能是正常的,参考 Valine Docs。
然后进入 Leancloud 对应的 Valine 应用中。
点击 云引擎 -> 设置
填写代码库并保存:https://github.com/zhaojun1998/Valine-Admin
切换到部署标签页,分支使用 master,点击部署即可:
首先是登录Leancloud,然后点击创建的应用,点击左侧的【云引擎】->【管理部署】->【创建分组】在弹出来的窗口中,填写【分组名称】,选择【web后端】,【免费版】即可
创建完成之后,看到以下内容,然后点击【未部署】,进入到我们刚刚创建的分组之中,【设置】,配置自定义环境变量
必选参数
SITE_NAME
: 网站名称。SITE_URL
: 网站地址, 最后不要加/
。SMTP_USER
: SMTP 服务用户名,一般为邮箱地址。SMTP_PASS
: SMTP 密码,一般为授权码,而不是邮箱的登陆密码,请自行查询对应邮件服务商的获取方式SMTP_SERVICE
: 邮件服务提供商,支持QQ
、163
、126
、Gmail
、"Yahoo"
、......
: 全部支持请参考。 — 如这里没有你使用的邮件提供商,请查看自定义邮件服务器SENDER_NAME
: 寄件人名称。
配置环境变量中 TO_EMAIL
字段 : 指定站长收信邮箱,默认值为 SITE_USER
。用于 SMTP 发件人与站长收件人不一致的情况下使用。
LeanCloud 休眠策略
免费版的 LeanCloud 容器,是有强制性休眠策略的,不能 24 小时运行:
- 每天必须休眠 6 个小时
- 30 分钟内没有外部请求,则休眠。
- 休眠后如果有新的外部请求实例则马上启动(但激活时此次发送邮件会失败)。
分析了一下上方的策略,如果不想付费的话,最佳使用方案就设置定时器,每天 7 - 23 点每 20 分钟访问一次,这样可以保持每天的绝大多数时间邮件服务是正常的。
首先需要先配置下 Web 主机的域名,使用定时器时要用到。配置方式如下。
后台登录需要账号密码,需要在这里设置,只需要填写 email
、password
、username
,这三个字段即可, 使用 email
作为账号登陆即可。(为了安全考虑,此 email
必须为配置中的 SMTP_USER
或 TO_EMAIL
, 否则不允许登录)
LeanCloud 自带定时器[推荐]
首先需要添加环境变量,ADMIN_URL
:Web 主机域名
,如图所示(添加后重启容器才会生效):
然后点击云引擎 - 定时任务,新增定时器,按照图片上填写:
注意, LeanCloud 最近更新了定时器校验规则, 需要将 Cron 表达式写为:
0 */20 7-23 * * ?
!!!
添加后要记得点击启用:
启用成功后,每 20 分钟在云引擎的 - 应用日志中可以看到提示:
Linux 定时器[老版本方式]
附 Linux crontab
定时器代码:
*/20 7-23 * * * curl https://你配置的域名前缀.leanapp.cn
注 : 这里是
Linux
的crontab
定时器,会用的自行添加即可,推荐使用上面的 LeanCloud 自带定时器。
自定义邮件服务器
如 SMTP_SERVICE
中没有你使用的邮件服务提供商, 也可以进行自定义。
参数配置如下:
SMTP_HOST
: 邮件服务提供商 SMTP 地址,如 qq :smtp.qq.com
,此项需要自行查询或询问其服务商。SMTP_PORT
: 邮件服务提供商 SMTP 端口, 此项需要自行查询或询问其服务商。SMTP_SECURE
: 是否启用加密, 默认为true
,一般不需要设置,如有特殊请自行配置。 此项需要自行查询或询问其服务商。
注: 配置自定义邮件服务器的话,请不要同时配置 SMTP_SERVICE。当 SMTP_SERVICE 未配置时才会启用自定义邮件服务
经测试163网易邮箱SMTP发送邮件成功