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.4/aliyundrive-webdav_1.10.4-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.4/luci-app-aliyundrive-webdav_1.10.4_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.4/luci-i18n-aliyundrive-webdav-zh-cn_1.10.4-1_all.ipk
opkg install aliyundrive-webdav_1.10.4-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.10.4_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.10.4-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.4
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.4-py3-none-win_arm64.whl (3.2 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.4-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.4-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.4-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.4-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.4-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.4-py3-none-macosx_10_7_x86_64.whl (3.8 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6de6be0230fdce93df4bbe7f07ccf05fa9f3203ba7c69a2d07aa7f73cd452e2a
MD5 1498d0204ff66a2c8b38d88a374f47c1
BLAKE2b-256 11df5e396f5a7b96285d1e38d1680e9047be98ea026af8dd52a765e55407c550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2aa9c852d31e6421b2cae8a2d38ff441a9296b7fd5c4eca49a73cf230c866890
MD5 83ffbe63ee94b420afea76ac27603776
BLAKE2b-256 fe06f8f737b9b04f73f185d611099bea730e548571b9199a002855159c2c6add

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 3a6e7b2fd3eda2eaa3836ebe6e586dc0057d1850f644c6f07e65f37faa4d7327
MD5 cea8fdee95ae1cbd09c08005c8bd6634
BLAKE2b-256 a51854824d7b1deb201ea6306519a843945aaa2dfab904daaaec13539766aede

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 04e3265518e820aab757d536a06bc5a5f7e46bf304ee1f55dc7bbdcbd75e2553
MD5 81427d2e7b0a70e4c1928eff73bc256b
BLAKE2b-256 cb7e7d1b865f116cf8fa48c7d5fa2c5b169a810fd06e054332b78634648f0fa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 be03ed9df42f8f2180d086178b345dd3828891a0d9c091161cd7fc89cc4676c4
MD5 8a47810c314b50f02db8e3a1d2ef03de
BLAKE2b-256 df694553836863ff8180d93b5958b00e088f7dbe8962a259b3ba8ca6512321bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 7f3aca4c7f6d5682e1d7f52f77f36d9ec283898d12680196a4aab0dbe15d41ba
MD5 dc0821b8cac2acd251342426a52ba9bc
BLAKE2b-256 30a1e775f41acda08a920b6b2c5c704403e35779ae3a0784b4835b1c11352e97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e65a867385ef3098112b77ac95b650c3a72baa1805e5da92499a98c07bbf0437
MD5 e48bc5c63bb21ccca28c500b947f65dd
BLAKE2b-256 64313918ee8549a9f4df8e71dff0a547d69ccf99e8db5db689bc6772dabf7404

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ae57790e36a2db3f149721eec299b23e56f06c97c7decc598e5ad57afaedf0de
MD5 8ebbe37bf650a27846e87bbfc861a672
BLAKE2b-256 dca389be4d75ce2840614d0cfd194646bf6a0d691d60f909c4b49d543db2d85c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d79a296434609dcb1762f96058afc87cebdf4fb2d61af4df7d4d17a5e8dc6a9
MD5 3d6d6c2295317f20afe5b40db0f80f75
BLAKE2b-256 5e420d7eed529de25881b64e2468e715bdc1bec71cefb12631084132cfd63a3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 79184731f969cb18ec3866efac48079219b0da02b0ed0ac6d28610c4bdff7980
MD5 64abf83d0b598f519b30a27370a000c6
BLAKE2b-256 28cdd2be73d47c26b38e03bcc06e0516d26069510669a4e23b1beb28e4e3bab1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 5bab310feb319af97776d6623f999f080e667712d55a5a5b9c6430e37c9e8de8
MD5 7974758e526433d27a10a71029a5861f
BLAKE2b-256 5d67b4f76c54d6c5a0964af0e488a70a7c2a3cbe22424d1e23fe9f54a11f1947

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.4-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.4-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 608a5d0529e2c4d19190dd07fd44ca888e918d5e73a4cc11502977c31226a271
MD5 186bf9adf05b50937e6e607c4884308f
BLAKE2b-256 f970b6c05e5e1312c30fa8429864caf26a554bcc93ac1ecb272564c54633401c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.4-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 d965ad015203a5c508bcd1dcbdc15de8465e9ef658936cd4341c3c902b7c0710
MD5 237921d277cbe51dbf5ea625c79a0549
BLAKE2b-256 02ca7f4e292fabf7ffd659119f4628010d270293b62ad08f5fe02c37dcb9c3ee

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