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

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.5-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.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-1.10.5-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.5-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.5-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.5-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.5-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 759b336ddc36a5f3ca4328f1fd987a2d25a18b244f6af5e818c6e0c845565185
MD5 9f9bcddcdf1f4e6c7b98357798267192
BLAKE2b-256 54b883ce7b07beb150f557e7d67d57409289b14556465c94960a7c1aad685f83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-win32.whl
Algorithm Hash digest
SHA256 41556ca762291b71ccdb95b621575cfee4de874418aca3e9e02f8f29e02f14af
MD5 d5e4f486da107162c81afb82bc76b768
BLAKE2b-256 94f803ab72b3780d3a8c250c113d6cf3bac5167a2684fb34b6927b4a7e98deca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8ba708f0b22cdc7e968e6faac76a995b8732528d6e4163d0b7ad2cad84b7cac6
MD5 6bb6966b39e7f47bd1730b2d0f7ecdd0
BLAKE2b-256 62ce2e1c17e6555416ae4d0fd534479d8cbea3cf95bdd93fb27489f2b09755f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 8fcdc4ff0356eb8d07c14c449d42c5d6b19ad6b14d7d4fddde8ea399fd248b26
MD5 97ca5225317c2c2ec638bc1d2a04b8fa
BLAKE2b-256 b43ee44183ce11ae650b3a99cb858cc731c28c1e9fc54e0e1d004073190e2516

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 fda61c2b819e92b53bffe55b5a4bafb387a25675ca1fa324e5f9b5b95b656aa6
MD5 09cb83b39953c2703b160f5023dbbfcc
BLAKE2b-256 2e770368bcc2aa67ea5c66ddaed07ea62fecbd2162dc864847a47bfb18f878f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f48b95697a00a1b6fbc5e8c4d8a8d4da67bd448461369ea4d9b210391a43a061
MD5 d1d3fe133b198645b9ed2d77b5514814
BLAKE2b-256 0c4b81e048852c6c854c0806e316b93cb42c6c711c7501bf5dfef2bee49d2366

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 52bfc2d331b2fb26f58fdffce3f230c4f33064f5efe9e5941da795ef76c32b58
MD5 f76258885ba6f5fc29d0bdb21ebc9fc1
BLAKE2b-256 c75201850352ef71d40661ef4826a63dda6fe4c737f1d51ac7c6b323d63ee2fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 36ea4e49893bca897ae27b4f148b0047bcc500cd65fecb64dbf7b0358ec39cbc
MD5 8525ff8acb3874b50e56e0c7bf4bcdb4
BLAKE2b-256 b14194e632815f694897a83c471ce039a0d5f633d9b054ca4714623a33f981ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3c6c1f038643ae89a4d78bc324913d9d4ecb382c9daa97280ae5a893660f1f3a
MD5 5bdfbedacf0a9c32416c9ae7bdaba97a
BLAKE2b-256 2b22dd835622a8e1d8d0e47d31b8b77dc0e5c7aee1a3bc140e9e42a844126e8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a0bb823da3cc35e4ae087e6a5ef96d267d6c5110535aedbcbe7862b52b1629a2
MD5 95e5fa64e1fbe6a3278743e5e7b15c41
BLAKE2b-256 a70de159aff9c422c699abbdd614a4a07d746f02ca1233a66340b31eae854623

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.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-1.10.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e69a3dd678d1c5a8e2b0fbdaf9acde324d609aa98c21c68371da3d3e7c740a8e
MD5 7dba4e5b0ba05cc55e634b5eeb31fdea
BLAKE2b-256 00ffc1c619db22ea49b02f02d0278c502b6254f72d9005fb376c7f2df55f4a05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.5-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 b051feeae4dc75ee28c6061e03e567a4b0616728e8374ddf104f851e2e0b14d8
MD5 aa73547c58de628474c5d20a203d2504
BLAKE2b-256 8a74e55fa858d1fb8b9848b0cd2fcdc9551e314c9fc19d6bcbb78e877b5237de

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