yggdrasil/README.md
xfy c237007111 docs: add production deployment guide
服务端的安全逻辑(会话 Cookie Secure 标志、限流按真实客户端 IP 聚合、
CSRF origin 校验)都默认前置反向代理并终结 TLS,但缺少一份成体系的部署
文档说明这一点。不知情的部署者直接把 3000 端口暴露到公网 HTTP 会同时踩中
cookie 无 Secure、限流退化/可伪造、CSRF Host 回退可绕过三个坑。

新增 docs/DEPLOYMENT.md:
- 醒目的前置警告,禁止裸暴露 3000 端口到公网 HTTP
- nginx + Caddy 最小配置示例(含 XFF 覆写、body 上限对齐应用侧 10 MiB、
  代理超时对齐应用侧 300s)
- 生产环境必设变量三件套及 TRUSTED_PROXY_COUNT 设错的两种后果
- Docker 部署示例(绑定回环地址,反代作为唯一公网入口)
- 部署后验证清单

README 加「生产部署」节链接到该文档。代码无需修改——三个环境变量的保守
默认值与 .env.example 的警告注释设计上是正确的,缺口纯粹是文档。
2026-06-29 10:55:24 +08:00

46 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Yggdrasil
基于 Dioxus 0.7 的全栈博客系统Rust 单一代码库同时编译为 WASM 前端和原生服务端。
## 技术栈
- **框架**: Dioxus 0.7 (fullstack)
- **数据库**: PostgreSQL + tokio-postgres
- **样式**: Tailwind CSS v4
- **密码**: Argon2
- **会话**: UUID token + cookie
## 功能
- 邮箱注册 / 登录(单管理员模式,首次注册后关闭)
- 会话管理与自动过期清理
- 暗色 / 亮色主题切换
- 后台文章撰写Tiptap Markdown 编辑器)
- 文章归档与标签浏览
## 开发
依赖 Rust 1.95+、wasm32 目标、`dx` CLI、tailwindcss CLI v4 和 PostgreSQL。
```bash
# 配置数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/yggdrasil
# 运行迁移(自动创建数据库并按顺序执行 migrations/ 下所有 SQL
./migrate.sh
# 启动开发服务器
make dev
```
## 构建
```bash
make build
```
## 生产部署
生产环境必须前置反向代理nginx/Caddy做 TLS 终结,并设置 `APP_BASE_URL`
`COOKIE_SECURE=true``TRUSTED_PROXY_COUNT=1`。详见 [部署指南](docs/DEPLOYMENT.md)。