使用 Docker 搭建 Waline 评论系统指南
本文将指导使用 Docker 和 Docker Compose 部署 Waline 评论系统,搭配 SQLite 数据库。Waline 是一个轻量、优雅的评论系统,适合集成到个人博客中。以下是完整步骤。
前言
- 官方文档:https://waline.js.org/guide/get-started/
- 本教程使用 Docker Compose 部署。
- 建议为你的域名配置 SSL 证书(例如通过 Nginx 或 Certbot),以确保安全性,尤其是在某些需要 HTTPS 的场景下。
准备
服务器环境:一台运行 Linux 的服务器(例如 Ubuntu)。
Docker 和 Docker Compose:确保已安装。
检查 Docker:
1docker --version
检查 Docker Compose:
1docker-compose --version
如果未安装或者遇到docker-compose urllib3问题请更新docker-compose至最新版,可参考本站docker搭建手册安装;
准备项目目录
在服务器上创建一个目录用于存放 Waline 的配置文件和数据:
1mkdir -p ~/waline/data
2cd ~/waline
编写 docker-compose.yml
在 ~/waline
目录下创建 docker-compose.yml
文件:
1nano docker-compose.yml
将以下内容粘贴进去,并根据需要修改配置项:
以下内容参考steven博客,感谢steven
1version: '3'
2services:
3 waline:
4 container_name: waline
5 image: lizheming/waline:latest
6 restart: always
7 ports:
8 - 8360:8360 #默认映射 `8360:8360`,可根据需要调整主机端口(例如 `3000:8360`)。
9 volumes:
10 - ${PWD}/data:/app/data # `${PWD}/data` 表示当前目录下的 `data` 文件夹,映射到容器内的 `/app/data`
11 environment:
12 TZ: 'Asia/Shanghai' # 时区
13 # SQLite 数据库配置
14 SQLITE_PATH: '/app/data' # 指定 SQLite 数据库文件路径。
15 JWT_TOKEN: '12345' # 用于 API 认证,务必设置为复杂值
16 # 站点基础配置
17 SITE_NAME: '你的博客名称' # 替换为你的博客名称
18 SITE_URL: 'https://your-domain.com' # 替换为你的博客 URL
19 SECURE_DOMAINS: 'your-domain.com' # 替换为你的域名
20 # 站长邮箱
21 AUTHOR_EMAIL: 'your-email@example.com' # 替换为你的邮箱
22 # SMTP 服务配置(可选,配置邮件通知,需根据你的邮箱服务商调整(例如 163、Gmail))博主未使用
23 #SMTP_SERVICE: '163' # SMTP 服务商,可选其他(如 Gmail)
24 #SMTP_USER: 'your-email@163.com' # 发件邮箱
25 #SMTP_PASS: 'your-smtp-password' # SMTP 密码或授权码
26 # 安全配置(可选)博主未使用
27 #IPQPS: '80' # 单 IP 评论频率限制
28 #COMMENT_AUDIT: 'true' # 是否需要审核评论
29 #AKISMET_KEY: 'your-akismet-key' # 反垃圾评论 Key(可选,需在 akismet.com 申请)
保存并退出(Ctrl+O
,回车,Ctrl+X
)。
下载初始 SQLite 文件
Waline 的 SQLite 数据库需要一个预初始化的文件,而不是自动创建。你可以从官方下载:
- 官方说明链接:https://waline.js.org/guide/database.html#sqlite
- sqlite下载连接 下载
waline.sqlite
文件。 - 将文件放入数据目录:
1mv ~/Downloads/waline.sqlite data/waline.sqlite
注意:不使用官方提供的
waline.sqlite
,Waline 无法自动创建表,会报错(如no such table: wl_Comment
)。
启动 Waline
在 ~/waline
目录下运行:
1docker-compose up -d
检查容器状态:
1docker ps
可以看到一个名为
waline
的容器在运行。查看日志:
1docker logs waline
如果看到类似
Server running at http://0.0.0.0:8360
的消息,说明启动成功。
验证服务
- 在浏览器访问
http://你的服务器IP:8360
,检查 Waline 是否正常响应。 - 注册管理员账号:访问
http://你的服务器IP:8360/ui/register
,按提示注册第一个用户(将成为管理员)。
集成到博客
在hugo.yaml
中添加如下代码:
1params:
2 comments: # 评论系统配置
3 enabled: true # 启用评论功能
4 provider: waline # 使用 Waline 作为评论提供者
5
6 waline: # Waline 配置
7 serverURL: https://你的服务区ip或url/ # Waline 服务器地址
8 lang: zh-cn # 评论语言,中文
9 pageview: true # 启用页面浏览量统计
10 emoji: # 表情包配置
11 - https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo # 表情包路径
12 requiredMeta: # 必填字段
13 - name # 姓名
14 - email # 邮箱
15 locale: # 本地化设置
16 admin: 博主 # 管理员名称
17 placeholder: 🎉 留下你的脚印. # 输入框占位符
重新生成并部署博客:
1cd /path/to/hugo-site
2hugo
3# 将 public/ 部署到 Web 服务器
博主使用的stack主题,默认支持,如果主题不支持 Waline,手动添加客户端代码到 layouts/partials/footer.html
:
1<script src="//unpkg.com/@waline/client/dist/waline.js"></script>
2<div id="waline"></div>
3<script>
4 Waline.init({
5 el: '#waline',
6 serverURL: 'http://你的服务器stackIP:8360或url'
7 });
8</script>
注意事项
- SSL 证书:
- 为安全起见,建议配置 HTTPS。可使用 Nginx 反向代理并通过 Certbot 获取证书。
- 示例 Nginx 配置:
1server { 2 listen 80; 3 server_name your-domain.com; 4 location / { 5 proxy_pass http://localhost:8360; 6 proxy_set_header Host $host; 7 proxy_set_header X-Real-IP $remote_addr; 8 } 9}
数据备份:
定期备份
data/waline.db
文件。
故障排查
错误:
no such table: wl_Comment
或no such table: wl_User
:确保使用了官方的waline.sqlite
文件。无法访问:检查防火墙是否开放端口:
1sudo ufw allow 8360