简介
阿里云盘是一款速度快、不打扰、够安全、易于分享的网盘,你可以在这里存储、管理和探索内容,尽情打造丰富的数字世界。
本项目实现了阿里云盘的webdav协议,只需要简单的配置一下,就可以让阿里云盘变身为webdav协议的文件服务器。 基于此,你可以把阿里云盘挂载为Windows、Linux、Mac系统的磁盘,可以通过NAS系统做文件管理或文件同步,更多玩法等你挖掘。
Github
开始
创建一台服务器
准备一台Linux服务器,以腾讯云为例;注册|登录腾讯云控制台,创建一个实例;






放行端口
接下来放行端口避免出现无法访问的情况,在实例的安全组里修改规则即可。

登录服务器
通过SSH登陆服务器,推荐使用 FinalShell 或者 Termius 客户端;也可以通过Windows系统的Terminal登录
ssh root@ip 然后输入密码

环境配置
以此粘贴下面命令配置环境
- 更新系统
yum -y update
- 安装EPEL源
yum -y install epel-release
- 安装开发工具包
yum -y groupinstall "Development Tools"

Docker
curl -fsSL https://get.docker.com | bash
systemctl start docker
service docker start
systemctl enable docker.service
systemctl status docker.service

Docker-Compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
rm -f `which dc`
ln -s /usr/local/bin/docker-compose /usr/bin/dc
查看安装是否成功
docker-compose -v

浏览器获取refreshToken方式
- 先通过浏览器(建议chrome)打开阿里云盘官网并登录:https://www.aliyundrive.com/drive/
- 登录成功后,按F12打开开发者工具,点击Application,点击Local Storage,点击 Local Storage下的 https://www.aliyundrive.com/,点击右边的token,此时可以看到里面的数据,其中就有refresh_token,把其值复制出来即可。(格式为小写字母和数字,不要复制双引号。例子:ca6bf2175d73as2188efg81f87e55f11)
- 第二步有点繁琐,大家结合下面的截图就看懂了

容器运行
docker run -d --name=webdav-aliyundriver --restart=always -p 8080:8080 -v /etc/localtime:/etc/localtime -v /etc/aliyun-driver/:/etc/aliyun-driver/ -e TZ="Asia/Shanghai" -e ALIYUNDRIVE_REFRESH_TOKEN="your refreshToken" -e ALIYUNDRIVE_AUTH_PASSWORD="admin" -e JAVA_OPTS="-Xmx1g" zx5253/webdav-aliyundriver
- # 将your refreshToken替换为上面获取的refreshToken
- # 8080:8080 第一个8080为服务器webdav服务的端口,可修改
- # /etc/aliyun-driver/ 挂载卷自动维护了最新的refreshToken,建议挂载
- # ALIYUNDRIVE_AUTH_PASSWORD 是admin账户的密码,建议修改
- # JAVA_OPTS 可修改最大内存占用,比如 -e JAVA_OPTS="-Xmx512m" 表示最大内存限制为512m

举个例子,假如我的运行端口是8082,refreshToken是123456,admin账户的密码是80908090E,那么我的命令是
docker run -d --name=webdav-aliyundriver --restart=always -p 8082:8080 -v /etc/localtime:/etc/localtime -v /etc/aliyun-driver/:/etc/aliyun-driver/ -e TZ="Asia/Shanghai" -e ALIYUNDRIVE_REFRESH_TOKEN="123456" -e ALIYUNDRIVE_AUTH_PASSWORD="80908090E" -e JAVA_OPTS="-Xmx1g" zx5253/webdav-aliyundriver
现在WebDav服务就启动完成了,在浏览器中通过公网ip:服务端口,输入登录密码即可访问。无法访问请检查端口是否放行。

Docker-Compose
如果你使用的是宝塔面板或者通过Finalshell客户端登陆服务器,可以在/opt 目录下创建一个 docker-compose.yml 文件,写入并修改下面内容并保存。
version: "3.0"
services:
webdav-aliyundriver:
image: zx5253/webdav-aliyundriver
container_name: aliyundriver
environment:
- TZ=Asia/Shanghai
- ALIYUNDRIVE_REFRESH_TOKEN=refreshToken
- ALIYUNDRIVE_AUTH_USER-NAME=admin
- ALIYUNDRIVE_AUTH_PASSWORD=admin
- JAVA_OPTS=-Xmx1g
volumes:
- /etc/aliyun-driver/:/etc/aliyun-driver/
ports:
- 6666:8080
restart: always
# “refreshToken”请根据下文说明自行获取。
# “ALIYUNDRIVE_AUTH_USER-NAME”和“ALIYUNDRIVE_AUTH_PASSWORD”为连接用户名和密码,建议更改。
# “/etc/aliyun-driver/:/etc/aliyun-driver/”,可以把冒号前改为指定目录,比如“/homes/USER/docker/alidriver/:/etc/aliyun-driver/”。
# 删除了“/etc/localtime:/etc/localtime”,如有需要同步时间请自行添加在environment下。
# 端口6666可自行按需更改,此端口为WebDAV连接端口,8080为容器内配置端口,修改请量力而为。
# 建议不要保留这些中文注释,以防报错,比如QNAP。

在 docker-compose.yml 所在路径下执行该命令 Compose 就会自动构建镜像并使用镜像启动容器,在安装docker-compose过程中已经将docker-compose
命令替换为dc
,所以在命令中docker-compose
替换为dc
也可执行
cd /opt // 访问/opt目录
docker-compose up // 启动并运行容器
docker-compose up -d // 后台启动并运行容器
或
dc up // 启动并运行容器
dc up -d // 后台启动并运行容器
cd /opt
dc up -d

现在WebDav服务就启动完成了,在浏览器中通过公网ip:服务端口,输入登录密码即可访问。无法访问请检查端口是否放行。
参数说明
--aliyundrive.refresh-token
阿里云盘的refreshToken
--server.port
非必填,服务器端口号,默认为8080
--aliyundrive.auth.enable=true
是否开启WebDav账户验证,默认开启
--aliyundrive.auth.user-name=admin
WebDav账户,默认admin
--aliyundrive.auth.password=admin
WebDav密码,默认admin
--aliyundrive.work-dir=/etc/aliyun-driver/
token挂载路径(如果多开的话,需修改此配置)
客户端兼容性
客户端 | 下载 | 上传 | 备注 |
---|---|---|---|
群辉Cloud Sync | ✅ | ✅ | 使用单向同步非常稳定 |
Rclone | ✅ | ✅ | 推荐,支持各个系统 |
Mac原生 | ✅ | ✅ | |
Windows原生 | ✅ | ⚠️ | 不建议,适配有点问题,上传报错 |
RaiDrive | ✅ | ✅ | Windows平台下建议用这个 |
各个平台挂载WebDav方法
Linux
Centos & Fedora & RedHat
yum -y install davfs2
其他的比如Ubuntu之类的
apt-get -y install davfs2
安装完davfs2之后执行
sed -i 's/# use_locks 1/use_locks 0/g' /etc/davfs2/davfs2.conf
echo "你的WebDAV地址 用户名 密码" >> /etc/davfs2/secrets #保存用户名密码,以后可以直接免密码挂载
mount.davfs 你的WebDAV地址 你想要挂载到的目录
即可成功挂载注意1:挂载目录必须提前创建好!
注意2:如果你不执行第二句保存用户名密码,那么你以后挂载的时候都会要求输入用户名密码!
开机自动挂载
如果想要开机自动挂载,则再执行
echo "mount.davfs 你的WebDAV地址 你想要挂载到的目录" >> /etc/rc.local
执行完此句之后检查一下/etc/rc.local
文件,看看是否有exit 0
这句。如果有的话,要手动把上面命令添加进去的语句放到exit 0
之前。
Windows
启用WebClient服务
唤出"计算机管理"程序窗口。选择"服务和应用程序"项,下步将进行启用WebClient服务的操作。

注册表使得WIN同时支持http和https
定位到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters 把BasicAuthLevel 值改成2,即同时支持http和https,默认只支持https

然后管理员Terminal重启webclient服务:
net stop webclient
net start webclient

在win10中挂载WebDav



Windows RaiDrive
这里推荐使用一款名叫 RaiDrive 的软件,官网地址:www.raidrive.com,RaiDrive 是一款免费的软件,不仅支持 WebDAV 协议,还支持常见的 SFTP、FTP 协议,以及 Google Drive、OneDrive、Dropbox、Nextcloud 等常见网盘的挂载。
进入软件后,点击右上角的添加

在服务类型中选择 NAS,再选择 WebDAV,虚拟驱动器中可以自定义一个未占用的盘符和名称,地址中输入 WebDAV 的地址和路径,最后在账户中输入用户名和密码,点击小箭头就完成挂载了。

最后,打开此电脑,就可以访问网络位置的 WebDAV 了。

建议在软件的设置中勾选添加到启动项,可以在 Windows 开机后自动挂载,如果你的 WebDAV 服务器位于国外,下载速度缓慢,还可以在设置中添加代理,并且为挂载的 WebDAV 勾选代理选项。
Mac OS
在 Finder 中连接到服务器,操作与Windows大同小异,由于我没有Mac所以就不讲了,此处直接给出苹果官方文档。
http://support.apple.com/kb/PH3857
Android
因为大部分 Android 手机自带的文件管理器都不支持挂载 WebDAV,所以这里借助第三方文件管理器:ES 文件浏览器来实现该功能,该软件同 RaiDrive 一样,也支持常见协议及网盘的连接。
首先在软件侧栏的网络中选择 FTP,然后点击新建,选择 WebDAV,服务器填写 WebDAV 服务器的 URI,加密协议根据自己情况而定,输入 WebDAV 的用户名和密码,即可完成挂载。
第三方软件
实际上比较推荐使用第三方软件,特别是Windows,资源管理器总有一点科学无法解释的BUG,使用体验不是很好。
程序名 | 适用平台 | 许可 | 注释 |
---|---|---|---|
RaiDrive | Windows | 免费 | 还支持谷歌、OneDrive等网盘 |
Cyberduck | Windows/MacOS | 免费 | |
WebDrive | Windows/MacOS | 免费试用10天 | |
NetDrive | Windows | 个人免费使用 | |
IT Hit "Map Drive" | Windows | 商业使用 | |
GoodSync | Windows/MacOS/Android/iOS | 免费/专业版 | 适用于双向文件夹同步 |
WebDAV Navigator | iOS | 免费 | |
WebDAV-Sync | 任意平台(Java) | 开源 | 适用于双向文件夹同步的命令行工具 |
DAVbox | 任意平台(Java) | 商业使用 | 适用于双向文件夹同步 |
功能说明
支持的功能
- 查看文件夹、查看文件
- 文件移动目录
- 文件重命名
- 文件下载
- 文件删除
- 文件上传(支持大文件自动分批上传)
- 支持超大文件上传(官方限制30G)
- 支持WebDav权限校验(默认账户密码:admin/admin)
- 文件下载断点续传
- Webdav下的流媒体播放等功能
暂不支持的功能
- 移动文件到其他目录的同时,修改文件名。比如 /a.zip 移动到 /b/a1.zip,是不支持的
- 文件上传断点续传
- 部分客户端兼容性不好
已知问题
- 没有做文件sha1校验,不保证上传文件的100%准确性(一般场景下,是没问题的)
- 通过文件名和文件大小判断是否重复。也就是说如果一个文件即使发生了更新,但其大小没有任何改变,是不会自动上传的
- 不支持文件名包含
/
字符
TODO
- 支持更多登录方式(验证码、账号密码等)
免责声明
- 本软件为免费开源项目,无任何形式的盈利行为。
- 本软件服务于阿里云盘,旨在让阿里云盘功能更强大。如有侵权,请与我联系,会及时处理。
- 本软件皆调用官方接口实现,无任何“Hack”行为,无破坏官方接口行为。
- 本软件仅做流量转发,不拦截、存储、篡改任何用户数据。
- 严禁使用本软件进行盈利、损坏官方、散落任何违法信息等行为。
- 本软件不作任何稳定性的承诺,如因使用本软件导致的文件丢失、文件破坏等意外情况,均与本软件无关。