ARTICLE · 1113024
静听使用说明|电脑或服务器自建 WebDAV
系列第 03 篇。音乐在电脑或服务器上,想自己提供一个 WebDAV。接进静听的操作见第 05 篇。
本篇以 rclone 为主线写完整流程,因为它跨 Windows、macOS、Linux,官方文档也把认证、只读和 HTTPS 参数写得很清楚。其他方案只做选型提醒。
为什么推荐 rclone
| rclone serve webdav | ||
不适合单独当通用 WebDAV 服务端PROPFIND |
推荐路线:rclone serve webdav
第一步:安装 rclone
从 rclone 官网下载对应平台的版本,或者用你系统的包管理器安装。
第二步:起服务
把音乐目录暴露出去,一条命令:
rclone serve webdav \ --addr :8080 \ --user jingting \ --pass '换成一个足够长的密码' \ --read-only \ /path/to/your/music第三步:先改对 --addr(最容易踩的坑)
rclone 默认只监听本机。 要让手机访问,需要用 --addr :8080 监听所有网卡,或明确写这台电脑的局域网 IP。
--addr 的默认值是 127.0.0.1:8080。也就是说:
--addr | |
--addr 127.0.0.1:8080 | |
--addr :8080 | |
--addr 192.168.1.10:8080 |
这是自建方案里最常见的失败原因:本机浏览器能打开,手机报「WebDAV 连接失败」。先查这一行。
第四步:参数含义(官方文档原文对齐)
--addr | IP:Port 或 :Port;默认 127.0.0.1:8080 |
--user--pass | |
--htpasswd | |
--realm | |
--read-only | 只允许只读访问 |
--no-modtime | |
--no-checksum | |
--no-seek | |
--baseurl | |
--cert--key | |
--client-ca | |
--min-tls-version |
关于认证,有一条必须知道:rclone serve webdav 默认不要求登录。 一旦监听局域网或公网地址,就应同时加认证。给静听使用时,--user、--pass、--read-only 三个参数一起加,是最省事也更安全的组合。
第五步:如果要多用户,用 htpasswd
touch htpasswdhtpasswd -B htpasswd userhtpasswd -B htpasswd anotherUser官方说明:密码文件可以在 rclone 运行时更新。
第六步:先在本机验证,再碰手机
在起服务的那台机器上,用浏览器打开:
http://127.0.0.1:8080弹出账号密码框、能列出目录,说明服务端是好的。这一步的价值在于把问题一分为二:
本机能通、手机不通 → 问题在
--addr、防火墙或网络(见第 06 篇)本机都打不开 → 服务端没起来,先解决这个
第七步:放行防火墙
macOS:首次运行会弹窗询问是否允许接受传入连接,选允许。「系统设置 → 网络 → 防火墙」里也能检查。
Windows:首次运行 Defender 防火墙弹窗,勾选允许(专用网络即可)。
Linux:检查
ufw/firewalld/iptables,放行你用的端口。
顺带说一个 Windows 上的官方细节。如果你打算在 Windows 上把 WebDAV 映射成网络驱动器来验证,Windows 默认会拒绝非 SSL 的 Basic 认证连接,而且不会有任何提示。需要把注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel设为2,然后重启 WebClient 服务。官方文档在「Access WebDAV on Windows」一节有完整说明。
第八步:HTTPS 与证书
用 --cert 和 --key 就能让 rclone 直接跑 TLS,两个文件都要求 PEM 格式。官方还提醒:配了 TLS 之后,--addr 给出的每个监听地址都会走 TLS;如果想让某个地址保持明文 HTTP,可以给它加 http:// 前缀。
实际取舍:
只在家里局域网听 → 用
http://就够。静听的 iOS 端已开放明文 HTTP 访问。要做公网访问 → 建议用可信证书。自签证书 iOS 默认不信任,套一层反向代理用域名申请正式证书是常见做法。
第九步:拿到三个值
http://设备IP:8080 | |
--user | |
--pass |
设备 IP 这样查:macOS / Linux 用 ifconfig 或 ip addr,Windows 用 ipconfig。
在静听里合起来填成一条:
http://192.168.1.10:8080然后按 第 05 篇 [1] 操作。
rclone 还能直接服务网盘
上面服务的是本机目录。但 rclone 本身支持大量网盘后端,所以它也能直接把一个网盘挂成 WebDAV:
rclone serve webdav myremote:音乐 --addr :8080 --user jingting --pass '密码' --read-only也就是说,如果你的网盘正好是 rclone 支持的那几种,你未必需要装 OpenList。区别在于:
rclone 更偏命令和自动化,适合已经在用 rclone 的人。
OpenList 有网页界面,添加存储、管理文件都在浏览器里点,门槛更低。
两者不冲突。命令里的 myremote:音乐 需要先用 rclone config 配好 remote。
服务网盘时,下面两个 VFS 参数会明显影响体验(服务本机目录时影响很小):
--dir-cache-time | 5m0s | |
--vfs-read-chunk-size | 128Mi | |
--vfs-read-chunk-streams | 0 |
自建方案特有的坑
电脑睡眠,服务就断了。 这是自建和 NAS 最大的差别。笔记本合上盖子、进入睡眠,WebDAV 立刻不可用,表现为播放中途失败。想长期用,需要接电源并关闭自动睡眠。
内网 IP 会变。 路由器重新分配的地址一变,昨天能连今天就连不上。在路由器里给这台机器绑定固定 IP(DHCP 静态分配)可以永久解决。
默认没有密码。 这一点值得再说一次:rclone 官方文档明确写了默认不需要登录。只要你把 --addr 改成监听所有网卡,就一定要同时加 --user/--pass。
注意暴露范围。 只暴露音乐目录本身,用 --read-only 加独立账号,不要把整个家目录或系统盘挂出去。
远程播放仍然受网络和服务器配置影响。 自建 WebDAV 的速度取决于这台机器的上行带宽。静听不做「任何网络下都能稳定播放」的承诺。
其他可选方案
如果 rclone 不符合你的环境,再考虑下面几种。它们不是本文推荐的新手路线。
WsgiDAV(Python):官方 CLI 支持 --host、--port 和 --root,但文档中的最短示例使用匿名访问,而且默认可写。要给静听长期使用,应改用配置文件开启账号认证、只读权限和 HTTPS,不能把匿名示例直接暴露到局域网或公网。
Windows IIS 的 WebDAV:IIS 可以启用「WebDAV 发布」功能。遇到某些音频文件返回 404 时,先看 IIS 日志的子状态:404.3 通常指向 MIME 映射,404.7 指向被请求筛选拒绝。还要确认 Request Filtering 是否允许 WebDAV 处理文件扩展名。
Nginx:官方 ngx_http_dav_module 只处理 PUT、DELETE、MKCOL、COPY、MOVE,不包含文件列表所需的 PROPFIND。因此只开这个模块,静听通常列不出目录;需要额外的完整 WebDAV 实现。不建议新手从这里开始。
Docker 的 WebDAV 镜像:如果你已经在用 Docker,也有现成的 WebDAV 镜像可用,配置方式和 OpenList 类似(映射端口和数据卷)。镜像的选择和参数以你选用的镜像文档为准。

来源
rclone 官方文档「rclone serve webdav」(
--addr默认值与只监听本机、认证默认关闭、--read-only、--no-modtime、--htpasswd与 BCrypt 建议、TLS 参数、Windows 注册表 BasicAuthLevel、VFS 缓存与读取参数):https://rclone.org/commands/rclone_serve_webdav/ [2]WsgiDAV 命令行接口:https://wsgidav.readthedocs.io/en/latest/user_guide_cli.html [3]
Microsoft IIS WebDAV 请求筛选:https://learn.microsoft.com/en-us/iis/publish/using-webdav/how-to-configure-webdav-with-request-filtering [4]
Microsoft IIS 404 子状态说明:https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/site-behavior-performance/troubleshoot-404-file-not-found-error [5]
Nginx
ngx_http_dav_module官方文档:https://nginx.org/en/docs/http/ngx_http_dav_module.html [6]