Skip to main content

WebDAV server for AliyunDrive

Project description

aliyundrive-webdav

GitHub Actions PyPI Docker Image aliyundrive-webdav Crates.io

🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub

阿里云盘 WebDAV 服务,主要使用场景为配合支持 WebDAV 协议的客户端 App 如 InfusenPlayer 等实现在电视上直接观看云盘视频内容, 支持客户端 App 直接从阿里云盘获取文件播放而不经过运行本应用的服务器中转, 支持上传文件,但受限于 WebDAV 协议不支持文件秒传。

请注意:V2 版本基于阿里云盘开放平台接口实现,不再支持阿里云盘 Web 和 App 版本获取的 refresh token.

如果项目对你有帮助,请考虑捐赠支持项目持续维护。 也可以考虑加入aliyundrive-webdav 知识星球获取咨询和技术支持服务。

Note

本项目作者没有上传需求, 故上传文件功能测试不全面且没有持续迭代计划.

安装

可以从 GitHub Releases 页面下载预先构建的二进制包, 也可以使用 pip 从 PyPI 下载:

pip install aliyundrive-webdav

如果系统支持 Snapcraft 比如 Ubuntu、Debian 等,也可以使用 snap 安装:

sudo snap install aliyundrive-webdav

OpenWrt 路由器

GitHub Releases 中有预编译的 ipk 文件, 目前提供了 aarch64/arm/mipsel/x86_64/i686 等架构的版本,可以下载后使用 opkg 安装,以 nanopi r4s 为例:

wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.1.0/aliyundrive-webdav_2.1.0-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.1.0/luci-app-aliyundrive-webdav_2.1.0_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.1.0/luci-i18n-aliyundrive-webdav-zh-cn_2.1.0-1_all.ipk
opkg install aliyundrive-webdav_2.1.0-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_2.1.0_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_2.1.0-1_all.ipk

其它 CPU 架构的路由器可在 GitHub Releases 页面中查找对应的架构的主程序 ipk 文件下载安装, 常见 OpenWrt 路由器 CPU 架构如下表(欢迎补充):

路由器 CPU 架构
nanopi r4s aarch64_generic
小米 AX3600 aarch64_cortex-a53
斐讯 N1 盒子 aarch64_cortex-a53
Newifi D2 mipsel_24kc
Pogoplug arm_mpcore

Tips: 不清楚 CPU 架构类型可通过运行 opkg print-architecture 命令查询。

OpenWrt 配置界面

Docker 运行

docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
  -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
  -e REFRESH_TOKEN='your refresh token' \
  -e WEBDAV_AUTH_USER=admin \
  -e WEBDAV_AUTH_PASSWORD=admin \
  messense/aliyundrive-webdav

其中,REFRESH_TOKEN 环境变量为你的阿里云盘 refresh_tokenWEBDAV_AUTH_USERWEBDAV_AUTH_PASSWORD 为连接 WebDAV 服务的用户名和密码。

QNAP 威联通 NAS

QNAP 插件

qnap-aliyunpan-webdav by @iranee.

ContainerStation (Docker)

管理员登陆 NAS 后安装 ContainerStation 并启动服务,在 Management (管理) 标签中 Create Application (新建应用),配置如下

version: '3.3'
services:
  aliyundrive-webdav:
    container_name: aliyundrive-webdav
    restart: unless-stopped
    ports:
      - '8080:8080'
    environment:
      - 'REFRESH_TOKEN=mytoken...'
    image: messense/aliyundrive-webdav

其中 REFRESH_TOKEN 文档最下面说明;:8080 网盘访问映射端口,可以按需改为其他的。

点击 Create (创建)后启动,访问 http://nas地址:8080/ 即可看到你网盘的自动生成索引网页文件。

参考文档

rclone

由于 rclone 请求时总是会以上一个请求 URL 作为 Referer, 使用 rclone 时请使用 Web 版 refresh token 或者启动 aliyundrive-webdav 时增加 --no-redirect 参数.

为了避免重复上传文件,使用 rclone 时推荐使用 Nextcloud WebDAV 模式,可以支持 sha1 checksums. 另外需要配合 --no-update-modtime 参数,否则 rclone 为了更新文件修改时间还是会强制重新上传。

举个例子:

rclone --no-update-modtime copy abc.pdf aliyundrive-nc://docs/

获取 refresh token

扫码获取 refresh token

命令行用法

$ aliyundrive-webdav --help
WebDAV server for AliyunDrive

Usage: aliyundrive-webdav [OPTIONS]
       aliyundrive-webdav <COMMAND>

Commands:
  qr    Scan QRCode
  help  Print this message or the help of the given subcommand(s)

Options:
      --host <HOST>                              Listen host [env: HOST=] [default: 0.0.0.0]
  -p, --port <PORT>                              Listen port [env: PORT=] [default: 8080]
      --client-id <CLIENT_ID>                    Aliyun drive client_id [env: CLIENT_ID=]
      --client-secret <CLIENT_SECRET>            Aliyun drive client_secret [env: CLIENT_SECRET=]
  -r, --refresh-token <REFRESH_TOKEN>            Aliyun drive refresh token [env: REFRESH_TOKEN=]
  -U, --auth-user <AUTH_USER>                    WebDAV authentication username [env: WEBDAV_AUTH_USER=]
  -W, --auth-password <AUTH_PASSWORD>            WebDAV authentication password [env: WEBDAV_AUTH_PASSWORD=]
  -I, --auto-index                               Automatically generate index.html
  -S, --read-buffer-size <READ_BUFFER_SIZE>      Read/download buffer size in bytes, defaults to 10MB [default: 10485760]
      --upload-buffer-size <UPLOAD_BUFFER_SIZE>  Upload buffer size in bytes, defaults to 16MB [default: 16777216]
      --cache-size <CACHE_SIZE>                  Directory entries cache size [default: 1000]
      --cache-ttl <CACHE_TTL>                    Directory entries cache expiration time in seconds [default: 600]
      --root <ROOT>                              Root directory path [default: /]
  -w, --workdir <WORKDIR>                        Working directory, refresh_token will be stored in there if specified
      --no-trash                                 Delete file permanently instead of trashing it
      --read-only                                Enable read only mode
      --tls-cert <TLS_CERT>                      TLS certificate file path [env: TLS_CERT=]
      --tls-key <TLS_KEY>                        TLS private key file path [env: TLS_KEY=]
      --strip-prefix <STRIP_PREFIX>              Prefix to be stripped off when handling request [env: WEBDAV_STRIP_PREFIX=]
      --debug                                    Enable debug log
      --no-self-upgrade                          Disable self auto upgrade
      --skip-upload-same-size                    Skip uploading same size file
      --prefer-http-download                     Prefer downloading using HTTP protocol
      --redirect                                 Enable 302 redirect when possible
  -h, --help                                     Print help
  -V, --version                                  Print version

Note

注意:TLS/HTTPS 暂不支持 MIPS 架构。

Note

注意:启用 --skip-upload-same-size 选项虽然能加速上传但可能会导致修改过的同样大小的文件不会被上传

License

This work is released under the MIT license. A copy of the license is provided in the LICENSE file.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

aliyundrive_webdav-2.1.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

aliyundrive_webdav-2.1.0-py3-none-win_amd64.whl (4.2 MB view details)

Uploaded Python 3 Windows x86-64

aliyundrive_webdav-2.1.0-py3-none-win32.whl (3.9 MB view details)

Uploaded Python 3 Windows x86

aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_i686.whl (4.1 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_armv7l.whl (3.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_aarch64.whl (3.8 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-2.1.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.6 MB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

aliyundrive_webdav-2.1.0-py3-none-macosx_10_7_x86_64.whl (3.9 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 49c2f44e70ffd48aefd6ceecf665e0f4b3a258612220a9d3efaa4b693de6c104
MD5 d4696a9f0c9f2be8eb824769a0cc3bfc
BLAKE2b-256 34547bd6c39c10008adad572d711f1c4eaa9858920f01e4a3f85ae42187ba11d

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6cdea92ae1bd1385769a16c03724c99aeffb6e17b6851166e12ba082975c7c76
MD5 1da7eb8eadf01f67ea5779c407aaebe0
BLAKE2b-256 2f021b97ac1e04e0122d94a71b61f90967aafb764606805a25f0be908d62a5e7

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-win32.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 80bbcdac16d5e39c9a20e0e6154b26050ad964753b5f7a710b16a8fa38f066eb
MD5 f5d5ae037c789e0febcad5b2c041bece
BLAKE2b-256 fc581ebee3ed8adbf20f03671ae286bc3f2407430b28c1a444c228df1008b9d8

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4aecf3a3b23b0e3a4837e04a14ea16ddd1bc8db0c5fa2f9e1e7488580732648d
MD5 765114f4990523d2c838c7b365c5e0ac
BLAKE2b-256 d69950779d8a56085ff8880acdb737932291667b56a564dc028e7eb70eea628b

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7411a4c99ab5cf2136b781ceb35540d2eb4effd474e00eafc34373dd15e4aa33
MD5 ba3aa137c9115c3f84f6f954ec386bce
BLAKE2b-256 475ed0329434ccf2007965f60c111380f1077529dd3942c1b53a22b44ff6fa65

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 f108f245287864a7e4afeedce1cf2deca467b7fb28d405b51b955fbff60e066f
MD5 6bb228bb7adecad8b1fa55dfd6c0f563
BLAKE2b-256 09664d61aa1e62a2a13f268504febecd25580cfad53a595b7c5ff717496063d5

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f2777bb15692cda1d219804d8c05701a06900366a4bffe5529f020926ffc162a
MD5 f9be4d4ad73ae1d1fe118ad6211531a2
BLAKE2b-256 5053e12c6e399055908fcc81228acbe79a115745e7351c6fd960d37ad0d36a81

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dfbeeb62a4a553f75be2622e04811845dc30a4b90e4aa58294846ee64a5862f1
MD5 145d820ee360ac6aae610d50a474ec2b
BLAKE2b-256 10d4ac2be50925b332d2a1e9cbd1754cdbef9ce5715244f109bdb9946e392c50

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 61e9c36dfc903640d36928b988f12062e7a769fcc78690e5f3b76d02252f1a69
MD5 d1ebca106143522313fe2771e8a4d295
BLAKE2b-256 9db7cd50247cae95a37859be8a4ec64f147b2e1e7e8e5ea6cf305477d6ee46c8

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7c8dd0df22eaf38b26cd0e29ae1b24bb944bbcb058d9271cbe11fe14682bb9b2
MD5 a7a0e809641f757fea34618ef1cbefa7
BLAKE2b-256 bc949ea0da8436077ba3dc438db3180deeb9f3e3ca7015bfef605112e78572c8

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 80cae1efd8b346cefddd787ec1930cf052c0ce1af2a82be9383c5948ada77a26
MD5 049055b4d3d2f0cd9bdffa2801bf48cb
BLAKE2b-256 40251f605c94a42173b6fb05733e31e5036eecbface0a593cdfab681b57d1146

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7b19487a590574267710a18586921caa88490f6e9c28b81df4dfb30f61bba5fe
MD5 e29e1260745d47103fda122955d4d208
BLAKE2b-256 fc58d2d4529ff2c06fbe299101c1421e334ccc0301a56594c67484574593c6eb

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.1.0-py3-none-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.1.0-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 c74f444c8e74422782cb8ab41f93a6d314cfb7c8548f8e5498ad5bf30137075c
MD5 49353d91697a376f7307578591b82b37
BLAKE2b-256 a154ca859a11a424632124cd96abe126fe296e99418d6894d8d74340890294af

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page