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 协议不支持文件秒传。

如果你使用 Emby 或者 Jellyfin,也可以试试 aliyundrive-fuse 项目。

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

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/v1.10.6/aliyundrive-webdav_1.10.6-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.6/luci-app-aliyundrive-webdav_1.10.6_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.6/luci-i18n-aliyundrive-webdav-zh-cn_1.10.6-1_all.ipk
opkg install aliyundrive-webdav_1.10.6-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.10.6_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.10.6-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 配置界面

Koolshare 梅林固件

GitHub Releases 中有预编译包 aliyundrivewebdav-merlin-arm*.tar.gz , 目前提供了旧的 arm380 和兼容 arm384/386 固件的版本,可在下载后在软件中心离线安装。

梅林配置界面

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/

命令行用法

$ aliyundrive-webdav --help
aliyundrive-webdav 1.10.6
WebDAV server for AliyunDrive

USAGE:
    aliyundrive-webdav [OPTIONS]
    aliyundrive-webdav <SUBCOMMAND>

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

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

Note

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

Note

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

Note

注意:使用 App refresh token 时,WebDAV 客户端请求文件会默认返回 302 重定向而不经过中转。如需中转请启用 --no-redirect 选项。

获取 refresh_token

  • 自动获取: 登录阿里云盘后,控制台粘贴 JSON.parse(localStorage.token).refresh_token

  • 手动获取: 登录阿里云盘后,可以在开发者工具 -> Application -> Local Storage 中的 token 字段中找到。
    注意:不是复制整段 JSON 值,而是 JSON 里 refresh_token 字段的值,如下图所示红色部分: refresh token

  • 命令行获取: aliyundrive-webdav qr login

  • 使用移动端 App refresh token: 需要在其前增加 app: 前缀,如 refresh token 为 abcd 则填入 app:abcd

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-1.10.6-py3-none-win_amd64.whl (4.1 MB view details)

Uploaded Python 3 Windows x86-64

aliyundrive_webdav-1.10.6-py3-none-win32.whl (3.8 MB view details)

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_i686.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_armv7l.whl (3.6 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

aliyundrive_webdav-1.10.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-1.10.6-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

aliyundrive_webdav-1.10.6-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-1.10.6-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.3 MB view details)

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

aliyundrive_webdav-1.10.6-py3-none-macosx_10_7_x86_64.whl (3.7 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9c49ffaff601733afcec74f6dec197cfd8a813b193a379e05cef9be54188aa7f
MD5 7674b77310acfa0c61b3456743f04d4d
BLAKE2b-256 848ed027587f431a2932e2e7c2be2175d3f67341d6b4dcdb4f19b6777dd6f3fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-win32.whl
Algorithm Hash digest
SHA256 e85dd977de6f8868f950e5bb3173f2d421480d9983871b2cbaacc3247126e73d
MD5 f48cb7d27678ae4dda3476d87e05062c
BLAKE2b-256 db486149d85a36ac85b544826fd5261a0b4c270cf4247ec107ba9d881688f57c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f298574a455f8344848c7e826b2f909a3a66183bc4babd28f8b617e3475c0712
MD5 8333acd1ba42dbff58debb859ca67b85
BLAKE2b-256 3b2b503757694a4e47ce2b72a5e70abe38991bf997977f1068296b0212788e57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 ac6c7593c3c11e52fd65f44f1813dfb357f1b4f536cb4a477a28ba9678ab0a98
MD5 d26c59fc11bf81fa1abf766ff02f3e17
BLAKE2b-256 ab36703fb6bbc6d916d8fae06707a8b9e8b701c8833b60e7b3fbd96b6065869e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 5adb8b7e5ed461cbcea7210fdf1acdb1c85f9a4e4cd25c0e95eb87220b5acb13
MD5 5dd0044c634f0a5bc8d37ac764f0e995
BLAKE2b-256 88cd440a395908d18b03abb8da1ef7db0e74c79c232b240de3f44107811c3b8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5ad12bb1fdef5f88770fa75f0323470a5029f7c3800314d687bf54a1551f875d
MD5 6372a3bb036c7852cc28074e81df2fcb
BLAKE2b-256 820ea06b9ec7d86a3ebd86cdaedae2b621715be1760c34ed7e89c7a92d816703

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4906a3b4c97bc9516ed756c9b160019f1f039916ce0ef31ddd7df1c87d0ed2af
MD5 8574d503f527d847a8fe1f65d1a7d6c2
BLAKE2b-256 1d5b1a50a531207bf65335f0d912574f6f2ba07132070b7e7ea3b7fb7efa35ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c48dc2e72ab473e5dc448940381efa3cbcbb3a440f1820582ef65d8b0994c4f2
MD5 b0b38711ab5c495a2bc2f8e40f9c0af2
BLAKE2b-256 f91acd0520e88d175292467e4d949f7def7b71147e852db23ef944513b34e26e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7a329cc8db58299d01e71db5fac9a31a22edad9451f92ca0a639c3657b64a077
MD5 b568f1a7a831ce84e6c521b27d0e86cd
BLAKE2b-256 2b7f76519ffbe2d83d669791ad6513536862893022e1bc1b47a2b7dc54ced5fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 7f996b4a6f07cecb109d044959cc1825db0fba110e50c7bdc05ed0d365e1b8bd
MD5 661fdfda75a15f4b8bcd7074d3defe07
BLAKE2b-256 59369d16e900db57b07a2f2edf2c1bc8a0faaeb80309c1a5c10203e2b07d6614

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e7b76034cb34d4c9392da4a6948ee04317a51bc7ecd70f2b6c685f9fb1f7fa27
MD5 40575f19b0b103a590d6faa2586872e7
BLAKE2b-256 94dc2aeaa247486712b61f116745de99eeccf46331f7b15487e389e26f629068

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.6-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 31b89473a8dcbdc45b0da748efc14998b57c6c5392847420d86fab2b221aeffa
MD5 be99405448583c9e68a9e316a72b66f3
BLAKE2b-256 a27fb47e9692df58ab9f7f7060ad19236ff0b2b73bbc73be1f48c0f5711ad669

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