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

如果你使用 Emby 或者 Jellyfin,也可以试试 aliyundrive-fuse 项目。

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

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

其它 CPU 架构的路由器可在 GitHub Releases 页面中查找对应的架构的主程序 ipk 文件下载安装, 常见 OpenWrt 路由器 CPU 架构如下表(欢迎补充):

路由器 CPU 架构
nanopi r4s aarch64_generic
电犀牛r66s r68s 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.3
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.3-py3-none-win_arm64.whl (3.2 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

aliyundrive_webdav-1.10.3-py3-none-win32.whl (3.8 MB view details)

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_aarch64.whl (3.6 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.3-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.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-1.10.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

aliyundrive_webdav-1.10.3-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.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.3 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.3-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.3-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6332621088908220e4296e1750cf5ef31be69a83e054113d86704a6e30676b29
MD5 acfa6955f91d3ac208fad51c298474d2
BLAKE2b-256 a869ef0a1ab6a61ae15dbbd6e4671dd8639445c78283f6c2060d900a37c868bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 88801e0fcd0da421ef3e4ad47f202f4706242aa398e1cf48d27be3f428d56404
MD5 8deff440131f1bbb94685f76e34f22ef
BLAKE2b-256 dc47ecbaf98a35f513b029d0163ee29b4e5a2f0bafaba2249e09a44320b0c4d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 e13a3d66febe8d100018c16a9b2ef545766efa0f3135472e27fbd6c47911ebe6
MD5 4049787c713a9391a7b6dcec212ccdd7
BLAKE2b-256 0d572377aa01c18ca2201d4cdb5a7c508b4693e9dc7361c7ef5a62e9c29e39d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 41ae119fb004e201d7e4c2c8638f71a98cd9a087e6dfd95117294a6335301788
MD5 243fd8762fc812b32ad76e80346e11b4
BLAKE2b-256 9ea5c91fe5d5792f118c9047beff983eaea4772a110e409d18349a19c2592d26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 1b5d45c15cf1ee854af77c47b95da3892099e18675179cdc38aae384f96aae7d
MD5 439f2f04553c805194ff013a57800fc8
BLAKE2b-256 a4f8afee951526d1b08b076a3c9d5a4788a23939fe03a59ebe32f4b49e2d9b3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 374774cc178e325df2e4e338b710652ff1ee1e9bb18fb00a51039e0c39bc1593
MD5 486a09a4d02ef6d4ca1c86217ddd64f0
BLAKE2b-256 c4d1bef1cf034fc5d94eefffdac86150c10383bf22894e6aff08a00b06ba4ece

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 65439724107c2d5fe47d904cf1e1315881e9daca30c9a167943ecac7d6486e8e
MD5 5d3bc38273c3df968b373f1406910339
BLAKE2b-256 4bc246649fc876d6adf7a2cddd172674ac81c5670d9b8698db519d3465ad2584

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 19e61248407671ca74f21eb8c973c2cae105e8385c8df9ad53cac56c999c2ba3
MD5 fa37fdc93bc43fb85a2f992a9cecf663
BLAKE2b-256 165757b75d4dd6577c260fc7a1c38ac5c57b0f4e47fda9f19c674475dd1a2a9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8da32357d04fc6b9864d531acb3a6a30c4911b7bc5b932be3754fe7a4973b5d5
MD5 8ad773737c3e0b120931d781ac98669e
BLAKE2b-256 5d14cc79e94d64eb4513eb61c987c76a728199dc0ab25ebc357166fbd5117c2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 951d205391f347b021c2d40b7cb529665b641a96314ddc10ca1c99e4d1af8426
MD5 61aba1b566acd4d7d8b287794ee680ce
BLAKE2b-256 75f9d1b6234ebd7301d2534c98f6621d6dc762776a839292363cb278ffa2169f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 ae2294b95105291a3d521aee6c549cb9bb71d053141bb2780872ce65b259fe19
MD5 ee439a932d7e45593192c3fff03929c8
BLAKE2b-256 bf12136d82560a199cabcdddc502c9bf8e20ecae0040c660c201a8a3227219b7

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.3-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.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6a9eeea3829b60c563da826a8c928f79aa7091f9a7f64cabff3a0b3a17895258
MD5 d51e456932e548f63da09641cde4109a
BLAKE2b-256 93a16b0f8ff409692050aaae1f677a346c903a5605a097e802bd1234784b9fcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.3-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 e9009c3d9719bf66f0d6ca796c307c182d3ec9c1fbeec493f46109fe4e9274de
MD5 0eb24dba3466fd3a3c86c2a942a6ffe0
BLAKE2b-256 910ff15f1b74c1d89a598b90cfbd9c33965a2d9f2eaec794763515945d929886

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