基于docker和mysql配置waline评论系统

本文最后更新于:2026年3月30日 下午

一、waline介绍

在waline之前有一款评论系统叫做valine,valine 是一款样式精美,操作简单,部署高效的评论系统。它不含服务端,前端直接和 LeanCloud 存储服务交互,非常棒!但是valine它存在着一些问题:

源码不开放:在1.4.0版本之后,作者不再推送源代码;

XSS安全问题:评论的数据存在XSS安全问题,因为没有服务端,所以前端搞定XSS问题是治标不治本的;

隐私泄露:评论数据会泄露ip和邮箱;

统计数据篡改:可以通过开放接口修改统计数据;

在此基础上,waline就出现了,它包含完整的前端和服务端,解决了上面valine的问题,同时还有垃圾评论过滤和邮件通知等等新功能。

二、docker部署

安装docker,mysql过程省略;

1、初始化表结构

手动创建一个数据库waline_comment(名称随意),然后下载waline.sql文件,运行这个文件;

这里补一句:我当时走的是 MySQL + Docker + 手动初始化表结构 这条线。现在 Waline 官方文档主要是围绕服务端环境变量和多数据库支持来写的,如果你是全新部署,建议同时参考官方文档。

注意事项:如果你在 MySQL 8 上遇到认证报错,可以尝试为 Waline 单独创建一个使用 mysql_native_password 的用户,或者检查当前镜像里的 MySQL 驱动兼容情况。也就是说,这里是一个部署时可能遇到的兼容性问题,而不是 Waline 要求你把 MySQL 8 改成旧模式。常见处理方式大概是这样:

1
2
3
4
5
6
# 新建一个waline用户,修改加密方式
CREATE USER 'waline'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
# 当然你也可以直接修改root的加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
# 刷新权限
flush privileges;

2、部署waline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 拉取镜像
docker pull lizheming/waline:latest
# 创建容器
docker run -d --name waline -p 8360:8360 \
-v /mydocker/waline/data:/app/data \
-e TZ="Asia/Shanghai" \
-e MYSQL_HOST="公网IP" \
-e MYSQL_DB="waline_comment" \
-e MYSQL_USER="waline" \
-e MYSQL_PASSWORD="数据库密码" \
-e AUTHOR_EMAIL="作者邮箱" \
-e SITE_NAME="kele blog" \
-e SITE_URL="https://你的博客地址" \
-e SERVER_URL="https://你的Waline服务地址" \
-e SECURE_DOMAINS="你的博客域名,你的Waline服务域名" \
-e SENDER_NAME="博客留言" \
-e SMTP_SERVICE="QQ" \
-e SMTP_USER="您的邮箱" \
-e SMTP_PASS="授权码" \
-e DISABLE_USERAGENT="false" \
-e AVATAR_PROXY="https://avatar.75cdn.workers.dev" \
-e IPQPS="30" \
--restart always \
lizheming/waline:latest

这里额外解释几个比较重要的变量:

  • SITE_URL:你的博客前台地址
  • SERVER_URL:Waline 服务端自己的访问地址
  • SECURE_DOMAINS:安全域名,多个值用英文逗号分隔,按官方文档要求这里不要带 http://https://
  • SMTP_*:评论邮件通知相关配置
  • IPQPS:基于 IP 的发言频率限制,单位是秒

mysql 的参数参考这里:

部署完成之后,访问http://ip地址:8360/ui/register 地址,便能看到注册界面

这里还有一个很重要的点:第一个注册成功的账号会成为管理员,所以正式开放评论前,建议先自己完成第一次注册。

3、hexo博客fluid主题接入waline评论系统

修改配置文件 _config.fluid.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 文章页面
post:
banner_img_height: 60
updated:
enable: true
meta:
views: # 阅读次数
enable: true
source: "busuanzi" # 统计数据来源,可选:leancloud | busuanzi 注意不蒜子会间歇抽风
format: "{} 次"
# 开启评论
comments:
enable: true
type: waline
# waline参数
waline:
serverURL: '你的评论系统网址'
path: window.location.pathname
meta: ['nick', 'mail', 'link']
requiredMeta: []
lang: 'zh-CN'
emoji: ['https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo']
wordLimit: 0
pageSize: 10
# 开启点赞
reaction: true
locale: {placeholder: 留下只言片语}

效果图:

参考链接:

waline官方文档-客户端快速开始

waline官方文档-独立部署

waline官方文档-服务端环境变量

其他文章


基于docker和mysql配置waline评论系统
http://bestkele.com/2022/10/07/other/waline/
作者
kele
发布于
2022年10月7日
许可协议