English | 简体中文
一个使用 Rust 实现的高性能 Waline 评论系统
Waline-mini 是原 Waline 评论系统的轻量级 Rust 实现,使用的内存比 Node.js 少 95%,是资源受限服务器的替代方案
在我的 Ubuntu 服务器上,waline-mini 仅需要 5612kb=5.48mb
的内存占用
- 极低的内存使用率: 只有 Node.js 版本内存占用的 1/25
- 零依赖部署: 无需安装 Node.js 环境,只需要一个可执行文件即可运行
- 轻松替换: 实现了原 Waline 大部分必要的 API
- 同步更新: 与原 Waline 的更新保持同步
功能 | 可用性 | 状态 |
---|---|---|
页面浏览人数计数器 | 完全可用 | 稳定 |
文章反应 | 完全可用 | 稳定 |
评论格式支持 | 完全可用 | 稳定 |
用户标签 | 完全可用 | 稳定 |
国际化 | 完全可用 | 稳定 |
邮件通知 | 几乎可用 | 进行中 |
安全性:跨站脚本攻击 | 完全可用 | 稳定 |
安全性:频率限制 | 完全可用 | 稳定 |
安全性:防止灌水 | 完全可用 | 稳定 |
安全性:评论审核 | 完全可用 | 稳定 |
安全性:反垃圾评论 | 完全可用 | 稳定 |
安全性:违禁词 | 完全可用 | 稳定 |
安全性:安全域名 | 不可用 | 进行中 |
安全性:不允许的 IP 列表 | 完全可用 | 稳定 |
OAuth | 不可用 | 进行中 |
数据迁移 | 完全可用 | 稳定 |
双因素认证 | 完全可用 | 稳定 |
从 GitHub Releases 下载对应平台的可执行文件,以 Linux + SQLite 使用示例,你首先需要从asset
获取准备好的waline.sqlite
文件:
# 设置必要的环境变量
export DATABASE_URL=sqlite:///path/to/waline.sqlite
export JWT_TOKEN=your_secret_key
export SITE_NAME=your_site_name
export SITE_URL=your_site_url
# 启动
./waline-mini
docker run -d \
-e JWT_TOKEN=your_secret_key \
-e SITE_NAME=your_site_name \
-e SITE_URL=your_site_url \
-p 8360:8360 \
jqiue/waline
由于镜像打包时已内置 SQLite 作为默认存储,使用 SQLite 作为存储时,无需指定DATABASE_URL
,如果想使用别的数据库只需要添加-e DATABASE_URL
环境进行覆盖即可
waline-mini 支持部署在 Shuttle 上,首先使用以下命令克隆shuttle
分支到本地
git clone -b shuttle https://github.com/JQiue/waline-mini.git
然后,在项目根目录创建一个.shuttle.env
用于配置 waline-mini 的环境变量
最后按照 Shuttle 的步骤进行部署
LeanCloud 国内版不提供自定义域名,国际版虽提供域名但国内无法访问,请自行权衡
使用 LeanCloud 直接拉取仓库进行部署,分支需要填写leancloud
如果使用 SQLite 作为数据存储,则环境变量DATABASE_URL
应该填入sqlite://./waline.sqlite?mode=rwc
。使用 LeanCloud 部署时,每次都会包含一个全新的 SQLite 文件,所以在重新部署前导出数据,重新部署后在导入数据,当升级 waline-mini 重新进行部署时这个步骤非常重要
用环境变量配置 waline-mini:
环境变量 | 描述 | 是否需要 | 默认值 |
---|---|---|---|
DATABASE_URL | SQLite and MySQL/MariaDB 是支持的,随时可以添加编译特性对 PostgreSQL 进行支持。protocol://username:password@host/database |
✅ | - |
JWT_TOKEN | 使用一个随机字符串来生成 JWT 签名密钥 key | ✅ | - |
SITE_NAME | 网站名称 | ✅ | - |
SITE_URL | 网站地址 | ✅ | - |
SERVER_URL | 自定义服务器地址 | auto | |
HOST | 监听地址 | 127.0.0.1 |
|
PORT | 监听端口 | 8360 |
|
WORKERS | 工作线程数 | 1 | |
LEVELS | 根据评论的数量给每个用户一个评级标签 | - | |
SMTP_SERVICE | SMTP 邮件服务提供商:QQ ,GMail ,126 ,163 |
- | |
SMTP_HOST | SMTP 服务器地址 | - | |
SMTP_PORT | SMTP 服务器端口 | - | |
SMTP_USER | SMTP 用户名 | - | |
SMTP_PASS | SMTP 密码 | - | |
AUTHOR_EMAIL | 博主的邮箱,用来判断发表的评论是否是博主发表的。如果是由博主发布的,则不会有提醒通知 | - | |
IPQPS | 基于 ip 的评论发布频率以秒为单位限制。设置为0 表示没有限制 |
60 |
|
COMMENT_AUDIT | 评论审查开关。启用后,每个评论都需要由管理员批准,因此建议在占位符中提示 | false |
|
AKISMET_KEY | Akismet 反垃圾评论服务 Key (默认开启,不用请设置为false ) |
86fe49f5ea50 |
|
LOGIN | 当设置为LOGIN=force 时会要求登录才能评论 |
false |
|
FORBIDDEN_WORDS | 违禁词配置,包含违禁词的内容会直接标记为垃圾评论 | ||
DISALLOW_IP_LIST | IP 黑名单配置,名单中的 IP 访问会直接返回 403 错误,比如:8.8.8.8,3.3.3.3 |
||
SECURE_DOMIANS | 安全域名配置。配置后非该域名来源的请求会返回 403 状态码。支持字符串、正则、数组类型,不配置表示允许所有域名来源 | ||
DISABLE_AUTHORE_NOTIFY | 是否禁止新评论通知 | false |
|
DISABLE_REGION | 是否隐藏评论者的归属地 | false |
|
DISABLE_USERAGENT | 是否隐藏评论者的 UA | false |
|
IP2REGION_DB | 自定义 IP 查询库路径,waline-mini waline-mini 并不包含 xdb 文件,需要手动提供 |
- 从原 waline 后台管理页面导出 JSON
- 在 waline-mini 后台管理页面导入 JSON
目前支持 SQLite 和 MySQL/MariaDB,可以通过添加编译特性支持 PostgreSQL