梨窝与梨记介绍
梨窝是什么
梨窝(lily-nest) 是一个基于 Rust + Axum 的个人网站项目。
它跑在一台玩客云(Armv7l Cortex-A5 4C4T,1G DDR3 内存)上,在未加入梨记模块的时候,冷启动只吃 684KB 内存,稳定运行常驻 3.3MB。本地回路 QPS 可以跑到 65 万(HTTP/1.1)。
没有数据库、没有前端框架、没有 Docker——就是 Rust 编译出来的一个 6.9MB 二进制,扔到服务器上稍微配置下就能跑。
技术栈
- 后端:Rust 2024 + Axum + Tokio
- 前端:原生 HTML + Material You CSS,零 JS 框架依赖
- 配置:TOML 文件驱动(site.toml / projects.toml / changelog.toml / config.toml)
- TLS:rustls,release 模式强制 HTTPS
- 安全:CSP、HSTS、JWT 管理后台认证、Rate Limit、HPACK bomb 32KB 协议层防御
主要功能
- 首页动态渲染(项目展示、关于我、更新日志时间轴)
- 管理后台(/admin):在线编辑 TOML 配置 + 笔记 CRUD,JWT 鉴权
- 静态资源预压缩(Gzip / Brotli / Zstd)
- 三级缓存:内存缓存 → 304 协商 → CDN 边缘
- RFC 9116 security.txt 安全披露支持
- RESTful API(health / profile / admin)
梨记是什么
梨记(lily-note) 是 v0.3.0 引入的轻量级笔记模块。
每篇笔记就是一个带 frontmatter 的 .md 文件,放在 notes/ 目录下。没有 MySQL,没有 Redis,只有纯文本文件。
纯文件驱动
写 markdown 就是写笔记,直接 scp 进去也能用
100% 异步非阻塞
基于 tokio::fs,不阻塞事件循环
全文检索
原生 JS 实现,零网络请求,支持标题 / 摘要 / #标签 过滤
管理后台
在线编辑器新建、编辑、删除笔记,实时落盘
Markdown 原文直出
支持 ?format=markdown 或 Accept: text/markdown 返回原始 .md
缓存友好
详情页 CF 边缘缓存 1h,列表页实时更新
部署
梨窝目前跑在玩客云(OneCloud / armv7l)上,通过 systemd 管理,WG 隧道 + Cloudflare 代理对外服务。二进制约 6.9MB(tar.xz 打包后 2.4MB),部署就是 scp + 重启服务的事。
/etc/systemd/system/lily-nest.service
[Unit]
Description=Lily Nest Rust Web Service
After=network.target
[Service]
Type=simple
ExecStart=/data/lily-nest/lily-nest
WorkingDirectory=/data/lily-nest/
Restart=always
RestartSec=5
User=lily-nest
Group=lily-nest
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
注意:梨记的缓存目前关闭了,迁就这个 Accept: text/markdown 请求头。