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

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-2.0.4-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.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-2.0.4-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.4-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.0.4-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.4-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.4-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6b4152d9c1ff64ef710b7fec608a1a79b1dde3d8627eeffc561ca98d00ec758c
MD5 684be87d73d4af5292b7d8d98d9c405c
BLAKE2b-256 92887143970e5001d06b1b5cab432ffd455b54d04bdbffe7f6c4eb8d1ccaebe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7d1d4dc6dad91703324f70938ef0926a10fac22ac135a489610c07bb42f9f6dd
MD5 930360f7e3d794ecc8ca641bffeda57a
BLAKE2b-256 2710c6236e2fcebff45649e771e4fbab6f786c724ce7cfc6946add4e659c17d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 18a52471bae5a5afd62884b6b9e1c7c516b8dd6f59b8012f1eeced43ebdc66ce
MD5 416c19a4c2f4d52b1cf4bc62dd1195aa
BLAKE2b-256 85c5ef5daeb998e21c1c382f931ed1a49d67b874669795b5ed6eddfcc8f70d96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 890e1b0823972829cfd00e94fd22ed5e861cc2f5bcdc2e36e445511d926f1b3d
MD5 fc81a8fde47a9d0abb3a1ad80ef0c7d9
BLAKE2b-256 60fd357cc733951c6a0ca004c0342f8de003734921b4891c233fb8649af4d0d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 a8477841490a51c419dd8e95fecf7a3044b77a80f250a5ca8147093a77e12a3b
MD5 5675708daf573f09157a44743bafee54
BLAKE2b-256 b3e01c7d0c9a01290a0508dd390928d223fb181e9e9eceb052f40529d4a04541

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8ef7bb2fe8284648d4d00e4b8893f38f9777daad2a214968ca8081327f75a7f1
MD5 27450de3374ba013a42749a6f9b00b14
BLAKE2b-256 594f9e219bb4ab9de924e152a7064a690ac89d194cb7a96db7a9e8489a918712

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ec115b4129f3edab0821d64b7ff9679a11926f7c2c1a0760afa31d397b4bd49f
MD5 755aa5bb4c6e20d031b7d6e9278f9da8
BLAKE2b-256 41773b1b1a46df26de08ef8ddc9bc93858128b0fb298f45096db422c45dddbcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 11b43ab70be4ed62f392976b68a45bb17892c4ffe0fe51048cb3c8cc604cc107
MD5 11f314a538cca3a0760608c53841c88d
BLAKE2b-256 ddc9ea878e341640cff3a9f45a5c2916d0ae29c5aaa283f5040b3485beb8eed8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd33c7fc0556beca44c9e04d8098f3899e2fa26d91686d1cd0e510b8b6687bd7
MD5 7d54c5b37fb203b043f9cbabcf167257
BLAKE2b-256 c75e0197ffcb1861ea3a654fc41e4836eb23746b5d3f5cd7391db58b2ea71cda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b870dc0775dd832e711777916030383df9604231b00f54b1a77a313ebe118e18
MD5 7570230f3704d4cb10f0c7482d7f4de7
BLAKE2b-256 d86ebb6c6f7e2d0d696fc7ee3b960f90d428658aff431a82d79ba4fed5bd7086

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 3c069e54178e4a197324f8a84869a4a1fed6c12a2b6a715ee43f735c74307930
MD5 47994484856cba410c2565cab7237ffb
BLAKE2b-256 768e13c692ee4c4642c9ef1060c07e0ce111418de387f3a927abe7e4b5110571

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.0.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-2.0.4-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 aea54df791964ba83a31bc39b973de653df9cb73ad0c051e1465016bfd9b6e94
MD5 e048da5c66cb2ae2b599db04ec4cc4f4
BLAKE2b-256 376e972511e1bcf78ddf6bb3f781fc7103f7d5b83a64d2f3c2346b983f572330

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.4-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 d6db8231946874f64f5b528f3f1495c9f31cdd1d9c270de9a90e06832825cb14
MD5 f69412ed1dbe94eb6428111ebb0efd88
BLAKE2b-256 11119103d2d4a8f4bff7f33126a6f74ed86e45a78f963f0bb55789d70ce7c312

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