Hermes 666c43a3ec chore: 项目立项 —— davbox(极简 WebDAV:admin 管账号 / client 管文件)
- 技术选型:Go + golang.org/x/net/webdav(官方底盘,7543 行实现/4275 行测试)
- 前端:React + Vite + TS,产物 embed 进单二进制
- 账号:JSON 文件,不上数据库
- docs/DECISIONS.md 记录全部候选与被否理由(含实测证据)
- docs/REQUIREMENTS.md 阶段一/二/三范围与验收标准
2026-09-28 16:07:23 +08:00

davbox

一个概念只有两个的自建 WebDAV 服务:admin 管账号,client 登账号管文件。 主要给 App 用(思源笔记、Joplin 等通过 WebDAV 同步),一个应用一个账号一个目录,互不可见。

为什么自己做

市面上的开源 WebDAV 服务要么是给运维用的平台(SFTPGo:十几个概念、管理端全英文), 要么只有启动参数没有管理界面(dufs),要么隔离实测不可信(hacdias/webdav)。 需要的缺口只有薄薄一层:极简的账号管理 + 可信的目录隔离。协议层不重写,用 Go 官方实现。

技术栈

  • 后端:Go 1.24 + golang.org/x/net/webdav(官方协议实现,不自研协议)
  • 前端:React + Vite + TypeScript,构建产物 //go:embed 进二进制
  • 账号:JSON 文件(+ JSONL 审计日志),不上数据库
  • 交付:单个静态二进制

选型依据与全部被否方案见 docs/DECISIONS.md。

形态

admin 页  ── 新增/删除应用账号、改密码、看每个账号的目录与用量
client 页 ── 账号登录后浏览/上传/下载/删除/新建文件夹
WebDAV    ── https://<域名>/<应用名>/  ← 思源、Joplin 等 App 直接填这个

目录结构

cmd/davbox/     程序入口
internal/       账号、隔离、admin/client API
web/            前端源码(Vite + React + TS)
docs/           需求与选型文档

状态

阶段一:底盘(账号隔离 + 六动词 WebDAV)—— 需求已定稿,待实现 阶段二:admin 页 + client 页 阶段三(可选):配额、用量统计、只读账号、分享链接

S
Description
极简自托管 WebDAV 服务:一个应用一个账号一个目录,自带 admin/client 页,单二进制
Readme MIT
143 KiB
0 Stars 1 Watchers 0 Forks
Languages
Go 47.1%
Shell 29.9%
TypeScript 17.5%
CSS 5%
Makefile 0.3%
Other 0.2%