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

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-2.0.5-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.5-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.5-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.5-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.5-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.5-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.5-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 8387c3eea8d13792989c52f1fba51eea91757c9e768e4e45fa811f584968ab2d
MD5 3485302e52485644683a503269913db9
BLAKE2b-256 02acba67ee08e952874deaae7d611955b2fd9c9722653824de82f52d9a25044f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 322a3b36416f383b24ae67371caba61e77addcdef28c70a1e12572b1fbf1306e
MD5 232a64bfeb58b667aa57aaf02f21c230
BLAKE2b-256 1cf90e370394b564569e8c880566f9dc0772f40f04b2b360c4cc259cd022a19f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-win32.whl
Algorithm Hash digest
SHA256 2bc4e0399ffebcbd868e7e3509d74a2c307b77846c879ce76b0ec7072a701e84
MD5 9a0dcc945c34e1fbc0d48cf5246c6c82
BLAKE2b-256 5a4f9c1b55a45c8f5c69f3f70ab6abab8dfb741195159b2f99a01e9f7eb4171e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 00b46d0ea7f818478277dabfd3e4a7747395f6a1e57d91d403f294ffa1b3fabc
MD5 6653a7858c294e9a49464f00e23ab5b1
BLAKE2b-256 327309cc48c6c56d330c1535e3bf1d2960fbfc0341e8d123ddf534d574d88003

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 fa2bc2df12aa1920ccbd3c85f0cb29d23ac9a87deed8f317c65b0ea4bb86538e
MD5 37f0558213417eb53c7bd438b37a256a
BLAKE2b-256 e533a96ba64312ce0b0986bcf16d8d47f50bfe4eca04e31c48e191609adced6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 020afb19f2ca7c9d95a4890af897e0c2f6bc4a1b52212e276f3f9826e7770a79
MD5 4a9780d5d9bc310bbdc931eac39ece72
BLAKE2b-256 2b3fabe545189cd3637536e26dfcf5abe7c9ad768987b34cab63382716632d95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 174a0ed45a345dcc9698b2fd77097e06d23f5a340eba66f9c70688c13b354bd4
MD5 1f3929cef7bf436b2d6e343215097b3d
BLAKE2b-256 1981023e916c649ea5b94bb2c249cee631ef99b732eef7a2e85cbd0646342fd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 919a6d141c10f591f447413b8b62d725145c4e7f3047ead39a0e800c05b0464b
MD5 c21e765b39d1f91763ceef6720bcce39
BLAKE2b-256 2ab99822a232ae93840a3b7fb5ea77fd66a65e95cd7b823f1592241b5bbaab41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 331c701f172e117cafbe2ec173081d4eb2c770e91a1492d6c0865f5eea623e5a
MD5 55f7eea8ef68fad0675f2f2586031acf
BLAKE2b-256 c6fdebac4d06131bb9c270a0cc3e9e35718d0ae4881d13f57cd4a90f85442387

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8bee06e05eb48fd92c8b4bdfabff24521b52a48831b1e63bd7420c52ccba6a51
MD5 6fbcdef8a08b4f21dcd2b5df4c58cc10
BLAKE2b-256 76890526ab7910368ba3ab4510f46b250a2cd3a586e6d3a675df2ef701676a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 6a93a41d65753b63122afbbaa061f3551345139214cb0d246241b86033252786
MD5 783d7b4113deefe702130e1b8974bef4
BLAKE2b-256 3ab71f1fdd47a0ba01216c038fa01b50051dd7cc4ac9aeb898ee8c65047549f4

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-2.0.5-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.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7ce25fb72fa9767ef9ce677811b7f49cbfd54874aaeac8ca885c5b87298ea000
MD5 e187317a19074afea029afcf3f4faef0
BLAKE2b-256 e557c9ac43e8240e33102a76540e92781314da685e333cdb7846fda6c1a87288

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-2.0.5-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 ea02b25d0c716ea7161edad844e31310d54a518a6ac23106916ea1c3baca6e5d
MD5 c8a116afecb6d3f5cff472294afd54aa
BLAKE2b-256 2a2485235eb1d968cac96f5009cf68786e31ce1d3e985a87c2d019dcb11b4a9b

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