EasyLocalDav:把本地文件夹变成 Zotero 可用的 WebDAV
1 | |
EasyLocalDav 是我写的一个 macOS 菜单栏小工具。它做的事情很简单:把本机的一个文件夹包装成 WebDAV 服务,让 Zotero 这类应用可以用标准 WebDAV 协议读写这个文件夹。
这个项目不是要重新发明 WebDAV 服务器。真正负责协议实现的是 rclone serve webdav,EasyLocalDav 负责把配置、启动、停止、状态显示和开机恢复做成一个容易使用的 macOS App。
为什么需要它
Zotero 的附件同步有几种常见方式:官方存储、第三方 WebDAV、手动同步目录。官方存储最省事,但容量有限;自己部署 WebDAV 又要维护服务器、证书、账号和网络环境。
很多时候我真正想要的是:
1 | |
也就是说,Zotero 只需要看到一个 WebDAV 服务,底层文件还是落在本机目录里,再交给已有的云盘客户端同步。EasyLocalDav 解决的就是这中间的一层适配问题。
它怎么工作
每个服务对应一个本地目录、一个监听地址、一个端口和一组 WebDAV 账号密码。
在 App 里点 Start 后,背后启动的是类似这样的命令:
1 | |
如果服务启动成功,Zotero 看到的就是:
1 | |
但实际写入的位置是你选择的本地文件夹。
基本使用流程
安装后打开 EasyLocalDav,它不会出现在 Dock 里,只会常驻菜单栏。
第一次使用可以按这个流程:
1 | |
在 Zotero 里配置同步时填写:
1 | |
日常使用推荐绑定 127.0.0.1。这个地址只允许本机访问,适合 Zotero 这种本机应用,不会把 WebDAV 服务暴露给局域网里的其他设备。
配合云盘使用
比较实用的目录选择方式,是把 WebDAV 根目录放在云盘同步目录下面,例如:
1 | |
这样 Zotero 写入附件后,EasyLocalDav 把文件落到本地目录,云盘客户端再负责跨设备同步。
多台 Mac 上可以使用相同的逻辑:
1 | |
每台机器上的 Zotero 都访问自己的 localhost,文件同步交给云盘。这样不需要在公网部署 WebDAV,也不用处理域名和证书。
局域网模式
EasyLocalDav 也支持把 Host 设置成 0.0.0.0。这会让服务监听所有网卡,局域网里的其他设备可以通过这台 Mac 的局域网 IP 访问:
1 | |
这个模式适合临时共享文件夹,或者给同一局域网内的设备提供 WebDAV 入口。
但它有明显的安全边界:0.0.0.0 会把服务暴露给当前网络里的其他设备。只应该在可信网络里使用,并且应该改掉默认密码。
App 里做了哪些管理
EasyLocalDav 的价值不在于命令本身,而在于把容易忘、容易错的部分变成稳定的桌面体验。
它会在启动服务前检查:
1 | |
服务运行后,主界面会显示状态:Stopped、Starting、Running 或 Failed。运行中的服务会锁定配置表单,避免一边修改配置一边让后台进程继续跑旧参数。
菜单栏图标也会反映整体状态:没有服务、全部停止、正在运行,或者有服务失败需要处理。
自动恢复和开机启动
如果启用了 Launch at Login,EasyLocalDav 会随 macOS 登录启动。
如果启用了 Restore Enabled Services,App 启动后会自动恢复之前处于 Enabled 状态的服务。这个组合适合长期使用 Zotero 的场景:开机后不用手动打开终端,也不用重新执行 rclone 命令。
配置文件保存在:
1 | |
里面记录服务列表、自动恢复选项、更新检查状态等信息。
发布和维护
release 包会把 rclone 打进 App bundle 里,所以普通用户不需要先装 Homebrew 或手动安装 rclone。
开发环境下,如果 App bundle 里没有 rclone,它会尝试从这些位置查找:
1 | |
项目也有 GitHub Actions release workflow:打 tag 后构建 Apple Silicon 版本,下载官方 rclone darwin arm64 二进制,打进 App,然后生成 EasyLocalDav-arm64.dmg。
适合什么,不适合什么
EasyLocalDav 适合这些场景:
1 | |
它不适合这些场景:
1 | |
它的定位应该保持克制:一个本机 WebDAV 适配器,一个给 Zotero 和本地目录之间搭桥的菜单栏工具。
总结
EasyLocalDav 的核心思路是把复杂度留在本地:不部署服务器,不申请证书,不暴露公网端口。Zotero 访问 localhost,文件落到本地目录,跨设备同步交给现成的云盘。
这类工具不需要做得很大。它只要稳定地完成一件事:把一个本地文件夹变成一个可控、可恢复、容易配置的 WebDAV endpoint。