实现思路:Alist+阿里云/123网盘/豆包云盘等+免费域名+claoudflare Tunnel,
我用WebDAV主要是用来在Reeden中同步我的电子书和阅读进度,这个使用场景负担不是很大,目前用下来阿里云盘感觉最稳,但下载会比较慢一些,123网盘经常有失败的情况,豆包云盘上传下载都很快,就是我就有几个漫画是300M的,可能我一次传太多被风控了,剩下几本漫画传不上去,听说连续7天或者连续14天老实使用,小频率传一些图片、文档之类的,可能解除风控,待我试试再来反馈。另外就是claoudflare免费计划限制上传小于100M,所以如果有大于100M的文件可以在配置这个的电脑上用本地端口传输。
以下记录一下我的实现流程:
第一步:Alist
GitHub - AlistGo/alist: 🗂️A file list/WebDAV program that supports...
🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。
1. 下载并解压
进入 AList GitHub Releases,Windows 下载:
alist-windows-amd64.zip
我直接把解压后的文件夹放在了D盘
2. 启动
解压后目录中应该有 alist.exe ,打开 PowerShell:
cd D:\alist
.\alist.exe server
看到类似内容说明启动成功:
Successfully created the admin user and the initial password is: ********
start HTTP server @ 0.0.0.0:5244
initial password 后面的内容就是初始管理员密码。
访问:
http://127.0.0.1:5244
默认用户名:
admin
密码:使用第一次启动日志中的初始密码。
3. 修改密码
如果后续要像我一样发布到公网上,最好在个人资料中修改用户名和密码。
第二步:挂载云盘
一个小的对比,主要注意123云盘有下载量限制,用完之后无法下载,只能等到下个月,豆包云盘可能触发风控,导致单个文件不能超过100M。
阿里云盘
123 云盘
豆包云盘
永久免费容量
100GB
2TB
10GB(老号保留 5TB+) 存疑,因为在界面上看不见总容量多少
上传速度
无强制限速,跑满带宽
客户端满带宽不限速
无人工限速,随宽带
下载速度
闲时满速,晚间高峰动态限流;第三方工具严格限速
客户端不限速,网页端小幅节流
全程不限速,无带宽管控
单文件上限
10GB
100GB
100MB(2GB?)
下载流量额度
无 GB 总量限制,仅带宽节流
每月免费下载流量 10GB;PC 客户端流量减半抵扣,用完后无法下载
无下载流量限制
每日转存次数
每日 50 次
无转存次数限制
无跨盘转存功能
单次批量上传
无明确数量上限
单次最多 1000 个文件
单次最多 200 个文件
在线视频
最高 720P
无清晰度限制
仅支持图片文档预览,不支持视频
云解压
免费不可用
支持小型压缩包解压
完全不支持解压
文件分享
长期有效链接,无门槛
100MB 内免登下载,大文件必须登录
普通外链,无提取码
回收站时效
10 天
30 天
好像没有?
关于豆包云盘的单文件上限的说法(这一部分由AI总结,所以用截图):
所以如果用豆包云盘短时间内传输大量文件或超大文件,容易触发风控,导致单个文件大小限制为100M,但是我的使用场景是同步我的电子书,一般没有那么大的文件,所以使用起来还可以
下面就来挂载网盘
阿里云盘
进入 AList 管理后台:管理 → 存储 → 添加
选择驱动:阿里云盘 Open
推荐配置:
显示文件夹名称:/阿里云盘
序号:0
缓存过期时间:30
Web 代理:关闭
WebDAV 策略:本机代理
下载代理 URL:空
Down proxy sign:保持默认
禁用索引:关闭
启用签名:关闭
云盘类型:资源库
根文件夹 ID:root
OAuth 令牌链接:<https://api.alistgo.com/alist/ali_open/token>
客户端 ID:空
客户端密钥:空
移除方式:回收站
秒传:关闭
内部上传:关闭
获取刷新令牌
打开阿里云盘 Open 授权工具:授权工具
扫码登录阿里云盘后复制生成的 refresh_token,粘贴到 AList 的「刷新令牌」字段。
123云盘
进入 AList 管理后台:管理 → 存储 → 添加
选择驱动:123云盘
推荐配置:
显示文件夹名称:/123云盘
序号:30
备注:可空
缓存过期时间:30
Web 代理:开启
WebDAV 策略:本机代理
下载代理 URL:空
Down proxy sign:开启
排序:名称
排序方式:升序
提取文件夹:不选
禁用索引:关闭
启用签名:关闭
用户名:123 云盘登录手机号
密码:123 云盘登录密码
安全密码:不用保险箱就留空
根文件夹 ID:0
常见报错:
当前账号存在安全风险,请使用短信验证码或者微信进行登录。
处理方法:
1. 在同一台电脑浏览器打开 <https://www.123pan.com/>
2. 登录同一个 123 云盘账号。
3. 完成短信 / 微信验证。
4. 再回 AList 保存。
豆包云盘
进入 AList 管理后台:管理 → 存储 → 添加
选择驱动:123云盘
推荐配置:
显示文件夹名称:/豆包云盘
序号:50
备注:可空
缓存过期时间:30
Web 代理:先关闭
WebDAV 策略:302 重定向
下载代理 URL:空
Down proxy sign:开启
排序:可先不选;不允许空则选名称 / 文件名
排序方式:可先不选;不允许空则选升序
提取文件夹:不选
禁用索引:关闭
启用签名:关闭
根文件夹 ID:先留空
Authorization:先留空
冲压 / Dpop:先留空
Cookie:填写豆包云盘网页端请求里的 Cookie
Debug:关闭
Cookie 获取方法:
1. 打开 <https://www.doubao.com> 并登录,打开云盘界面
2. 按 F12 → 网络 / Network。
3. 勾选保留日志。
4. 刷新页面。
5. 选择状态 200、类型 xhr/fetch 的接口请求。
6. 优先找 batch/?biz_id=flow_web 或 token?ms_appid=... 这类请求。
7. 标头 → 请求标头 → Cookie。
8. 复制 Cookie 右侧全部内容,不要复制 Cookie: 字段名。
9. 粘贴到 AList 的 Cookie 字段。
查看并测试 AList WebDAV
网盘挂载完成了,可以到主页查看一下(左侧标签最后一个,我还多挂了一个百度网盘)
此时,如果是本地使用,WebDAV已经可以正常使用了,测试一下
AList WebDAV 总入口:
http://127.0.0.1:5244/dav/
阿里云盘入口:(其余网盘同理)
http://127.0.0.1:5244/dav/阿里云盘/
PowerShell 测试 WebDAV 是否通
curl.exe -i -u admin:你的AList密码 -X PROPFIND -H "Depth: 1" <http://127.0.0.1:5244/dav/>
正常返回:
HTTP/1.1 207 Multi-Status
如果返回:
401 Unauthorized
说明用户名或密码错误。
如果返回 XML 中看到:
<D:displayname>阿里云盘</D:displayname>
说明 WebDAV 已经识别到阿里云盘挂载。
另一个查看的方法:RaiDrive
安装 RaiDrive 后新建驱动器:
服务类型:NAS → WebDAV
盘符:F: 或 R: 或 Z:
名称:Alist
协议:HTTP
地址:127.0.0.1
端口:5244
路径:/dav/
账户:admin 或 新AList 用户名
密码:AList 密码
匿名:不要勾选
只读:不要勾选
代理:不要勾选
启动 RaiDrive 后自动连接:勾选
完整地址等价于:
http://127.0.0.1:5244/dav/
设置完成后,可以在此电脑中看到一个新增的盘(我这里显示为“断开连接的驱动器”,但实际使用下来没什么影响),打开之后可以看到我们挂载的网盘
第三步:外部电脑连接WebDAV
如果想要在局域网以外的地方连接此WebDAV,由于我没有IPV6,所以目前走的是免费域名+Cloudflare Tunnel的方式
免费域名
DNSHE
可以选这个cc.cd后缀,经过测试是可以使用的,别的也可以试试,就是千万不要选带有.com的后缀,会被cloudflare识别为子域名
免费域名接入Cloudflare
本次最终使用:
xxx.cc.cd
在 Cloudflare 添加域名:
https://dash.cloudflare.com → Domains → Add domain / Add a site / Connect a domain
选择 Free 套餐(如果被识别成子域名了,无法进入这一步,需要重新去申请一个别的后缀的域名)。
Cloudflare 要求将域名 NS 改为:
lindsey.ns.cloudflare.com
logan.ns.cloudflare.com
回 DNSHE 或对应免费域名平台:
管理域名 -> DNS服务器(域名委派)
将原来的 NS 删除,只保留 Cloudflare 给的两个 NS。
检查 NS 是否生效:
nslookup -type=NS xxx.cc.cd
正常应返回:
xxx.cc.cd nameserver = lindsey.ns.cloudflare.com
xxx.cc.cd nameserver = logan.ns.cloudflare.com
Cloudflare 页面显示:
Your domain is now protected by Cloudflare
说明域名已成功接入 Cloudflare。
创建固定 Cloudflare Tunnel
使用本令行创建 Tunnel
1. 安装Cloudflared
在 Windows 上建立目录:
mkdir C:\cloudflared
下载 cloudflared:
Invoke-WebRequest -Uri "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.exe" -OutFile "C:\cloudflared\cloudflared.exe"
检查版本:
C:\cloudflared\cloudflared.exe --version
如果能输出版本号,说明安装成功。
2. 登录 Cloudflare
C:\cloudflared\cloudflared.exe tunnel login
浏览器会打开授权页面,选择域名:
xxx.cc.cd
授权成功后,本机会生成:
%USERPROFILE%\.cloudflared\cert.pem
3. 创建 Tunnel
C:\cloudflared\cloudflared.exe tunnel create alist
成功后,终端会输出类似内容:
Created tunnel alist with id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Tunnel credentials written to C:\Users\你的用户名\.cloudflared\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
这里的:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
就是 Tunnel ID。
该命令通常会在用户目录生成 credentials 文件:
%USERPROFILE%\.cloudflared\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
复制到固定目录:
$tid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Copy-Item "$env:USERPROFILE\.cloudflared\$tid.json" "C:\cloudflared\$tid.json"
如果创建时忘记复制,可以执行:
C:\cloudflared\cloudflared.exe tunnel list
正常会列出类似:
ID NAME CREATED CONNECTIONS
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alist 2026-xx-xx xx:xx:xx ...
其中 ID 这一列就是 Tunnel ID,NAME 这一列是 Tunnel 名称。
4. 创建 config.yml
创建:
C:\cloudflared\config.yml
内容:
tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
credentials-file: 'C:\cloudflared\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json'
ingress:
- hostname: alist.xxx.cc.cd
service: http://127.0.0.1:5244
- service: http_status:404
也可以用 PowerShell 自动写入:
@"
tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
credentials-file: 'C:\cloudflared\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json'
ingress:
- hostname: alist.xxx.cc.cd
service: http://127.0.0.1:5244
- service: http_status:404
"@ | Set-Content -Encoding utf8 C:\cloudflared\config.yml
5. 绑定 DNS
C:\cloudflared\cloudflared.exe tunnel route dns alist alist.xxx.cc.cd
成功输出:
Added CNAME alist.xxx.cc.cd which will route to this tunnel
检查 CNAME:
nslookup -type=CNAME alist.xxx.cc.cd
应指向类似:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.cfargotunnel.com
6. 启动固定 Tunnel
C:\cloudflared\cloudflared.exe tunnel --config C:\cloudflared\config.yml run alist
看到类似:
Registered tunnel connection
说明 Tunnel 连接正常。
WebDAV:
https://alist.xxx.cc.cd/dav/阿里云盘/
第四步:配置开机自启
需要至少保证两项启动:
AList server
Cloudflared Tunnel
RaiDrive 如需自动挂载,也要设置开机启动和自动连接。
1. 任务计划程序方式
以管理员 PowerShell 执行:
$alistAction = New-ScheduledTaskAction `
-Execute "D:\alist\alist.exe" `
-Argument "server" `
-WorkingDirectory "D:\alist"
$tunnelAction = New-ScheduledTaskAction `
-Execute "C:\cloudflared\cloudflared.exe" `
-Argument "tunnel --config C:\cloudflared\config.yml run alist" `
-WorkingDirectory "C:\cloudflared"
$trigger = New-ScheduledTaskTrigger -AtLogOn
$settings = New-ScheduledTaskSettingsSet `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-RestartCount 3 `
-RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask `
-TaskName "AList Server" `
-Action $alistAction `
-Trigger $trigger `
-Settings $settings `
-Description "Start AList on user logon" `
-Force
Register-ScheduledTask `
-TaskName "Cloudflared Tunnel" `
-Action $tunnelAction `
-Trigger $trigger `
-Settings $settings `
-Description "Start Cloudflare Tunnel for AList on user logon" `
-Force
如果出现:
Register-ScheduledTask: 拒绝访问。
说明 PowerShell 不是管理员权限。关闭后重新以管理员身份运行。
检查任务:
Get-ScheduledTask -TaskName "AList Server","Cloudflared Tunnel"
手动启动测试:
Start-ScheduledTask -TaskName "AList Server"
Start-ScheduledTask -TaskName "Cloudflared Tunnel"
2. RaiDrive 开机启动
RaiDrive 内部需要两个设置:
1. RaiDrive 程序随 Windows 启动
2. 当前 WebDAV 连接勾选“启动 RaiDrive 后自动连接”
如果 RaiDrive 设置中找不到开机启动,可以使用:
Win + R → shell:startup
把 RaiDrive 快捷方式放进去。
推荐启动顺序:
AList 先启动 → cloudflared 后启动 → RaiDrive 再连接(如果需要)
至此完全配置完成
补充说明:AList 近年来存在社区信任争议,本文基于 AList v3.61.0 记录。OpenList 是由社区维护的 AList 分叉项目,若更在意开源治理和长期透明性,可以关注 OpenList。