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.

如果项目对你有帮助,请考虑捐赠支持项目持续维护。

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.0.3/aliyundrive-webdav_2.0.3-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.0.3/luci-app-aliyundrive-webdav_2.0.3_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.0.3/luci-i18n-aliyundrive-webdav-zh-cn_2.0.3-1_all.ipk
opkg install aliyundrive-webdav_2.0.3-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_2.0.3_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_2.0.3-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

命令行运行 aliyundrive-webdav qr login 扫码授权后会输出 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
  -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

This version

2.0.3

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.0.3-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

aliyundrive_webdav-2.0.3-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.0.3-py3-none-musllinux_1_1_i686.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-2.0.3-py3-none-musllinux_1_1_aarch64.whl (3.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-2.0.3-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.0.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-2.0.3-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.0.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-2.0.3-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.0.3-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.0.3-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 9be8f76d99471739d50a4c211beacc64a290bb281053529217a6ca3e3b47a664
MD5 4166ebbdae92a1b2b93e31f4e2103fcc
BLAKE2b-256 f5967fc4ef773d2e7026b9fa6e97c7c94aaaa46a6f126b9b675b8fd9f24e7db6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5097c9b693ce05e70d617e8f77a37a60c95c60868ada240595ce3e6a43e2375a
MD5 ee4d0c2a67b1ba427a117309ccdffb02
BLAKE2b-256 a20e616c485a2c44f6a27995f84d167626ecb2dcc7165d30ea5371439932336a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 3b882214a9470b8c80d2103430f5d46a85eb9099a6e0e2478135e6745de1caef
MD5 fab4481c8e749706e25258a844691606
BLAKE2b-256 9516b56803673d10f39ca780f3f8ffdb9221fd50ccae0c0d3e75b6f14ccebacd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b3fb8029dcebd77a79705d5d107961bac90a509bef63002635369be2ca96eb49
MD5 0df0164e9307b235ddf0b24f8b76e739
BLAKE2b-256 ea457f0011646dabb7cdb5c77e87ba92c2d2ec4a85cd48b985ac2886d6502feb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 9376acf88ce8a01a1c3836d28af0cafcb14a91516d0f31abe8c37264663d34c6
MD5 502d485573406ba57504a659b2b9df60
BLAKE2b-256 37f97beeab4c2143bc50ed2c3fd42ce41d96876df8171c95408a658d09809224

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 b59259140f1b715b889fe9ed4c088aba6ab09ad4140eec10a26852310c468e31
MD5 188b234f1ccfde1fa28dc18fec12953f
BLAKE2b-256 fe7927af3833a0b712df1b4bf3729eb7eeef76fb9f9a3a1dd6fb5629e70cfb7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 67979d6185447a6510c53a449734f8d401c3be96c8e5022d5ada7270e75a8c69
MD5 0aa0fb39f8d622c13062c9c34214e299
BLAKE2b-256 46008fea291c616707b35e0cefd3e2b80f21f19d82c417dffefc1467210b832d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 277036d0eaa8f455a9f41b91a177f2660ffe63de4516106996372470757322c0
MD5 db456e4a3b9fcd39691ef910e9b242dc
BLAKE2b-256 d01947b3c4aba60da4ee20dff6e7c3f1efd5c37dfe7c086d77a678d8dbee56e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1624737aa2d492ee76a0ff9e8919e696832eb93188d03cbaf64b2b8bc6283a0d
MD5 b893dc69f85e19d3597b19b7b808200a
BLAKE2b-256 a7627988cc00b6f6b6892f43028f94344886060e629d34fdf3fe64df2deccefd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 dd4aa6456f9d5a84a3fa9f16a0baf055ede6b758a9852d1d6b67077ae4ff5664
MD5 1acb1ae3e5b08c9c011b2811e37a06e6
BLAKE2b-256 253a32dd4fa29ce1d06846f00260d42c275e82ed8ec361ba267157666c01f340

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 0475fd9815946ac75fefeae2bc620546b55a19ddcaf2bb9d55b408dfb31c0f9c
MD5 faaab4b50bde6340406896567e5c43a3
BLAKE2b-256 824c06f346ffb323c0ef8f1a947f37f18373a25dcacf082972e30129d4926710

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.0.3-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.0.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f24776e5267c54fc164b09864c43dc4dc2700525190b2a1f0a323725d2b9bfb6
MD5 9f83cf9471406acdc098da5051389195
BLAKE2b-256 a30755b0b7ca5d31921bab3e6e5c243bf13599f179ae7b5af76edffd889bd4f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.3-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 e233091f0a42df6d34db2cec83548cb50e26e96ce982b2cce5deb00949266573
MD5 fa7c18724a2652b74f666ca600bb116f
BLAKE2b-256 ade64d3c69524d580a56277d8bf5b1fc672ea06fb678d6260b2c8b82070eee79

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