【杂谈】博客评论系统
折腾博客的过程中,评论系统可供选择的有很多,最开始我是使用waline/twikoo,但是最近换到Artalk,简单写记录一下使用感受以及部分教程。
Waline
优点:
- 自由评论 —— 完全的 Markdown 支持,同时包含表情、数学公式、HTML 嵌入
- 轻量 —— 53kb gzip 的完整客户端大小
- 强大的安全性 —— 内容校验、防灌水、保护敏感数据等
- 登录支持 —— 在允许匿名评论的基础上,支持账号注册,保持身份
- 完全免费部署 —— 可免费部署在 Vercel 上
缺点: - Vercel评论邮件发送较慢:
目前提交评论基本需要3-4s的响应时间,处理post请求时,需要await发送通知的任务。
if (comment.status !== 'spam') {
const notify = this.service('notify', this);
await notify.run(
{ ...cmtReturn, mail: resp.mail, rawComment: comment },
parentReturn ? { ...parentReturn, mail: parentComment.mail } : undefined
);
}
- 后台无法控制前端
Waline后台界面十分简洁,只提供基本的评论、用户管理和导入导出功能,大部分配置都需要配置相关环境变量(这也算是优点,但是个人不太习惯)
搭建webhook服务提高waline评论相应速度
wanline评论系统在配置邮件提醒服务后,发送评论会有7s左右的等待时间,但使用管理员账号登陆后发送相应速度非常快,参考:
walinejs/waline: 💬 A Simple, Safe Comment System (github.com)
部署Nginx Proxy Manager
- 安装docker以及docker compose
- 部署 Nginx Proxy Manager(或 Nginx)
- 安装Docker以及docker-compose
Docker - 安装Nginx Proxy Manager
Nginx Proxy Manager
- 安装Docker以及docker-compose
- 防火墙放行443,80,81端口
- 访问ip:81,初始化
默认密码为:
Email: admin@example.com
Password: changeme
注意:可能出现问题
解决方法:
docker-compose down
rm -rf data/ letsencrypt/
修改 docker-compose.ymal
:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "(PASSWORD)"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '(PASSWORD)'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: '(PASSWORD)'
volumes:
#- ./data/mysql:/var/lib/mysql
- ./mysql:/var/lib/mysql
重启:
docker-compose up -d
安装waline-async-mail
- 下载源码
git clone https://github.com/soxft/waline-async-mail && cd waline-async-mail
- 编译文件
go build -o waline_mailer main.go
- 修改并重命名配置文件: 编辑
config.example.yaml
并重命名为config.yaml
- 赋权
chmod +x waline_mailer
- 运行
./waline_mailer
不出意外,你会看到提示,告知你服务运行的端口,也可以修改config.yml
进入debug模式。 - A记录解析域名到服务器IP,使用Nginx Proxy Manager反代端口,申请SSL证书(Nginx Proxy Manager提供图形化界面,配置方式十分简单)
或使用 【复刻】在 Fly.io 上搭建 Alist - Limour's Blog的docker部署方式:
mkdir -p ~/app/mailpush && cd ~/app/mailpush && nano docker-compose.ymlgit clone --depth=1
https://github.com/soxft/waline-async-mail.gitcd waline-async-mailnano config.example.yaml # 修改成自己的邮件服务
nano templates/guest.html && nano templates/owner.html # 修改成自己的邮件模板
docker build -t xsot/waline-async-mail . && docker image prunecd ~/app/mailpushsudo
docker-compose up -d
docker-compose.yml
version: "3"
services:
waline-async-mail:
image: xsot/waline-async-mail:latest
volumes: ./waline-async-mail/config.example.yaml:/app/config.yaml
restart: always
networks:
default:
external: true
name: ngpm
- 反代
配置环境变量
根据waline部署方式配置环境变量WEBHOOK
的值。
Artalk
Artalk 是一款简洁的自托管评论系统,你可以在服务器上轻松部署并置入前端页面中。
来到你的博客,或是任意位置,放置 Artalk 评论框,让页面具备丰富的社会化功能。
功能亮点
轻量设计
前端采用 TypeScript (Vanilla JS),轻量级,无冗余依赖,仅 ~30KB (gzipped)。
后端采用 Golang 重制 (Artalk v2),跨平台,体积小巧,五脏俱全,快速部署。
“麻雀虽小,五脏俱全”
- Markdown 语法 + 代码高亮
- 通知中心 - 站内:侧边栏 + 红点标记
- 多形式推送 - 站外:邮件、TG、钉钉、飞书 + 异步执行
- 评论审核:折叠 / 反垃圾 / 频率限制 / 滑动验证
- 多站点:共用同一个后端程序,多站点集中化管理
- 表情包:支持 OwO 格式 + 动态加载
- Artrans:评论数据快速迁移 (导入 / 导出) 工具
- 评论投票 / 身份徽章 / 密码验证 / 说说模式
- 评论盖楼 / 评论分页 / 滚动加载 / 实时预览
- 评论排序 / 评论置顶 / 评论防丢 / 自动填充
- 图片上传 / 页面管理 / 站点隔离 / 夜间模式
穷举不是我们的特长,更多有趣的功能期待你来探索!
“Unlimited Blade Works”
Artalk 正在持续成长,创意由你发挥,价值由你赋予!
不论是 Vue、React、Svelte 的前端项目,还是 WordPress、Typecho、Hexo 等博客系统,都可以快速引入 Artalk,结合诸位的聪明才智,我们相信 Artalk 能够自如应对各种业务场景。
我为什么要使用Artalk
- 独立控制面板,后台可以控制前端大部分功能。
- 邮件通知异步执行。
部署
- 安装Docker
- 部署
docker run -d \
--name artalk \
-p 8080:23366 \
-v $(pwd)/data:/data \
--restart=always \
artalk/artalk-go
- 创建管理员账户
docker exec -it artalk artalk admin
- 配置
- 修改
artalk.yml
配置文件 - 控制中心
- 修改
- 配置反向代理、CDN
本文部分内容可能引用自网络,如有侵权,请与我联系删除!
- 0
- 0
-
分享