利用Caddy来搭建可挂载的WebDAV个人网盘+配合FileBrowser来管理文件
利用Caddy来搭建可挂载的WebDAV个人网盘+配合FileBrowser来管理文件
前面我们讲到了Caddy以及用Caddy搭建网站还有用Caddy的File Manager来搭建个人网盘。今天我们要讲的用Caddy的WebDav扩展组件来搭建一个Webdav服务器。并且配合Caddy的FileManager扩展组件来在线管理WebDav服务器的文件。
什么是WebDav服务器
WebDAV是基于Web的分布式编写和版本控制,是超文本传输协议(HTTP)的扩展,有利于用户间协同编辑和管理存储在万维网服务器文档。WebDAV最重要的特性包括:
- 锁(防止覆盖)
- 特性(创建,移除和查询)
- 命名空间管理
- 集合(创建,移除和列举资源)
–来源:维基百科,掘金
有个好处就是可以像普通网盘那样挂载到本地硬盘,然后实现即时同步功能。
我为什么要搭建WebDav服务器?
其实是因为最近在研究密码管理器,比如keepass,1password,lastpass,enpass,bitwarden等等。在使用keepass或者enpass过程中,遇到webdav这个同步选项。在研究后就想自己搭建一个WebDav服务器来同步数据。
利用Caddy的WebDav扩展组件来搭建WebDav服务器
安装Caddy
使用下面的一键安装包来安装Caddy,需要添加的组件是http.filemanager(在线个人网盘),http.webdav(Webdav支持)还有http.cors(这个是在使用KeeWeb连接Webdav时出现网络错误Netword Error的时候需要添加这个)。
1 | wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager,http.webdav,http.cors |
具体安装Caddy教程请参考这里
Caddy的使用说明及相关路径
1 | 启动:/etc/init.d/caddy start |
搭建WebDav服务器
修改Caddy配置文件
vi方式
1 | vi /usr/local/caddy/Caddyfile |
按i键进入insert模式
输入以下内容
1 | dav.yourdomain.com { |
编辑完成按左上角esc键退出insert模式,再按:冒号进入末行模式「Last line mode」,然后输入wq保存退出。
echo方式
*下面的命令为一串命令,需要一次复制粘贴,不能每行分开复制。
1 | echo "dav.yourdomain.com { |
上面的命令是清空覆盖源文件内容替换为新内容,如果要在源文件内容最后追加新内容的话把上面最后一行改为
1 | }" >> /usr/local/caddy/Caddyfile |
重启Caddy
1 | /etc/init.d/caddy restart |
验证搭建成功
然后浏览器进入你的域名 dav.yourdomain.com,应该会出现登录界面,输入前面配置文件设置的用户名admin密码password成功登录后如果出现下面的画面,表示搭建成功。
配合FileManager扩展组件使用
其实上一步已经就完成了WebDav的搭建,后来想到如果能用浏览器在线管理WebDav上面的文件就方便多了。
于是可以结合之前写的利用Caddy的Filemanager插件搭建个人网盘教程来完善WebDav的使用。
前面把WebDav服务器的根目录设置为/usr/local/caddy/www/file/dav也是为了下面搭建个人网盘而准备的。
下面我们把FileManager的根目录设置为/usr/local/caddy/www/file,WebDav服务器就成了FileManager里面的一个文件夹。
vi方式修改Caddy配置文件
1 | file.example.com { |
echo方式修改Caddy配置文件
因为之前我们已经配置过Caddyfile了,本次就在前面WebDav配置的后面追加FileManager的配置。所以用下面的命令
1 | echo "file.example.com { |
重启Caddy
1 | /etc/init.d/caddy restart |
相关问题
配合KeeWeb使用出现"Network Error"
需启用http.cors扩展插件
查阅了KeeWeb的官方Wiki后,得知需要启用http.cors扩展插件。
http.cors扩展插件前面我们已经在安装Caddy的时候安装好了,现在我们只需要在Caddyfile里面的WebDav配置内容加上cors指令。
下面是完整的配置文件
1 | dav.yourdomain.com { |
具体指令里面为什么要写那些我也不知道,这是官方wiki提供的Sample。
但是这样还是有点问题。是下面这个问题。
KeeWeb无法连接数据库文件.kdbx
试了好几次好像是因为WebDav开启了认证就不好使。就是配置文件中的basicauth指令。
后来尝试把basicauth设置成下面的格式就可以用了,但是WebDav就没有认证登录机制了。
1 | dav.yourdomain.com { |
这样设置之后KeeWeb可以正常连接到WebDav上面的密码数据库,而不会之前的报错Network Error,可能可以打开数据库但是修改后无法同步到WebDav服务器。
没有定义root路径
在试验中发现,配置内容里面去掉
1 | root /usr/local/caddy/www/file/dav |
也可以正常使用。。
附上我实际用的配置,应该是有安全风险的。
1 | dav.domain.com { |
出现其他问题
请活用启动日志
1 | tail -f /tmp/caddy.log |
出现启动失败多数是因为Caddyfile指令写错或者没有安装相关扩展组件导致无法启动。
相关连接
- 本文作者: Wyane
- 本文链接: https://huaien.me/article/technology/use-caddy-to-build-webdav-server/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!