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

命令行运行 aliyundrive-webdav qr login 扫码授权后会输出 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.2

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 1315033481758f239b815fe42b15dfa9f7ef3b326b1600975b0cfcf93bccec1c
MD5 ec85f5cdbaa3012690a25b24f596a4e6
BLAKE2b-256 0f9f1c07bfd7c10c12ffefebf7919376ca7e503b32a969383c5b45e0720d9f32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9f9732252033f84b9eb1d10fc455ca7d80fb4e97588711fb5a676928752677f5
MD5 2d18fcc3f3432c230306ed5c401c4e81
BLAKE2b-256 ee79491e6e4897339a97bb83daf08f1234a9d3c92c4aade78394a85b00aedb97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 303467f1d2de44af371950dd9ce59d14a7e8f2a28dc9ee58bcf1bc7f76529ffa
MD5 3d7bf4130b6cfb9f8d17e99e8f53ef49
BLAKE2b-256 c75b0e7be0a8403611de8181f3414d1015e68e9baa0a73792ad149963e80200d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b2cb467a0d5101596ca2d2a5b84bffbb7c58129bbf1dc67ff8742a7eb0f1344a
MD5 0072dbe16cb00899aafbb5f1a025850f
BLAKE2b-256 6d836e5ada99555a54c46714de4c78b3655b8f8622a6b142c5bfceea00d4726f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 b91462bee331459086025ebae815836aa3b187b3e51dadc4da5ccc28368ac3b0
MD5 7752f453b61d7e73d19bf7905f8ae4d9
BLAKE2b-256 1f5c8203a54c99c6e5adccc617c1ae7a22155e67fb16326db9949cd35d5648d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 878ef0efd6c34194fc7ced5e93fe992e100f36f575a996a94d4ebd7e38124a44
MD5 e2b6e6fb9d88ffeb02d2e1fa31559588
BLAKE2b-256 6c8ae2fdbbe33cdb6b079958742a4ae932defd8dfb64edd574cd903b4c243ddd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8e744565bfabee11e8d852256650441dd6fb9559cc3a029d58e2faecfb0b1d8b
MD5 05648f10062d61b5d584a8bafadadac4
BLAKE2b-256 a2de2b9be76d96edd445c4c8ed01b97e806a7df72d4235e939d51d03ca610c72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ede3d126a35ff6b85bd324ac00701284c4f3677b3c3936e7aac764edc0b5a9ca
MD5 460e9154ab8083a53a0df04bc9b6b417
BLAKE2b-256 c4b4d8d34472f0dd5a8544abef76ff0a9875d585e64637b6f3c6f4e39375d708

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 173e827796428fa7c17f67d0ed7421875deae48d952dcac802f8cb1bd6be0157
MD5 860689e2e80971a5cf0fbc87fbf3a038
BLAKE2b-256 14881dc60f71a4454211a41a0693b5a8d8d9ee5d9ffe20b3f4ebecb4f7753be0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8aebb0c8819d80c8f30c5fbad1e1e18b8464578e97f398e4971ed697ed7075d5
MD5 c95834396f1e8d33816543e30cfca848
BLAKE2b-256 0e6aa02d79dfe53242bc91669c69aba858136058fa84e191ec07a86d8576e765

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 b10e91944fe60997de23c0c680e3abd730ec6181d4689ce46c92b295f9a4b379
MD5 3fb8cc4b6c560736c12e33f4963663a5
BLAKE2b-256 0f03278e5d9c86876f4571a32e1b5cd7adfb6edb7f474614853628d9484b5892

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.0.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-2.0.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a1a7cde74168661c6f7dbda02605cf5ccc26f37a8ead606f948f37f4f7b4825c
MD5 53b4b13b9f26a3053a58184ef060e219
BLAKE2b-256 3b464432cdf5cb8da24c3b8d94b8de71f9491f0e35ea4713e60eeeafd7d68c6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.2-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 d1c595a620885cd59c1cb59e074222326ed8c390f53e50609b033762b0c71845
MD5 49932fa7bb3291736bdd34fe511be67e
BLAKE2b-256 9831c909c2e1c86abff1fbeaf9c1fd6d90744082bb4ad4c12cef1c94143741d4

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