外观
rustaline类似 Valine 的开源评论服务
Rustaline 是一个基于 Rust 语言,使用 axum 框架与 Sea-ORM 开发的简单评论服务。支持楼中楼与 Gravatar。支持从 Valine 迁移数据。
# ① 准备环境变量:JWT 密钥必填(≥32 字节),首次启动的管理员账号种子
cp .env.example .env
# .env 中设置:
# APP_JWT_SECRET=$(openssl rand -base64 48) # 缺失或过弱时应用拒绝启动
# APP_INITIAL_ADMIN_USERNAME=admin
# APP_INITIAL_ADMIN_PASSWORD=<初始密码> # 仅首次入库时生效,之后走管理面板改密
# APP_PORT=8080 # 宿主机发布端口(默认 8080,仅绑 127.0.0.1)
# ② 构建并启动
docker compose up -d --build
# ③ 验证
curl http://localhost:8080/health # APP_PORT 改了的话换对应端口compose 把 app 发布到宿主机 127.0.0.1:$APP_PORT(在 .env 里设 APP_PORT,默认 8080),Caddyfile 指向同一端口即可(Caddy 自动设置 X-Forwarded-For 并签发 TLS):
comments.example.com {
reverse_proxy 127.0.0.1:8080 # 端口与 APP_PORT 保持一致
}在博客页面中引入 SDK + 两行初始化即可(server 填你的 rustaline 服务地址):
<!-- ① 引入 SDK -->
<script src="https://你部署的评论服务域名/sdk/rustaline.js"></script>
<!-- ② 挂载点 + 初始化 -->
<div id="comments"></div>
<script>
new Rustaline({
el: '#comments', // 挂载点(CSS 选择器或 DOM 元素)
server: 'https://你部署的评论服务域名', // rustaline 服务地址
url: location.pathname, // 文章标识,默认当前路径
lang: 'auto', // 语言:'auto'(跟随浏览器)| 'zh-CN' | 'en',或自定义字典
placeholder: '说点什么吧…',
gravatarCdn: 'https://gravatar.loli.net/avatar/', // 头像 CDN(gravatar 协议镜像)
colorPattern: '#2196f3', // 主题种子色,派生整套配色
darkMode: 'auto' // 明暗:'auto'(跟随系统)| 'light' | 'dark'
});
</script>本项目主要用 AI 完成,作者我(baiyuanneko)也不会 Rust 喵,不过咱还是有古法编程功底的:在 vibe coding 热潮之前(2025.6)就已经是 Java 软件开发工程师了,而且在 2025 年之前就手写和维护过很多 Java/TS/Python/React/Vue 项目,所以对于项目的安全性和可靠性还是有基本的保证的,并且对 Rust 的这些最佳实践也有学习。也欢迎任何用户如果发现问题及时在 Issues 中反馈喵!
以及本项目也由 欧阳淇淇 与 HyacinthHaru 帮忙用顶尖模型(GPT-6 Astra / Claude Fable 5.1 / Kimi K3 Max 等)扫描过安全性并做 Code Review,所以不用太担心本项目的安全问题(