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.1/aliyundrive-webdav_1.10.1-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.1/luci-app-aliyundrive-webdav_1.10.1_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.1/luci-i18n-aliyundrive-webdav-zh-cn_1.10.1-1_all.ipk
opkg install aliyundrive-webdav_1.10.1-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.10.1_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.10.1-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 时推荐使用 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.1
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.1-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

aliyundrive_webdav-1.10.1-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.1-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.1-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.1-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.1-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.1-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 ed63a5a8fa81342a533f3d18940d3dedac5466b045702aa57a1bf6019bd1ebbc
MD5 d827421a17f497c4cab6a9b33a0c626d
BLAKE2b-256 e7960a7951a305a6820242e2dfde7d8e176222eb77ddeec23810936046fa22bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1d2047e1d9411b55fb77ab9f2947d6a18c1f5271458caa47c38a4191a59bdb71
MD5 d15e70896046c5f29fbfd1b5dbf7b656
BLAKE2b-256 520d9c3e307aa465af4153b335411e421f044c77fc8433b24be6841fbd43a3b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 b8f691518340c5d1d86c5bacc33744631a66b0a3d55238ae93e911ab612da23f
MD5 ac70d4cbdda9869bb1339fe7b982b2d9
BLAKE2b-256 199560dd58dfe6e25d5c0593a52a7f398f8ba8bf33d88ec46ed4e523d08976c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c0ee32195f9a8f23d607d8dfc22f70374fa99cd64796288392affd1728676423
MD5 1374e5eda1468816c1e1f947869d65eb
BLAKE2b-256 fc7711677cf4f38a8db2543af380686f71b88dfe0bb15ee15cb44278ec6e0712

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 e12f38b4628f154dff25336a7683c85d2637dc3fc89c66951b9ff54353f0ed59
MD5 f8c06392cc213d34e33be75d09c12fde
BLAKE2b-256 48fb185483ca13ed2aac82aafd41a83c842296b1e28d70946617cf5a0f3bdbdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 23f55e3091da6046d2c35a4efe4d545452b4e7abbcf7c8be921aa35c21e867d0
MD5 4316cb8bc2cc46162366e820b4d75405
BLAKE2b-256 51062d9935ebfc810f741e873e15b1cdd18230af71e32cd262ab1826af230711

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ee6fcc9851a5dc77051da36415b75e303fc0eab95163b9e15f0e83e9619a8e9b
MD5 95d3f61f5b080298a119763106bc25a8
BLAKE2b-256 cc8c28158d1502da7dab9b2319cc2f198a8c2017a5df918b3e8483a77cda1726

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 73d79259bfb479cacb685d845801de76c889eacd64033781f0095c74b78c13bf
MD5 ce332ada29979806cbb3f8c4cdf2a743
BLAKE2b-256 2ea23ea8dffa2fd3aa84cc7096a3c22d977058b09fcd0294bd32f9f7ee666926

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d121ff8a2352825b5d911a9883ddde2568838f847b0741da15377fcba218bf5b
MD5 4772b2715ebdf23e5685736428744d94
BLAKE2b-256 f85c0cd1233baf94c809815884384da2a97c17ab4b1698e990fe0aaec544e26f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8fc79fcb0f28027cda29497bc7ad990f90a26ab8a459ff00f197511d52e686a8
MD5 8f9d99537806ce55d90ad2f9a981fc31
BLAKE2b-256 35b19212f5c0e3404e5fd7102be49ca31fea5e7274ead46019fda2681775888c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 eaeab18ad901a5d309da0c153d55c48400825cbeba3b94ff2531707264e8ad3f
MD5 a2bc306aa7d0ea79b1e7801dfe5c2759
BLAKE2b-256 ebcac56e78cfc92b6a39d900e9dceca55140501c54d8eff575407dabf00b73fb

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.1-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.1-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0ae46d8d95982bc9d2f36544f193531bd565496dfcea7f71d6df32e47500a436
MD5 238aa7509ae6eab0df00dc96d9ad35ac
BLAKE2b-256 f3d2f7b49c3ac5b823792203e917ee64d8cd0663ef90016faddaa4689b5fb031

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.1-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 0275d79998da6c54375a072f8ca1b4601628f75c80de0911db391a6ca5ee693f
MD5 e6112a0a3d66933cbe6a62c8e8b911e2
BLAKE2b-256 aed43293f245cf4f62824c164e93c9998179d5957380d690bb1ceb296380dac1

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