5分钟上手:从零搭建个人 WebDAV 服务器的实战教程 📅 发布时间:2026/8/21 22:10:16 👁 浏览次数: 5分钟上手从零搭建个人 WebDAV 服务器的实战教程【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdavwebdav 是一个用 Go 语言编写的独立 WebDAV 服务器。部署之后你把服务器上的一个目录挂载成个人云存储手机、电脑就能同步文件或者搭一块家庭共享盘。全文按装好 → 验证 → 配置 → 权限 → 加固 → 服务化的顺序推进每一步都有可直接复制的命令。 WebDAV 服务器解决什么问题场景一手机拍了大量照片想传到家里的机器上自动备份但不想依赖商业网盘的容量和审核。场景二全家共用一个 U 盘传电影你想换成一块放在 NAS 或 VPS 上的共享目录。这两种情况都只需要一台能联网的机器加上一个支持 WebDAV 的客户端而这个项目就是那个服务器端。 WebDAV 服务器安装命令Docker 三条命令跑起来先准备一个存放共享文件的目录data再写一个配置文件config.yml第 4 节会逐项解释。下面这条命令在后台启动容器把 6065 端口映射出去并把配置和文件目录挂进去docker run -d --name webdav \ -p 6065:6065 \ -v $(pwd)/config.yml:/config.yml:ro \ -v $(pwd)/data:/data \ ghcr.io/hacdias/webdav -c /config.yml看到docker ps里出现 webdav 容器且状态是 Up就算启动成功。不用 Docker 的话也可以选别的路macOS 上brew install webdav或执行git clone https://gitcode.com/gh_mirrors/we/webdav进入目录后go build自己编译两种方式装完效果相同。✅ 验证 WebDAV 服务器是否跑通装完别急着配先用 curl 发一个 WebDAV 协议自带的 PROPFIND 请求确认认证和协议层都正常curl -i -u admin:admin -X PROPFIND http://127.0.0.1:6065/响应头里出现HTTP/1.1 207 Multi-Status且正文是 XML说明服务已就绪换个错误密码会收到 401。更直观的验证是macOS 里按⌘K选连接服务器填入webdav://127.0.0.1:6065Windows 里直接把这个地址设为网络驱动器能列出目录就算真正打通了。⚙️ webdav 配置项说明config.yml 怎么写配置文件支持 YAML、JSON、TOML 三种格式选你顺手的即可。下面这份是最小可用配置改完保存后重启容器或进程生效address: 0.0.0.0 port: 6065 directory: /data behindProxy: false users: - username: admin password: admin permissions: CRUD启动日志里出现监听 6065 端口的信息且不再报配置错误就是配置被正确读入的标志。各项含义如下配置项含义说明address监听地址0.0.0.0表示外部 IP 也能访问仅本机可用127.0.0.1port服务端口建议选 1024 以上避免和常见服务冲突directory共享根目录用户能看到的文件都在这里填绝对路径更稳users账号列表一旦定义了用户Basic 认证自动开启每个用户还可以单独指定目录和权限permissions该用户的默认权限不写时全局默认只有 R只读behindProxy是否藏在反向代理后接了 Nginx 等代理必须设为true否则日志里的客户端 IP 会是代理的地址另外两个常用项log.format可以切成json便于落盘分析cors.enabled设为true才能让浏览器里的前端应用直接调它。 webdav 权限怎么设置CRUD 四个字母的含义权限用四个字母表示可以任意组合比如RC表示能读、能新建不能改不能删CCreate在目录里新建文件和文件夹RRead列出目录、下载文件UUpdate覆盖写入已有文件DDelete删除文件全局给个默认值再对特定路径追加规则是更贴近实际的做法。下面这份规则的含义是默认只读/movies/这个文件夹可以增删改查所有.mkv电影文件只许读。规则从列表末尾往前匹配第一条命中的规则生效permissions: R rules: - path: /movies/ permissions: CRUD - regex: ^..mkv$ permissions: R改完权限后用对应账号再连一次在/movies/里建文件夹成功、对.mkv文件保存被拒绝说明规则按预期工作了。️ 上线前安全清单密码、Fail2Ban 与防火墙对外网开放之前把下面四件事过一遍。1. 把密码从明文里挪走。密码有三档可选明文只适合本地测试上线前必须换掉生产环境推荐 Bcrypt用自带的命令生成哈希webdav bcrypt 你的密码命令会打印一行$2y$10$...形式的哈希把它填进配置即完成加密例如password: {bcrypt}$2y$10$...。第三档是环境变量账号密码整体不进配置文件password: {env}ENV_PASSWORD适合密码由外部系统注入的场景。2. 给登录加 Fail2Ban自动封掉暴力破解的 IP。先在filter.d/webdav.conf里加匹配规则让 Fail2Ban 能从日志里认出失败的登录并提取 IP[INCLUDES] before common.conf [Definition] failregex ^.*invalid password\s*\{.*remote_address:\s*HOST:\d\s*\} ^.*invalid username\s*\{.*remote_address:\s*HOST:\d\s*\} ignoreregex 再在jail.d/webdav.conf里声明要监控的服务端口和日志路径换成你自己的值[webdav] enabled true port 6065 filter webdav logpath /var/log/webdav.log banaction iptables-allports ignoreself false执行sudo systemctl restart fail2ban再用sudo fail2ban-client status webdav看到 jail 处于 running 状态防护就算挂上了。3. 用防火墙收窄来源。如果这个盘只给家庭网络用就只放行内网段sudo ufw allow from 192.168.1.0/24 to any port 6065 proto tcp命令执行完ufw status里出现这条规则即生效其余 IP 直接进不来和 Fail2Ban 形成两层。4. 顺手把日志落成 JSON。把log.format设为json、outputs指向日志文件Fail2Ban 和事后排查都靠它。debug排查完就关掉别长期开着日志级别越高开销越大。 WebDAV 服务器和 Nginx 反向代理怎么配代理层最容易踩的坑是头信息没转发全导致 COPY、MOVE 这类操作报 502。下面这段 Nginx 配置把这些头补齐记得把example.com换成你实际访问的域名改完nginx -s reloadlocation / { proxy_pass http://127.0.0.1:6065; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; # 让 COPY / MOVE 正常工作把 Destination 里的域名剥掉只留路径 set $dest $http_destination; if ($http_destination ~ ^https://example.com(?path(.))) { set $dest /$path; } proxy_set_header Destination $dest; }同时记得把 webdav 配置里的behindProxy改成true。之后通过域名访问、重命名和移动文件都不再报 502代理层就调通了。 把 webdav 注册为 systemd 系统服务裸跑进程重启服务器就没了。下面这段服务文件让它开机自启、挂掉自动拉起保存为/etc/systemd/system/webdav.service[Unit] DescriptionWebDAV Afternetwork.target [Service] Typesimple Userroot ExecStart/usr/bin/webdav --config /opt/webdav.yml Restarton-failure [Install] WantedBymulti-user.target执行sudo systemctl daemon-reload sudo systemctl enable --now webdavsystemctl status webdav显示 active (running)服务化完成。日常维护记住两件事就够了升级版本时重新编译二进制或拉新镜像再重启服务别拖着旧版本跑日志按天滚动磁盘别塞满。这个项目适合手里有一台闲置机器或廉价 VPS、又不想为文件同步付订阅费的人。它就是一个单文件可执行程序不依赖数据库内存占用很低。配置上支持 YAML、JSON、TOML认证和权限都能按目录和文件后缀细分。剩下的工作就是照着上面的清单把配置改完、重启服务。【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考