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/v1.10.7/aliyundrive-webdav_1.10.7-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.7/luci-app-aliyundrive-webdav_1.10.7_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.7/luci-i18n-aliyundrive-webdav-zh-cn_1.10.7-1_all.ipk
opkg install aliyundrive-webdav_1.10.7-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.10.7_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.10.7-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 配置界面

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_i686.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.7-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.7-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.7-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-1.10.7-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.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.4 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.7-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.7-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3b9b5f771499e220a1922e3837d1e6e4f5c2dc1c1663bb80d8f8570460453425
MD5 9eee91f484884c5135f851a980cdf6ac
BLAKE2b-256 71f7aeb4766e2bf182457247943c4a28515a3bb9db18f0298b31f8d7c98abf40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e9e86897945ff5ca72ff2dbffe987907051bcea59e08ad201580aeb74cdccc11
MD5 0aa5c1165d1120c07fa4a4496f389fd0
BLAKE2b-256 682f703639b74f84aeca39e887160cd0aa589150af6e230bfd60dc8ca1a4af7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 6f551ba167c2bb1271e1317e083b35eaef8320f06eccf88f6f8c1cd143f5fc4d
MD5 104a4081d7bbf576a5013e35e7d9bdec
BLAKE2b-256 7ca23e578650ba35a8c9cf2aa0705d2ab45c6a25a65609666b76f90a1a2012f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 aa3c2dd4f37ecb637e89d8bc434e1bc4f499281b1afe887f8009ec7723910270
MD5 fd94002e8db817a29251c65ec159ad68
BLAKE2b-256 5a73afb4175f81666deda0255fd34f21e5bb37d2e65ae575c1705303266000f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 28ab5c83e4a6bc2ddd148bfb31fba1eee8cd2cc082b78754ec9288533d9bf82c
MD5 41cb330494b0c3755cf6660557189f01
BLAKE2b-256 be468abf86452fada672a9beb56a385d2c7f25725d0f913e26fed44dee0967c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 6e9e0ab55d3cb79782dfb9a0e14081d294fcebda85dfa9a79945142900283626
MD5 b16072b61360fb7f4a02dc59e631a32c
BLAKE2b-256 462ee626937248bf5ab229eae507ba662043247f28061ef2e5c114013da04744

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3cd59be33047990cca1eee6fe9af8f9f63d236a0f7204f7b4b057dcfa7953654
MD5 53652b5611e64db535f40bb2e250bbe3
BLAKE2b-256 8f6f756aa0aa17e31f95b3e5da7b4601744d9a2e910f980532a312c636c61ee0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d3828a7b8c7526e7b376d19b9264bdfb60d914c6c8dc9e4c86a680eecbf3caae
MD5 d1a900131394b978d55e8ea7712851b8
BLAKE2b-256 ac3c302fe212cef8146532594d737e72c06233f4906dbf284b321234c0318a2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d94d3ab7d2f5ffda5b5ee440599744c329da14cecbf07a423dea788e7422a774
MD5 130ee1d10d357dd3f62551e77c01003a
BLAKE2b-256 12859c971fecccde67ce50b9e8525e93c10a6e8f5eb1106cc8e1ab67b23a4b2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d64dfc3d8646ca2bc2dd062355aa26534d5c1e00327792ad5e007e6b00dbf860
MD5 dae0b0dac15775459aa4a8ac16748197
BLAKE2b-256 a8ee9d4c1ffd288c2b79dec85bf4cc9755c17388ceba6b728b402f159f0acdc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 03c55181d8b2235f710669137926cf6dc5327df968a0e5989ae887dab00a7685
MD5 766b375cc18cafe1612ba175c4aadde8
BLAKE2b-256 03bc5d288ce3583d9945b2b1eb163f31340ba8c5f165faa3ed331efd4d1fff4c

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.7-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.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f961b6bfbfd4de0d36067b35902ab76ce216c39c8a5434615cad283d6471f938
MD5 34d21a54bfa896dec8ff085ab6103262
BLAKE2b-256 3d028f4d998352b5b82a4d832e485e8b4435991e911cb1ddc94aa9c7036587af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.7-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 952796c6f11ad6e8dcbc3f408d4ef064f28cdecfd4d0692060320d5f51bb95e2
MD5 04a94f9e3d78685a34a1dcd89ebb43fd
BLAKE2b-256 b9005ae1f195e4c31bd6fe0e36e0605274b5293d97d345bee864de1d9454a8b0

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