Skip to content

Latest commit

 

History

History
145 lines (108 loc) · 9.8 KB

README.zh-CN.md

File metadata and controls

145 lines (108 loc) · 9.8 KB

waline-mini

GitHub Release GitHub Issues or Pull Requests GitHub commit activity GitHub Downloads (all assets, all releases) GitHub License Code Lines

English | 简体中文

一个使用 Rust 实现的高性能 Waline 评论系统

介绍

Waline-mini 是原 Waline 评论系统的轻量级 Rust 实现,使用的内存比 Node.js 少 95%,是资源受限服务器的替代方案

在我的 Ubuntu 服务器上,waline-mini 仅需要 5612kb=5.48mb的内存占用

mem

  • 极低的内存使用率: 只有 Node.js 版本内存占用的 1/25
  • 零依赖部署: 无需安装 Node.js 环境,只需要一个可执行文件即可运行
  • 轻松替换: 实现了原 Waline 大部分必要的 API
  • 同步更新: 与原 Waline 的更新保持同步

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

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环境进行覆盖即可

Shuttle

waline-mini 支持部署在 Shuttle 上,首先使用以下命令克隆shuttle分支到本地

git clone -b shuttle https://github.com/JQiue/waline-mini.git

然后,在项目根目录创建一个.shuttle.env用于配置 waline-mini 的环境变量

最后按照 Shuttle 的步骤进行部署

LeanCloud

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 邮件服务提供商:QQGMail126163 -
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 数据?

  1. 从原 waline 后台管理页面导出 JSON
  2. 在 waline-mini 后台管理页面导入 JSON

支持哪些数据库?

目前支持 SQLite 和 MySQL/MariaDB,可以通过添加编译特性支持 PostgreSQL

参考