5分钟搭好WebDAV文件服务器:一份完整的入门到生产指南
5分钟搭好WebDAV文件服务器:一份完整的入门到生产指南
【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav
想要一台随手放文件、手机上随时取的私有服务器,又不想把资料传到公有云?webdav(hacdias/webdav)是一个用 Go 写的轻量 WebDAV 服务器,指向一个目录就能把它变成可联网访问的文件服务,一份配置文件就能跑起来。
它解决什么问题
webdav 的定位是"独立":没有数据库、没有外部服务,单个二进制加一份配置即可运行。它说的是 WebDAV 协议——一种基于 HTTP 的文件传输协议,大多数文件管理 App、NAS 工具和手机备份工具都原生支持,客户端无需二次开发。
| 项目 | 说明 |
|---|---|
| 技术栈 | Go,单二进制,无外部依赖 |
| 协议 | WebDAV(另支持部分更新/断点式写入) |
| 部署方式 | Docker、Homebrew、go install、源码构建 |
| 配置格式 | YAML / JSON / TOML |
| 适用场景 | 个人备份、团队共享、自建文件服务器 |
快速上手
按省事程度从高到低排列:
Docker(轻量 WebDAV 部署的首选)
docker pull ghcr.io/hacdias/webdav:latest拉到最新发布版镜像,挂载配置文件和数据目录即可运行;仓库自带的 compose.yml 是最小可用示例,可直接抄。
macOS(Homebrew)
brew install webdav一条命令完成安装,省去手动下二进制。
Go 工具链
go install github.com/hacdias/webdav/v5@latest直接装最新版;想走源码路线则先
git clone https://gitcode.com/gh_mirrors/we/webdav,再构建即可。
核心能力详解
多用户与加密密码怎么配
在配置的 users 列表里添加用户,Basic 认证(最常见的用户名+密码 HTTP 认证)会自动启用,每个用户还可以指定独立的 directory。生产环境不建议留明文密码,用内置工具生成 bcrypt 密文后填入:
users: - username: john password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi" directory: /data/john生成密文的命令是webdav bcrypt。如果你的认证已由上游网关或 SSO 处理,可设noPassword: true,只透传用户名。
细粒度权限怎么配
权限由 C(创建)、R(读)、U(更新)、D(删除)四个字母组合,全局默认值可以是permissions: R只读;每个用户能单独覆盖,还可以追加按路径或正则匹配的规则——比如只允许读写 .js 结尾的文件。一台服务器就能做到"每人一个目录、外人只读"。另外,directories 选项支持把多个物理目录挂到同一个虚拟根下,不必把所有资料硬塞进一个大目录。
反向代理下怎么跑
生产环境通常前面有 Nginx 或 Caddy,两件事要做:配置里打开behindProxy: true,让日志记录 X-Forwarded-For 里的真实客户端 IP;代理侧转发的头要配全,否则容易 502。TLS 既可以由服务器自己承担(tls、cert、key 三个配置项),也可以直接交给反代终结。
安全与进阶
要把 WebDAV 服务器暴露到公网,重点有三处:密码用webdav bcrypt生成的密文,不要留明文;开启 TLS,服务器直配或反代终结二选一;担心撞库就接 Fail2Ban,解析日志里的 invalid password 记录并自动封禁多次失败的 IP,jail 配置大致如下:
[webdav] enabled = true port = [your_port] filter = webdav logpath = [your_log_path]浏览器端客户端(网页直连)则打开 cors 配置,按需设置允许的域名、请求头和方法。
谁适合用它
家庭与 Homelab 用户:挂到 NAS 或旧笔记本上,手机文件管理 App 直接连,同时可以当作 Android 端 SeedVault 的备份目标,一台顶两用。
小团队:共享项目资料,成员各自有账号和目录,只读成员给 R、核心成员给 CRUD,权限边界清晰,无需再养一套网盘系统。
开发者:临时分发构建产物、日志或静态资源,不必为一个临时需求去申请对象存储。
写在最后
回到开头那个场景:一台"随手放、随时取"的文件服务器,其实只差一份配置文件。更多选项、反代示例和 systemd 服务写法,见 webdav 项目的 README;Docker 镜像 ghcr.io/hacdias/webdav:latest 与最新发布版保持同步,更新时也只需重新拉取。
【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
