跨平台文件同步利器:使用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
,从而实现跨平台的文件同步和无缝的文件共享体验。