行知絮语

知行合一,步履不辍。

IT技术

填坑指南:Obsidian Remotely Save + 飞牛 WebDAV (fn connect) 避坑实战

2026年09月27日 admin 5 阅读

在参考 21Obsidian 的飞牛 WebDAV 同步教程 配置 Obsidian 跨端同步时,许多同学会发现:按照常规步骤填完地址、账号与密码后,往往会接连踩中 405 报错、只同步目录不同步文件 以及最顽固的 401 Unauthorized 认证失败。

原教程走的是理想链路,并没有覆盖 fn connect 穿透层的协议过滤 与 WebDAV 动词限制。这里把排查过程与最终的“一行代码”解决方案整理成文,方便遇到同样问题的同学快速解决。


避坑一:首次同步报 405 Method Not Allowed

现象

在 Remotely Save 中刚点同步,直接提示 Error 405。

原因

飞牛 fnOS 针对 WebDAV 的扩展动词(如 MKCOL 创建集合目录)处理较严格,如果远端目录不存在,Remotely Save 尝试自动在根路径创建目录时会被拒绝。此外,URL 缺少结尾的 / 也会触发此错误。

解决办法

  1. 先在飞牛建好空文件夹:登录飞牛后台打开「文件管理」,在你的存储空间内先手动新建一个文件夹(例如 Obsidian 或 Notes)。
  2. 修正服务器路径与末尾斜杠:
  • 确保 Remotely Save 中的 修改远端基文件夹 (Remote Base Dir) 正确填入该文件夹名;
  • 若直接拼在 URL 中,路径结尾必须带上 /(例如 [https://dav.xxxx.fnos.net:443/Obsidian/](https://dav.xxxx.fnos.net:443/Obsidian/))。

避坑二:只建了文件夹,笔记内容完全不同步

现象

405 解决后,飞牛后台能看到对应的文件夹树全部建好了,但里面的 .md 笔记与附件全是空的。

原因

  • 文件夹创建走的是 MKCOL,而内容上传走的是 HTTP PUT;
  • 之前同步中断留下了失效的同步索引缓存,插件误以为当前文件状态已经处理过;
  • 并发过高导致飞牛端锁死。

解决办法

  1. 清理元数据缓存:打开 Remotely Save 设置,找到并点击 Clear Local Metadata / Cache (清除本地同步元数据),重置索引状态。
  2. 降低并发数:将设置里的 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 瞬间满速畅通同步!