niniu

一个分享和记录的博客

使用aliyundrive-webdav在路由器上运行阿里云网盘的webdav服务并挂载

Aliyundrive-webdav是一个阿里云盘 WebDAV 服务,主要使用场景为配合支持 WebDAV 协议的客户端 App 如 Infuse、nPlayer 等实现在电视上直接观看云盘视频内容, 支持上传文件,但受限于 WebDAV 协议不支持文件秒传。

简易安装

首先,我们需要知道自己路由器对应的CPU架构,这可以通过下面的命令来获得:

$ opkg print-architecture

然后,前往release页面下载自己CPU对应的ipk文件,上传到/tmp/目录下,通过下面的命令安装即可:

$ opkg install /tmp/**.ipk

在路由器闪存空间不足情况下的安装方法

对于大多数路由器来说,ipk文件2M多的大小实际上相较于闪存空间来说显得太大了,因此我们可以通过脚本,在每次开机的时候将aliyundrive-webdav安装到/tmp/下的方式来解决,在大多数路由器上/tmp/目录是挂载的虚拟文件系统,使用的是内存的空间,相对来说较大,因此可以满足需求。
首先,在release页面找到自己CPU架构对应的tar.gz,其中打包了预编译的可执行文件,这个文件因不同CPU价格的不同而不同,然后执行下面的命令,并注意修改其中的部分文本:

$ wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.0.0/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -O /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz
$ tar zxvf aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -C /tmp/
aliyundrive-webdav
$ rm /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz
$ /tmp/aliyundrive-webdav
error: The following required arguments were not provided:
–refresh-token <refresh-token>

USAGE:
aliyundrive-webdav –cache-size <cache-size> –cache-ttl <cache-ttl> –host <host> –port <port> –read-buffer-size <read-buffer-size> –refresh-token <refresh-token> –root <root>

For more information try –help

至此我们的安装就基本完成了, 我们可以通过下面的命令来在默认的8080端口上开启webdav服务:
/tmp/aliyundrive-webdav –refresh-token <refresh-token>
其中refresh-token的获取方法可以参考该项目页面:https://github.com/messense/aliyundrive-webdav

配置开机自启

由于/tmp目录挂载在虚拟文件系统下,而且是基于内存的,因此会在重启后丢失,因此需要设置一个自启脚本,在联网的情况下自动重新安装和配置aliyundrive-webdav。

完整的下载和配置aliyundrive-webdav的命令如下:

$ wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.0.0/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -O /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz && tar zxvf /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -C /tmp/ && rm /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz && nohup /tmp/aliyundrive-webdav -p 8080 -U <username> -W <password> –refresh-token <token> –read-buffer-size <read-buffer-size> > /dev/null

我们将其写入开机自启文件,注意替换其中”<>”包括的内容:

$ vi /etc/init.d/aliyundrive-webdav

#!/bin/sh /etc/rc.common
START=99
STOP=15

start() {
echo start server
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.0.0/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -O /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz && tar zxvf /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz -C /tmp/ && rm /tmp/aliyundrive-webdav-v1.0.0.**-unknown-linux-musl.tar.gz && nohup /tmp/aliyundrive-webdav -p <port> -U <username> -W <password> –refresh-token <token> –read-buffer-size <read-buffer-size> > /dev/null
#commands to launch application, such as above
}

stop() {
echo stop server
killall aliyundrive-webdav
#commands to kill application
}

其中read-buffer-size是以B为单位的,即1M = 10^6B 如果路由器内存较小的话,建议设置为1M.

然后服务这个文件可执行权限

$ chmod a+x /etc/init.d/aliyundrive-webdav

启用这个配置文件

$ /etc/init.d/aliyundrive-webdav enable

启动aliyundrive-webdav

$ /etc/init.d/aliyundrive-webdav start

在Linux、Windows和Mac等操作系统下使用创建好的webdav服务

经过上述的操作,阿里云webdav服务会运行在路由器上,可以通过http://路由器ip:<port>访问,用户名和密码分别为你替换的<username>和<password>。在局域网外可能无法访问,除非具有公网ip或运行了内网穿透服务。在Windows下文件管理器本身支持webdav协议,可以直接添加网络驱动器,也可以使用RaiDrive和rclone等专业软件。在Linux和Mac系统下可以使用开源的rclone。

温馨提示:

本文演示的是aliyundrive-webdav的v1.0.0版本,如要安装其他版本,请注意参照项目release页面上的链接替换上文中用到的链接,并建议安装前首先阅读官方文档。
对于CPU比较弱的路由器,建议仅用该webdav服务做文件下载和管理,避免大文件上传,不然容易导致程序或者路由器崩溃。

若要在其他平台安装webdav,可以参考该项目主页。

参考资料:

[1] aliyundrive-webdav项目主页:https://github.com/messense/aliyundrive-webdav

[2] RaiDrive官网:https://www.raidrive.com/

[3] rclone主页:https://rclone.org/

 

 

 

点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注