填坑指南:Obsidian Remotely Save + 飞牛 WebDAV (fn connect) 避坑实战
在参考 21Obsidian 的飞牛 WebDAV 同步教程 配置 Obsidian 跨端同步时,许多同学会发现:按照常规步骤填完地址、账号与密码后,往往会接连踩中 405 报错、只同步目录不同步文件 以及最顽固的 401 Unauthorized 认证失败。
原教程走的是理想链路,并没有覆盖 fn connect 穿透层的协议过滤 与 WebDAV 动词限制。这里把排查过程与最终的“一行代码”解决方案整理成文,方便遇到同样问题的同学快速解决。
避坑一:首次同步报 405 Method Not Allowed
现象
在 Remotely Save 中刚点同步,直接提示 Error 405。
原因
飞牛 fnOS 针对 WebDAV 的扩展动词(如 MKCOL 创建集合目录)处理较严格,如果远端目录不存在,Remotely Save 尝试自动在根路径创建目录时会被拒绝。此外,URL 缺少结尾的 / 也会触发此错误。
解决办法
- 先在飞牛建好空文件夹:登录飞牛后台打开「文件管理」,在你的存储空间内先手动新建一个文件夹(例如
Obsidian或Notes)。 - 修正服务器路径与末尾斜杠:
- 确保 Remotely Save 中的 修改远端基文件夹 (Remote Base Dir) 正确填入该文件夹名;
- 若直接拼在 URL 中,路径结尾必须带上
/(例如[https://dav.xxxx.fnos.net:443/Obsidian/](https://dav.xxxx.fnos.net:443/Obsidian/))。
避坑二:只建了文件夹,笔记内容完全不同步
现象
405 解决后,飞牛后台能看到对应的文件夹树全部建好了,但里面的 .md 笔记与附件全是空的。
原因
- 文件夹创建走的是
MKCOL,而内容上传走的是 HTTPPUT; - 之前同步中断留下了失效的同步索引缓存,插件误以为当前文件状态已经处理过;
- 并发过高导致飞牛端锁死。
解决办法
- 清理元数据缓存:打开 Remotely Save 设置,找到并点击 Clear Local Metadata / Cache (清除本地同步元数据),重置索引状态。
- 降低并发数:将设置里的 Concurrency (并发连接数) 调低为
1或2,大幅提升单文件上传稳定性。
避坑三:密码明明正确,却频繁报 401 Unauthorized
现象
即使账号密码手动反复核对无误,测试连接或点击同步依然死锁在 401 Unauthorized。
原因(核心痛点)
fn connect 官方中继代理在转发请求时,容易剥离或改写标准的 HTTP Basic Auth 认证头。 普通的客户端表单输入依赖插件自动打包 Header,经过 fn connect 中继时,鉴权头在链路中被吃掉,到达你的飞牛系统时就变成了“匿名无密码访问”,导致飞牛直接返回 401。
终极解决:通过 Headers 强行注入 Base64 鉴权
不用降级为局域网,也不用换用第三方内网穿透,直接在 Remotely Save 中利用自定义请求头强行把凭证打进数据包:
1. 将账号密码转为 Base64 编码
WebDAV 的 Basic Auth 规范格式为:账号:密码。
例如账号为 admin,密码为 12345,拼接后是:
admin:12345
将其转换为 Base64 字符串:
YWRtaXXXXXXXXXXXXXXXXXXXXXXX==
(你也可以在终端运行 echo -n "你的账号:你的密码" | base64 获得自己的密钥)
2. 填写 Remotely Save 的 Headers 配置框
打开 Obsidian 设置 -> Remotely Save -> WebDAV 配置,找到下方的 Headers (请求头) 区域。
Authorization: Basic YWRtaXXXXXXXXXXXXXXXXXXXXXXX==
经过测试,在Android端不需要配置header字段,请关注。
配置好该请求头后保存,重新点击同步测试,便可绕过中继丢头的问题,飞牛 WebDAV 瞬间满速畅通同步!