2.3 KiB
2.3 KiB
davbox · 项目记忆
一句话
极简 WebDAV 服务:admin 管账号、client 管文件、App 用来同步。一个应用一个账号一个目录,互不可见。
立项原因(2026-09-28)
用户需要一个像坚果云"创建应用"那样简单的 WebDAV,主要给 App 用。 调研过的市面方案与实测结论:
| 方案 | 实测结论 |
|---|---|
| SFTPGo(12,588★) | 功能对 ✓ 隔离实测通过 ✓ 但十几概念 + 管理端全英文 ✗ "功能复杂度"远超需求 |
| dufs(10,802★,3.02 MiB) | 隔离实测通过 ✓(越权 403/403、../ 400)但只有启动参数、无 admin ✗ |
| hacdias/webdav(5,882★,7.09 MiB) | 两种配置写法隔离都没锁住 ✗(可见兄弟目录 / 暴露容器根) |
| rclone / copyparty / OpenList / Alist / Cloudreve | 均无"每账号独立根 + 管理页"这套 ✓ 或过重 ✗ |
| filebrowser(35,936★) | 根本没有 WebDAV ✗ |
| 结论 | 缺口只有薄薄一层 → 自研产品层,协议用官方库 ✓ |
位置与环境
- 代码:本仓库
- 端口规划:开发/测试
127.0.0.1:18900 - 数据目录:
./data(账号 JSON + 各应用目录 + 审计 JSONL) - 编译:Go 1.24+ ✓
- 前端构建:Node v26 ✓
技术选型
见 docs/DECISIONS.md(含全部被否方案与当时的实测证据)。
要点:Go + golang.org/x/net/webdav(官方,7543 行实现 / 4275 行测试)+ React/Vite/TS 内嵌 + JSON 账号 + 单静态二进制。
部署
- systemd unit 常驻 ✓(已上线)
- nginx 反代 + TLS ✓(certbot 签发证书)
- 认证:自带账号体系(默认) ✓;管理端可关闭自带口令(
AUTH_MODE=sso),协议端点永远保留自带账号 ✓
协作约定
- 需求文档在
docs/REQUIREMENTS.md,验收标准在docs/SPEC.md✓ - 需求文档写明改动范围与边界(不动生产进程与端口)✓
- 不硬编码任何域名与 IP ✓(一律环境变量或配置注入)
- 文案:中文、唯美克制、禁 emoji / 鸡汤 / AI 腔 ✓
进度
- 技术选型 + 命名 + 建项目(2026-09-28)
- 阶段一:底盘(账号隔离 + 六动词 WebDAV)
- 阶段二:admin 页 + client 页
- 部署:systemd + nginx + TLS
- 阶段三(可选):配额 / 用量 / 分享链接