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

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

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

命令行用法

$ 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.1

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-2.0.1-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.1-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.1-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.1-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.1-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.1-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.1-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 f1055693e33067ff9d802bec561157b7013ba52247fa6d1ab891cfb446b85fa0
MD5 066375a9d045685d5e09a74f1d0b8627
BLAKE2b-256 2eb6a39e3c135c56293089d6ad9de678175a182fe035a0c55827713dfb7b9d96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 31ec04724626cd049adb32d0fca839dbc7ebb702e22c4db1c5cebef1e1faee9f
MD5 fb19f3e99b917bc40d8b681c349c8bcb
BLAKE2b-256 79fffb423c07692a64baa7eb7e4cb7e6926731e195d8205c1dec882266e9c1ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 b2fd2f49ac3a63115a68da820ea707a32eb0f68519bf612bab9db73bfcf5c18b
MD5 c0eaee0e436d2b91882f0dcc912e65e6
BLAKE2b-256 54775c906f9c55b9c83f7b550edcc0b63ae05167d93181b839a6b82f2ae43f63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3cf660e65bbef52bbee6f67650ec7f3d97724358e1772997c21ab89bf3d7d547
MD5 d9db00ce9774c8429afa086b49d8e94c
BLAKE2b-256 eb21a6c37f4f25f86d671b0659d2e6b637e5a99ece94a98cc996037f8a796720

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 6414ddcc4f4d8c2e89624f6d5bfc65104213a06baeb029154563efc5e00534d4
MD5 c5a91ad00a12d611813a5ddd235bf846
BLAKE2b-256 d87ef7a17226339003d5c585d14db07e0ec8544ab2a2a319bea512ec5e50e515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 35d4e6f2a85bc7582ccbe06c8c3c31d192e45ed41dd74b88f113e20506085d32
MD5 247a5e6fbc52d18b115c76cbb4201dd1
BLAKE2b-256 460cd5d67c40058657ceafeb891072985f1e9fd625da5fd4b3bb44cf6de91b19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 53c40db36392b92f7a41830fea39e91965d6643a90ee14a6764e376c5570df5d
MD5 860abec93aefbce53c70d91572244f74
BLAKE2b-256 da30b10c6e282ce4d2b8673292062e35e8a9c592328992e91c741c8b3fbf10ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 98666505af2eea0ed1fc2e949b9ea76cab14ea05c0275814327d7fb9cd9121df
MD5 12547e28741117a55ed6b7a4e6093902
BLAKE2b-256 f1edde48bcaf5d444a1145b8f6a78053013537518e372c4f9bd114482f6f3588

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 459fd26df1f097386d3d001f36ffe71434aa9e051129b47bfa682662ce2e197d
MD5 a2be4881d86cbd895d4a80601f791f89
BLAKE2b-256 6a549dac8db1906711da161f5c53835e4124cc7b7ba7089778afe5fe6278d071

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 85a2614188d8cc275791d93f539ecf52bc84e3ae5a71696074fafa8730245f16
MD5 8b29b1ed6109fc7306d1282d9bcfb1ca
BLAKE2b-256 ccdecfc371f5733fb72a1335f5f803ac222fa2abf301e1f6f03f7c429ee19b34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 1eebf7680246d62380db5fe899abf9b769f5b9919f41f70884e76f505d5ade45
MD5 7ef69d0f3cd25d716716fdc6f92c42a7
BLAKE2b-256 ca0f0b724ddb8777560e2f7327b2e1bb8160ee2a182d665dad82ea3cb7623e9b

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.0.1-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.1-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 421247b1771fa5a5903d48653daeac4d66f4499829e2ab2536d79290d8fac52f
MD5 46e2de8a95c6341aeb435d34821c1c41
BLAKE2b-256 cf99ccae07a184b114986215989d89480b2443d3d6655e8012a95d02b3ebbb90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.1-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 b188438291147a8e9d74f455a7f4ec5d30694ca7172c9913d3c1f50259e6923c
MD5 ec5a66dfb343b11a1f0289dbf69f1017
BLAKE2b-256 3e2176aebfde80b30680a6095664435654fbb37ea19c32fd98d7d01fe846127d

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