1.开源评论系统

一款简洁、安全的评论系统
官网地址

2.本次部署方式

  1. 采用docker部署,sqllite数据库(完全自主控制)
  2. 其他部署方式请参考官网
  3. SQLite

使用 SQLite 时需要下载 waline.sqlite 文件至合适的位置。之后在项目中配置如下环境变量。

环境变量名称 必填 默认值 备注
SQLITE_PATH SQLite 数据库文件的路径,该路径不包含文件名本身
JWT_TOKEN 用户登录密钥,随机字符串即可
SQLITE_DB waline SQLite 数据库文件名,若文件名变化需要修改该字段值
SQLITE_PREFIX wl_ SQLite 数据表的表前缀

3.部署

登录linux服务器

3.1 创建目录,

1
mkdir -p /var/waline/data

3.2 移动到目录下

1
cd /var/waline/data

3.3 下载waline.sqlite文件

1
wget https://raw.githubusercontent.com/walinejs/waline/refs/heads/main/assets/waline.sqlite

3.4 部署配置 docker-compose.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
# docker-compose.yml
#version: '3'

services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8087:8360
volumes:
- /var/alist/data/commonSave/bright/waline/data:/app/data
environment:
TZ: 'Asia/Shanghai'
SQLITE_PATH: '/app/data'
JWT_TOKEN: '自定义token'
AUTHOR_EMAIL: 'xxx@qq.com'
SMTP_HOST: 'smtp.qq.com'
SMTP_PORT: '465'
SMTP_USER: 'xxx@qq.com'
SMTP_PASS: 'xxxx'
SMTP_SECURE: 'true'
SITE_NAME: 'bright的小破站'
SITE_URL: 'https://www.brightchen.top'
COMMENT_AUDIT: 'true'

3.5 启动项目

1
docker compose up -d

4.管理平台

  1. 部署完成后,请访问 <serverURL>/ui/register 进行注册。首个注册的人会被设定成管理员。
  2. 管理员登陆后,即可看到评论管理界面。在这里可以修改、标记或删除评论。
  3. 用户也可通过评论框注册账号,登陆后会跳转到自己的档案页。

5.邮件通知

邮件通知

邮件通知需要配置以下环境变量:

  • SMTP_SERVICE: SMTP 邮件发送服务提供商。

    提示

    你可以在 这里 查看所有支持的运营商。

    如果你的运营商不受支持,你必须填写 SMTP_HOST 和 SMTP_PORT

    • SMTP_HOST: SMTP 服务器地址,一般可以在邮箱的设置中找到。
    • SMTP_PORT: SMTP 服务器端口,一般可以在邮箱的设置中找到。
  • SMTP_USER: SMTP 邮件发送服务的用户名,一般为登录邮箱。

  • SMTP_PASS: SMTP 邮件发送服务的密码,一般为邮箱登录密码,部分邮箱(例如 163)是单独的 SMTP 密码。

  • SMTP_SECURE: 是否使用 SSL 连接 SMTP。

  • SITE_NAME: 网站名称,用于在消息中显示。

  • SITE_URL: 网站地址,用于在消息中显示。

  • AUTHOR_EMAIL: 博主邮箱,用来接收新评论通知。如果是博主发布的评论则不进行提醒通知。

以下是选填的环境变量:

  • SENDER_NAME: 自定义发送邮件的发件人
  • SENDER_EMAIL: 自定义发送邮件的发件地址
  • MAIL_SUBJECT: 自定义评论回复邮件标题
  • MAIL_TEMPLATE: 自定义评论回复邮件内容
  • MAIL_SUBJECT_ADMIN: 自定义新评论通知邮件标题
  • MAIL_TEMPLATE_ADMIN: 自定义新评论通知邮件内容

6.hexo butterfly waline 配置

hexo:7.3.0
butterfly:5.2.2
_config.butterfly.yml配置 waline配置和其js,css

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
28
29
30
waline:  
serverURL: https://waline的地址
bg:
# Use Waline pageview count as the page view count
pageview: false
option:
# requiredMeta: [ nick, mail ] # 选定昵称和评论为必填项
imageUploader: false
search: false
secureDomains:
- xxxip地址
- 域名
- brightchen.top
- www.brightchen.top
locale:
placeholder: 为了您能及时收到相关回复的邮件通知,请填写昵称和邮箱,且确保邮箱的正确性! # 内容区提示
......

......
CDN:
internal_provider: local
third_party_provider: jsdelivr


version: false
custom_format:

option:
waline_css: https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/waline/3.3.1/waline.min.css #官网推荐的css
waline_js: https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/waline/3.3.1/waline.js #官网推荐的js

7.分类文章页面关闭评论

1
2
3
4
title: categories  
date: 2024-12-16 15:29:41
type: "categories"
comments: false #关闭文章评论

8.迁移到mysql

8.1下载waline.sql

1
https://raw.githubusercontent.com/walinejs/waline/refs/heads/main/assets/waline.sql

8.2 创建waline 数据库

1
CREATE DATABASE waline

8.3导入sql文件(优化版)

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

SET NAMES utf8mb4;

CREATE TABLE `wl_Comment` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`comment` text,
`insertedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`ip` varchar(100) DEFAULT '',
`link` varchar(255) DEFAULT NULL,
`mail` varchar(255) DEFAULT NULL,
`nick` varchar(255) DEFAULT NULL,
`pid` int(11) DEFAULT NULL,
`rid` int(11) DEFAULT NULL,
`sticky` boolean DEFAULT NULL,
`status` varchar(50) NOT NULL DEFAULT '',
`like` int(11) DEFAULT NULL,
`ua` text,
`url` varchar(255) DEFAULT NULL,
`createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `wl_Comment`
ADD INDEX `idx_comment_url` (`url`),
ADD INDEX `idx_comment_user_id` (`user_id`),
ADD INDEX `idx_comment_status` (`status`),
ADD INDEX `idx_comment_pid_rid` (`pid`, `rid`),
ADD INDEX `idx_comment_created_at` (`createdAt`),
ADD INDEX `idx_comment_updated_at` (`updatedAt`),
ADD INDEX `idx_comment_sticky` (`sticky`);

# Dump of table wl_Counter
# ------------------------------------------------------------

CREATE TABLE `wl_Counter` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`time` int(11) DEFAULT NULL,
`reaction0` int(11) DEFAULT NULL,
`reaction1` int(11) DEFAULT NULL,
`reaction2` int(11) DEFAULT NULL,
`reaction3` int(11) DEFAULT NULL,
`reaction4` int(11) DEFAULT NULL,
`reaction5` int(11) DEFAULT NULL,
`reaction6` int(11) DEFAULT NULL,
`reaction7` int(11) DEFAULT NULL,
`reaction8` int(11) DEFAULT NULL,
`url` varchar(255) NOT NULL DEFAULT '',
`createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `wl_Counter`
ADD INDEX `idx_counter_url` (`url`),
ADD INDEX `idx_counter_time` (`time`),
ADD INDEX `idx_counter_created_at` (`createdAt`);

# Dump of table wl_Users
# ------------------------------------------------------------

CREATE TABLE `wl_Users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`display_name` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
`password` varchar(255) NOT NULL DEFAULT '',
`type` varchar(50) NOT NULL DEFAULT '',
`label` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`avatar` varchar(255) DEFAULT NULL,
`github` varchar(255) DEFAULT NULL,
`twitter` varchar(255) DEFAULT NULL,
`facebook` varchar(255) DEFAULT NULL,
`google` varchar(255) DEFAULT NULL,
`weibo` varchar(255) DEFAULT NULL,
`qq` varchar(255) DEFAULT NULL,
`2fa` varchar(32) DEFAULT NULL,
`createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `wl_Users`
ADD UNIQUE INDEX `idx_user_email` (`email`),
ADD INDEX `idx_user_type` (`type`),
ADD INDEX `idx_user_created_at` (`createdAt`);

3.4 部署配置 docker-compose.yml文件

“host.docker.internal” # 对于 Windows 和 Mac 用户有效
‘host-gateway’ # 使用 linux

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
28
29
# docker-compose.yml
#version: '3'

services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8087:8360
volumes:
- /var/waline/data:/app/data
environment:
TZ: 'Asia/Shanghai'
MYSQL_HOST: 'mysql的IP地址'
MYSQL_PORT: '3306'
MYSQL_DB: 'waline'
MYSQL_USER: 'mysql user'
MYSQL_PASSWORD: 'mysql密码'
GRAVATAR_STR: 'https://cn.cravatar.com/avatar/{{mail|md5}}?d=monsterid'
AUTHOR_EMAIL: 'email地址'
SMTP_HOST: 'smtp.qq.com'
SMTP_PORT: '465'
SMTP_USER: 'SMTP_PASS的xxx@qq.com'
SMTP_PASS: 'SMTP_PASS的token'
SMTP_SECURE: 'true'
SITE_NAME: '自定义名称比如:bright的小破站'
SITE_URL: '服务域名地址:https://www.brightchen.top'
COMMENT_AUDIT: 'true'

3.5 启动项目

停止服务

1
docker compose down

重启服务

1
docker compose up -d