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

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

路由器 CPU 架构
nanopi r4s aarch64_generic
电犀牛r66s r68s 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.2
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.2-py3-none-win_arm64.whl (3.2 MB view details)

Uploaded Python 3 Windows ARM64

aliyundrive_webdav-1.10.2-py3-none-win_amd64.whl (4.1 MB view details)

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-1.10.2-py3-none-musllinux_1_1_aarch64.whl (3.6 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.2-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.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-1.10.2-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.2-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.2-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.2-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.2-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 2d40de52c644c456a3bf935f9658ae7301d09b23ff12769ad1c369ba85cebd5b
MD5 da7b92de91fcf58ac63b0ad709116f6a
BLAKE2b-256 010ad7a20d4f2382ca3457da881bf610b4125d092878349121dad67a56e30f32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc0be96950949aeeb34eaf0480607bc7b2828ebf1411fbfdd02a91274eb34ae3
MD5 8d1f25ac73ab6f33c04bab0ae03138cd
BLAKE2b-256 ac7c9f8741a19ab282e8e6211070fad54ce2ddb8e4c0c29be640bc7b0f60c747

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 8ff2667db059c0f85b60e3d800ba62069f8f05fb5f2a0b77649dda6b617f4c5a
MD5 4914cbd79f0b0c5692f082652867d771
BLAKE2b-256 08954511c82f904f4992bde09fba3c68fe982050be32f5576103567bfbb219ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9842dac93d65d86cac8bdf3506aa3c16bce84d407c071d1f2abf284fe8cc42fb
MD5 4a437b5ecb559e18ce3615c777c169de
BLAKE2b-256 020ab9aa1d113046c7b199488917d1b9994ee7859a51ad147ef58b8240eeaaec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3b7f6986c3ee7a5bd95e833efb6173c47f23fe60d889c33d53b2a55683a4d3bd
MD5 315abc2aeea5af2725657287f89561d7
BLAKE2b-256 cfb44a737597201756ebc6e0329a6c21e41a2a64866fa4ab3bd44853e5171b26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 c3e6477bfc20e7ae50ec432bb822a4c164865e30982cf07a5f53c9e14c4b506c
MD5 ff5a9ce18934c161339c42ab05bf334a
BLAKE2b-256 c41d4683ec4d40517861838ac363566fe28357c28b2dbf81310e07c2dad70292

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 400795335c4b48ada389c76ee299c8aebd7ac1f8866cb108ca8a188d5218529f
MD5 02306a7dc9d4a511bab60cfdbeb229ff
BLAKE2b-256 bcdfe5a68a93cf8b66460b5b894590ff8d66258d88e654972a6dfa81edd1c29b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dca782dd60915fd8f38523f8f485585d5251ac939161a83d43e8eaf259d5af3d
MD5 baf61b98a41faf351a67c1d1f148f970
BLAKE2b-256 5a812eeaae5aae9ee2247195c71b3de684ae0d57c0a14154e7285ccedea3075e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 691d29d789792674a482464d9fc832e563bc87de19825f14773b606eb2aeb6e7
MD5 6342df695ffcf56938e5357ac3cf6ddf
BLAKE2b-256 85ffaafe0544953c4a77c8b3ab31f29932e9043e7153eaf243cbfe61936cc68f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9128a66b459d218bf7fe8a1b5a283b6f8bb165d7bf2adf95b02785277a3294d6
MD5 c00e2f953981434a6842c827f58ca2b8
BLAKE2b-256 0bd9e8aa03d4f8867669b736d4c518495d47bad2643b8865a1a51a77bc90cf26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 09edac61f59057f0f3b537578e23b0ba86ab2c2d4383226781f15820d1c66132
MD5 3d12ff1a45b8f936639ecb67991e0dba
BLAKE2b-256 c70002970da49ee2132568dd840ccb656d0b8b2cb63e42cb3f6d7f51c7e6c273

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.2-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.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4982f11962000db1644405994539514ec779c37522b3af7a9ebaaf1b5535ebc4
MD5 9ec85cbeab04a2636c05125a03d62f08
BLAKE2b-256 26b1e76c7eb7102b594ebd93efe0e21b6e3e6c6cad2c16fa0adcaeb1fc5a0783

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.2-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 33ed55cabbe5863008ac6710c21fe81fb1f7bdcab0d4e57b120a7d0a3e44a022
MD5 6a9572920c08a6751efd0e17ed4fe7ef
BLAKE2b-256 665a432f48870eca57d1e229eadc182d26b28d40f925e549e40193c65bfcb13f

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