跨平台文件同步利器:使用Caddy搭建WebDav实现多设备间的无缝文件共享
文章目录
前言
我在 iOS 上使用 beorg 来管理日程,所以经常需要在电脑和手机之间同步。
beorg 支持 iCloud 、 Dropbox 、 WebDav 等方式同步,使用 iCloud 是最简单的,但是我不想数据放到别人的服务器上面,所以我就不考虑了, Dropbox 就你懂的,所以就只剩下 WebDav 了。
WebDav 是一种基于 HTTP 协议的文件访问和管理技术,它提供了一种标准化的方式,使我们可以在网络上进行文件操作,如上传、下载、删除和重命名等。
我找了一圈看上了 Caddy ,它是一个功能强大且易于使用的 Web 服务器,它为搭建 WebDav 服务器提供了简洁而灵活的解决方案。所以今天就要用 Caddy 来搭建 WebDav 服务。
caddy 安装
在使用之前需要来看下如何在电脑上安装 caddy ,在Install — Caddy Documentation中可以找到各个操作系统的安装方式,我使用的是 Mac 所以可以直接使用下面的命令进行安装。
|
|
安装好之后可以使用 caddy help 来查看使用帮助,内容有点多,这里就不贴出来了。列几个重要的
- caddy run 在前台执行(推荐)
- caddy start 在后台执行
- caddy stop 停止在后台执行的 caddy 服务
- caddy version 查看 caddy 的版本
安装好 caddy 之后并不能直接使用 webdav ,这是因为 webdav 不是内置的插件,所以要使用的话还需要额外安装 webdav 的插件。
安装 WebDav 插件
安装 WebDav 插件需要自己编译,官方出了 caddyserver/xcaddy: Build Caddy with plugins 用来简化编译流程,非常方便,所以在安装插件之前需要安装 xcaddy 。
安装 xcaddy 需要你安装了 Go ,如果你是 Mac 可以直接使用 brew install go 来快速安装 Go ,这里不展开说了。
安装好 Go 之后就可以通过下面指令安装 xcaddy 。
|
|
xcaddy 会被安装到 $HOME/go/bin 下,为了方便可以把它添加到 PATH 中,这样就可以直接使用了。
好接下来要构建支持 webdav 的 caddy ,如下所示
|
|
命令执行完后,会在当前目录下生成 caddy 的二进制文件。
由于之前使用 brew install caddy 安装了,所以这里可以使用 brew uninstall caddy 来卸载之前的。
为了方便可以把生成的 caddy 放到 PATH 环境中或者使用相对路径执行。
支持 WebDav 的 caddy 已经编译好了,接下来就需要编写 Caddyfile 来启用 WebDav 了。
编写 Caddyfile
在当前目录下创建 Caddyfile 文件,填入如下内容
|
|
密码可以使用 caddy hash-password username 生成,其中 username 要换成你自己的名字。用生成好的字符串替换 basicauth 中的 password 。
在这个配置中我们监听了 80 和 443 端口,并配置基本的账号和密码,毕竟你也不想谁都可以访问你的文件。
然后重点就是 WebDav 的配置, webdav 的语法如下所示
|
|
其中 matcher 就是用来决定哪些路由会使用 webdav ,比如上面写的是 dav 所以当访问 127.0.0.1/dav/xxx 的时候就会匹配到 webdav 的功能。
接着 root 表示的是 webdav 要共享的目录。
prefix 是可选的,但是 matcher 和 path 一起使用的时候是必须要的,通常就是 matcher 。
启动 caddy
写好了 Caddyfile 就可以通过如下命令启动了
|
|
由于没有把 caddy 加到 PATH 中,所以我使用了相对路径。
连接 webdav 服务
在 Mac 中可以通过 finder 来连接。
打开 finder ,按下 cmd+k 打开连接服务器,填入地址,例如: 127.0.0.1/dav ,输入账号和密码就可以连接成功了。
总结
WebDav 是一个可以在多个设备之间进行文件同步和分享的技术,本文通过讲解如何利用 Caddy 搭建 WebDav ,从而实现跨平台的文件同步和无缝的文件共享体验。