waline博客评论系统自部署
一、背景
最新迁移博客至Halo,发现一款不错的评论系统,Waline
二、Waline介绍
Waline是一款快速、简洁且高效的无后端评论系统,支持多种博客程序,如Hexo、Jekyll、Typecho、Hugo和Ghost等。它基于LeanCloud,用户可以通过邮箱注册并创建Valine应用,获取App ID和App Key来进行使用。配置简单,仅需加入一些JavaScript代码。支持邮件通知和安全验证码。支持Markdown语法和多级回复。具有强大的自由度。可以设置黑名单和访客记录等功能,保证评论系统更加安全。
三、部署Waline
3.1 部署条件
- 一台有公网 IP 的服务器【1C2g 即可】
- 部署 docker-compose 环境
- 需要 nginx 反向代理
3.2 部署Waline后端服务
官网:https://waline.js.org/guide/deploy/vps.html#docker-%E9%83%A8%E7%BD%B2
本次部署采用 SQLite 单文件数据库,需要准备 SQLite 数据库文件。官方下载链接
docker-compose.yml
官网示例:
本博客优化后配置
在环境变量中,参考自己此前在 Velcel 中的配置,搬运过来即可,详细配置项可参考官方文档。
version: "3"
services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8360:8360
volumes:
- ${PWD}/data:/app/data
environment:
TZ: "Asia/Shanghai"
SQLITE_PATH: "/app/data"
JWT_TOKEN: "xxxxxxxxxx" # 自行设置
SITE_NAME: '运维小弟' #站点名称
SITE_URL: 'https://srebro.cn'
SECURE_DOMAINS: "srebro.cn" # 安全站点,限制访问权限
DISABLE_REGION: "false" # 是否禁用IP归属地
DISABLE_USERAGENT: "false" # 是否禁用浏览器标识
COMMENT_AUDIT: "false" #评论发布审核开关。开启后评论需要经过管理员审核后才能显示
# 以下是邮件通知的变量,参考官方邮件
SMTP_SERVICE: 'QQ'
SMTP_USER: '12345678@qq.com'
SMTP_PASS: 'xxx' #邮箱授权码
SMTP_SECURE: 'true' #是否使用 ssl
AUTHOR_EMAIL: '12345678@qq.com'
在当前目录下创建 data
文件夹,并将此前下载的 waline.sqlite
文件复制到其下。
最终目录结构如下:
|waline
|--docker-compose.yml
|--data
|--waline.sqlite
采用以下命令,拉起 Waline
服务
docker-compose up -d
查看 waline 运行状态
[root@web waline]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
waline "docker-entrypoint.s…" waline running 0.0.0.0:8360->8360/tcp, :::8360->8360/tcp
3.3 部署Nginx 反向代理服务
官网配置: https://waline.js.org/guide/deploy/vps.html#nginx-%E9%85%8D%E7%BD%AE
docker
跑起来后是运行在本地8360
端口,需要反向代理到自己配置的域名。- 如果不配置
SSL
可以注释掉 ssl 相关配置,以及rewrite
重定向内容
server
{
listen 80;
listen 443 ssl http2;
server_name your.domain.server.name;
root /www/wwwroot/your.domain.server.name;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
# SSL setting
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
# proxy to 8360
location / {
proxy_pass http://127.0.0.1:8360;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
}
}
3.4 访问控制台
地址后面跟上/ui进入管理页面,首次需要注册个账号默认为管理员
https://your.domain.server.name/ui/
可后台管理评论
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果