WebDAV 是一种基于 HTTP 的文件共享协定,最后被设计用于多用户文档合作编辑的场景,也被广泛应用在基于互联网的文件存储、数据同步等网盘类利用场景。
手机端和 PC 端有大量的利用内置了对 WebDAV 的反对,比方出名的文献管理工具 Zotero、iPad 上风行的笔记工具 Notability、国产办公软件 WPS、跨平台 Markdown 笔记工具 Joplin、ES 文件管理器等等,这就意味着,只有领有本人的 WebDAV 存储,就能够应用 WebDAV 来保留咱们在这些软件上产生的文档数据。
为了防止混同,有必要先厘清 WebDAV 相干的概念,如下图所示,WebDAV 分为服务器和客户端两个局部:
- WebDAV 服务器:蓝色云朵代表 WebDAV 服务器,用来响应客户端的连贯和读写申请,存储数据。
- WebDAV 客户 端:各种内置了 WebDAV 客户端的程序,运行在手机、平板或电脑中。
明确了 WebDAV 的架构组成,咱们要做的就是配置一套属于本人的 WebDAV 服务器了,其实咱们也能够把它叫做 WebDAV 共享,总之,咱们要做的就是架构图中“蓝色云朵”的局部。
在过来,配置 WebDAV 共享通常要应用 Apache HTTP 服务或 Nginx 等 Web 服务器软件,因为不是开箱即用,须要额定加载或手动编译 WebDAV 模块,这在肯定水平上减少了配置 WebDAV 的复杂度。
尽管一些 NAS 操作系统也会提供 WebDAV 共享配置性能,但受限于内网环境,配置的 WebDAV 共享难以施展它基于互联网提供服务的劣势。
如果你目前正在寻找更通用、更无效、更简略的 WebDAV 共享服务配置计划,JuiceFS 兴许是你值得尝试的一种计划。
JuiceFS 是面向云的开源分布式文件系统,依靠于对象存储和数据库,能够疾速搭建一个具备弹性容量的高性能存储系统。JuiceFS 提供 POSIX、S3 API、HDFS API、Kubernetes CSI 驱动、Docker Volume Plugin、WebDAV 等丰盛的拜访接口,能够轻松接入各种利用。
接下来就为大家分享如何应用 JuiceFS 简略、疾速的配置一个兼具空间弹性、安全性和实用性的 WebDAV 服务。
筹备工作
本文介绍的 WebDAV 共享是 JuiceFS 提供的一种拜访接口,是建设在 JuiceFS 文件系统之上的。因而在配置之前,须要先创立一个 JuiceFS 文件系统。
JuiceFS 文件系统由数据存储和元数据引擎两局部组成,其中,数据存储能够是各种云计算平台提供的对象存储服务,也能够是自建的 MinIO 或本地磁盘。元数据引擎用来存储文件的元数据信息,能够应用 Redis、MySQL、PostgreSQL 等基于网络的数据库,也能够应用 SQLite 或 BadgerDB 这种单机数据库。
为了让 WebDAV 共享可能通过互联网拜访,接下来咱们会在一台领有固定公网 IPv4 地址的云服务器上进行创立。因为 WebDAV 是一处创立,即可通过 IP 地址或域名实现处处拜访。因而,组成 JuiceFS 的数据存储和元数据引擎能够更加灵便的搭配,比方:
- 本地磁盘 + 单机数据库:当云服务器的本地磁盘可用空间足够时。
- 对象存储 + 单机数据库:须要更大容量存储空间时。
- 对象存储 + 网络数据库:既须要更大的存储空间,又有其余主机须要同时拜访 JuiceFS 时。
云服务器
假如咱们领有一台配置如下的云服务:
- 零碎:Ubuntu Server 22.04 AMD64
- CPU:1 核
- 内存:1 GB
- 硬盘:25 GB
- IP 地址:120.118.8.10(此为演示目标随机编写的 FAKE IP)
对于本文介绍的场景,任意一个云平台的入门级的云服务器即可满足需要,重点在于要有公网 IPv4 地址。
对象存储
假如咱们筹备了以下 Bucket:
- 存储类型:阿里云 OSS
- Bucket URL: https://myjfs.oss-cn-shanghai…
- Access Key: abcdefg
- Secret Key: gfedcba
对于本文介绍的场景,对象存储并不是必须的,如果云服务器的硬盘空间足够,齐全能够应用硬盘作为 JuiceFS 的对象存储来应用。
数据库
对于本文介绍的场景,单机版数据库是最为简单易行的抉择,这里咱们应用单文件 SQLite 数据库。无需提前准备,在创立 JuiceFS 文件系统时会主动生成。
如果有须要,你也能够参照文档《如何设置元数据引擎》应用其余类型的数据库。
创立 JuiceFS 文件系统
-
装置客户端
curl -sSL https://d.juicefs.com/install | sh -
- 创立文件系统
以下是创立文件系统的两种形式,依据理论须要任选一种即可:
形式一:应用本地硬盘作为对象存储
juicefs format sqlite3://myjfs.db myjfs
形式二:应用对象存储服务(数据存储在对象存储)
juicefs format --storage oss \
--bucket https://myjfs.oss-cn-shanghai.aliyuncs.com \
--access-key abcdefg \
--secret-key gfedcba \
sqlite3://myjfs.db myjfs
部署 WebDAV 服务
筹备好 JuiceFS 文件系统就能够开始配置 WebDAV 共享了,最简略的形式是不做任何设置,间接将 JuiceFS 存储以 WebDAV 接口模式凋谢进来。
sudo juicefs webdav sqlite3://myjfs.db 120.118.8.10:80
应用任何内置 WebDAV 客户端的软件拜访 http://120.118.8.10 即可连贯拜访。
尽管很不便,但不难看出这种匿名拜访的形式存在极大的安全隐患,首先,没有身份认证使得任何晓得这个 IP 地址的人都能够间接通过 WebDAV 客户端读写咱们的文件;其次,应用未加密的 HTTP 协定,通信过程很容易被窃听和攻打。咱们十分有必要欠缺这两方面的缺点,其实也很简略,解决第一个问题只须要为 WebDAV 设置身份认证,第二个问题只须要配置 SSL 证书启用 HTTPS 加密连贯反对。
设置身份认证
JuiceFS v1.1(截至本文发表,此版本还未正式公布)及以上版本开始反对 WebDAV 身份认证和 SSL 证书性能,设置之前请先确认你的客户端版本,倡议参考《手动编译 JuiceFS 客户端》自行编译 GitHub 仓库的 main 分支。
为 WebDAV 设置拜访的用户名和明码非常简单,只需设置相应的环境变量即可:
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
SSL 证书
为 WebDAV 启用 HTTPS 加密连贯须要应用 SSL 证书,既能够应用 CA 机构签发的受信赖的证书,也能够应用 OpenSSL 签发自签名证书。
CA 机构通常只为域名签发证书,因而你须要领有域名并绑定到服务器 IP,收费证书签发工具有 certbot、acme.sh 等,应用这些工具向即可申请收费的 SSL 证书。
通过第三方 CA 证书机构申请签发证书是另外一个话题,这里简略起见,应用自签名证书来实现这个性能。
-
生成服务器私钥
openssl genrsa -out private.key 4096
- 生成证书签名申请(CSR)
这一步须要交互式的提供一系列信息。
openssl req -new -key private.key -out client.csr
- 应用 CSR 签发证书
openssl x509 -req -days 365 -in client.csr -signkey private.key -out client.crt
-
执行清理
rm client.csr
通过上述几个步骤,在当前目录中就有了 private.key 和 client.crt 这两个文件,接下来用它们运行 WebDAV 服务。
正式运行 WeDAV 服务
当初就能够联合下面的内容,运行带有根本身份认证性能,且具备 HTTPS 加密连贯的 WebDAV 服务:
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./client.crt --key-file ./private.key sqlite3://myjfs.db 120.118.8.10:443
此时咱们曾经启用了 HTTPS 加密连贯,在拜访 WebDAV 时也要改用带有 https 的地址 https://120.118.8.10
,同时,须要输出用户名和明码能力胜利连贯。
另外,因为这里应用的是自签名证书,在拜访时一些客户端可能会收回证书不可信的正告,疏忽即可。
如果你曾经为服务器绑定了域名,并且曾经申请到了 SSL 证书,部署 WebDAV 的命令则应该做如下调整:
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./your-domain.crt --key-file ./your-domain.key sqlite3://myjfs.db www.your-domain.com:443
相应地,拜访地址应也应该改成你的域名,例如:https://www.your-domain.com。应用 CA 机构签发的证书,各种 WebDAV 客户端拜访则不会收回正告,能够无效解决局部利用无奈连贯 WebDAV 服务的问题。
利用示例
以 ES 文件浏览器、Joplin 为例介绍如何配置应用自建的 WebDAV 服务同步文档数据。
留神:在某些利用中设置 WebDAV 时,如果确认地址和身份认证信息输出无误的状况下,程序依然报告无奈连贯 WebDAV,这可能是因为程序不反对自签名证书,能够通过改用 CA 机构签发的可信证书来配置 WebDAV 服务来解决该问题。
ES 文件浏览器
ES 文件浏览器是挪动端罕用的第三方文件管理器,除了可能治理手机中的文件,还反对增加很多第三方的存储服务,其中就包含 WebDAV 存储。
只需在服务菜单中新增 WebDAV 类型的存储,参照下图填写地址、用户名和明码即可。
Joplin
Joplin 是开源的 Markdown 笔记软件,反对应用 WebDAV 同步文档。只需在同步设置中输出 WebDAV 的链接、用户名和明码即可。
须要留神的是,这里咱们应用的是自签名证书,查看同步配置时 Joplin 会因而而报错。解决办法是开展高级选项,勾选“疏忽 TLS 证书谬误“,利用设置在尝试查看即可通过验证。
写在最初
与 FTP 相似,WebDAV 也是绝对比拟古老的文件共享协定,但它们至今仍被宽泛的利用。信息技术畛域永远没有最好的工具,只有最合适的工具。从性能上来说,WebDAV 可能没有专用的网盘客户端来的功能丰富,但 WebDAV 协定更通用和凋谢,能够间接在大量内置反对的应用程序上应用,岂但能够爱护本人的隐衷,还能防止被特定的平台捆绑。
WebDAV 只是 JuiceFS 反对的泛滥拜访接口中的一种,大家有趣味能够进一步摸索其余拜访接口,比方以本地磁盘模式拜访的 POSIX,以 S3 API 模式拜访的 S3 网关,以及容器化拜访形式的 Docker Volume Plugin、Kubernetes CSI 驱动等等。灵便搭配应用这些拜访形式,可实现更加高效、灵便的云存储管理能力,相干的内容咱们会在后续的文章中为大家做更多的分享。
如有帮忙的话欢送关注咱们我的项目 Juicedata/JuiceFS 哟!(0ᴗ0✿)