NAS上部署AList:统一管理阿里云盘、百度网盘与夸克网盘的完整指南
如果你跟我一样手上有三四个网盘账号而且每个里面都躺着不少东西那你大概能体会那种痛苦想找一个文件先得回忆它当初存在哪个网盘里然后打开对应的客户端输入密码、收验证码有时候还要临时续个会员才能把文件下载下来。尤其是我这台 NAS本来只是用来备份照片、存点电影的后来觉得既然机器 24 小时开着为什么不把阿里云盘、百度网盘、夸克网盘都挂到同一个页面里统一检索、统一下载甚至通过 WebDAV 当本地磁盘用。于是就有了这次折腾在 NAS 上部署 AList并把三个网盘全部接入进去。这篇文章就把我这次的完整过程、选型思路、踩过的坑和调试经验全部整理出来给想干同样事情的朋友一个可以直接参照的“作业”。1. 项目整体设计与核心思路1.1 为什么是 AList一个服务聚合所有盘AList 是一个开源项目简单说它就是一个“网盘聚合门户”。它本身不存数据而是把各种不同的存储后端阿里云盘、百度网盘、夸克网盘、WebDAV、S3、本地目录等等统一接到同一个 Web 页面下你能在一个界面里看到所有网盘的文件登录一次管理全部搜索、复制、移动、重命名这些基本操作都可以跨盘做。它最厉害的是支持 WebDAV 协议。这意味着只要某个应用支持 WebDAV比如很多播放器、文件管理器、同步工具就能直接把你挂在 AList 下面的所有网盘当成一个网络文件夹来访问。也就是说百度网盘里的电影可以直接用播放器打开不需要先下载到本地阿里云盘上的照片也可以直接让相册工具扫描、备份。技术层面AList 的前端是个单页应用后端负责“翻译”不同网盘的 API把差异巨大的各家接口统一成一套内部模型。你添加一个存储驱动本质上就是告诉 AList “这个网盘账号用什么方式连接、访问哪个目录、缓存策略是什么”。它默认用 SQLite 保存配置所有挂载信息都集中在 data 目录下备份非常方便。折腾过的人应该能感觉到这个项目把“多网盘统一管理”这个需求做到了极致的轻量而且对新手很友好不需要懂多少代码就能上手。1.2 为什么跑在 NAS 上24小时在线的合适宿主既然 AList 是服务就得有一个一直开着的设备来跑。我对比过几种方案云服务器、软路由、个人电脑、NAS。云服务器的问题在于流量费和带宽。网盘内容的代理下载都要经过这台服务器如果带宽只有几 Mbps下载体验会非常难受还要担心流量超额。个人电脑则不可能一直开机晚上一关服务就断了。软路由可以但很多软路由的 CPU 和内存都比较紧张跑 Docker 没问题但留给 AList 的资源不多后续想加其他容器就会局促。NAS 天生适合干这件事。首先它 24 小时在线功耗低大多还是 x86 架构跑 Docker 毫无压力其次 NAS 本来就有大容量存储AList 的缓存文件、离线下载的临时文件、转存过程的中间数据都可以放在本机不消耗额外空间最重要的一点是NAS 通常已经做好了端口映射、反代、HTTPS 证书、定时备份这一整套基础服务AList 部署上去之后可以直接复用现成的网络环境和安全体系。如果你暂时没有 NAS用一台常开的小主机或者旧笔记本也一样能跑。思路完全相同只是宿主机不一样。1.3 安装方式怎么选Docker Compose 是最省心的路径AList 的官方提供两种主流部署方式直接下载二进制文件运行和 Docker 容器运行。我推荐 Docker Compose理由很现实一是环境隔离。AList 依赖的运行时环境都打包进了镜像不会污染宿主机也不会和其他容器冲突。二是升级方便换镜像重启容器就完成升级出问题还能快速回滚到旧版本。三是数据管理清晰配置文件、数据库都在一个映射目录里备份和迁移只需处理这一个目录。如果你是群晖、威联通这类带 Docker 套件的 NAS图形界面点几下就能部署。但如果要把参数说清楚、方便以后复现我更建议直接用 Docker Compose 文件就算以后换机器一条命令就能把整个服务拉起来。1.4 三种网盘接入方式的底层差异API、开放平台和 Cookie开始挂载之前一定要先搞清楚一个底层事实不同的网盘对外开放的能力完全不一样AList 不得不采用三种不同的接入策略。阿里云盘走的是官方开放平台接口有正规的 OAuth 授权流程申请 App ID 和 App Secret然后通过授权码换取访问令牌和刷新令牌。这种方式权限边界清晰稳定性好也是我最推荐的方式。百度网盘同样有开放平台但它的个人开发者接口权限相对有限。你需要注册一个开发者应用拿到 API Key 和 Secret Key再走一次授权。好在基本流程与阿里类似都是“创建应用 → 填 Key → 网页授权 → 拿令牌”。夸克网盘的情况就不一样了目前它没有公开的个人开发者 APIAList 只能通过“Cookie UA”的方式模拟浏览器登录。也就是说你要把自己账号登录后的 Cookie 复制出来填进 AList 的配置里让 AList 用这个身份去请求接口。这种方式最脆弱因为 Cookie 有有效期失效就得重新复制而且频繁请求也可能触发账号保护机制。理解这三种差异后面不管遇到什么问题你都知道往哪个方向排查。2. 基础部署从零到能打开 AList 页面2.1 部署前的准备清单动手之前先确认几件事准备好了能省不少来回折腾的时间。第一NAS 上要有 Docker 环境。群晖在套件中心装 Container Manager 或者 Docker 套件即可其他 NAS 系统基本也都有对应的应用中心。第二确认你要用哪个端口。AList 默认监听 5244这个端口在很多 NAS 上没有冲突但如果你的某个套件已经占用记得换一个比如 5245。第三想好一个强密码后面设置管理员要用。第四给 AList 建一个独立的配置目录比如在 NAS 的 Docker 目录下新建 alist 文件夹以后所有配置都放这里面备份时只需要把整个目录拷走。提示AList 的配置目录里包含 SQLite 数据库文件里面存了所有网盘挂载信息。不要用网盘客户端直接同步这个目录容易造成数据库损坏。备份时直接复制目录即可。2.2 拉取镜像与 Docker Compose 配置在 NAS 的 SSH 终端里先进入你创建的目录然后把下面这段 Compose 配置保存成docker-compose.ymlservices: alist: image: xhofe/alist:latest container_name: alist restart: unless-stopped ports: - 5244:5244 volumes: - ./config:/opt/alist/data environment: - TZAsia/Shanghai然后执行docker compose up -d这里解释几个关键参数。端口映射格式是宿主机端口:容器端口左侧的 5244 是你从外界访问时用的端口右侧是 AList 容器内部的监听端口一般不用改。卷映射./config:/opt/alist/data把宿主机的 config 目录挂进容器AList 的数据库和配置文件都会写在这里这是整个部署最核心的一行配置。restart: unless-stopped表示容器异常退出或被系统重启后会自动拉起这也是 NAS 服务的基本要求。如果你的 NAS 没有 SSH也可以用 Docker 图形界面创建容器把端口和卷映射填进去效果一样。2.3 首次启动管理员密码从哪里来容器启动后在浏览器打开http://NAS的IP:5244应该能看到 AList 的登录页面。第一次启动时AList 会自动生成一个随机管理员密码很多新手卡在这一步不知道密码是什么。在 SSH 终端输入以下命令查看docker exec -it alist ./alist admin random执行后屏幕上会打印出当前管理员账号的随机密码拿到后先用这个密码登录后台。我更推荐马上改成自己设置的强密码命令也很简单docker exec -it alist ./alist admin set 你的新密码设置完成后重新登录后台左侧就是 AList 的管理面板。所有网盘挂载、缓存配置、用户权限都在这里操作后面每一步都是在管理面板里完成的。2.4 数据持久化为什么一定要做好目录映射有些人部署时图省事没有映射卷目录容器一删所有挂载配置和网盘授权信息全没了这是非常典型的一个翻车点。AList 的配置、SQLite 数据库、日志、缓存全部都在容器内部的/opt/alist/data目录下如果不映射出来容器生命周期结束数据就跟着一起没了。所以卷映射是部署 AList 时必须做的一件事。做好了之后你可以随时把 config 目录整个打包换到另一台 NAS 上重新启动容器后所有配置都在甚至连网盘的登录状态都能恢复。另外如果你在群晖这类 NAS 上用 Docker 图形界面创建容器映射目录时要注意目录权限。新版本的 AList 镜像不一定以 root 运行如果发现 config 目录里没有生成文件多半是权限问题。解决办法很简单要么把目录权限放开要么在环境变量里指定 PUID/PGID具体以镜像页面的说明为准。我自己的习惯是直接给这个目录开可读写权限内部跑着玩不用太较真最小权限。3. 实战挂载阿里云盘、百度网盘、夸克网盘全流程3.1 阿里云盘开放平台授权优先方式阿里云盘是三个网盘里体验最好的因为它的开放平台接口完善AList 也专门提供了“阿里云盘开放平台”这个驱动类型。第一步去阿里云盘开放平台的控制台创建一个应用。填应用名称、描述这些基本信息后平台会给你一对 App ID也就是 Client ID和 App Secret。第二步回到 AList 管理面板进入“存储”页面点击“添加”驱动类型选择“阿里云盘开放平台”。第三步把刚申请的 App ID 和 App Secret 填进对应输入框然后点击“登录”或者“获取Token”。这时候 AList 会生成一个授权链接你用自己的账号打开链接并确认授权授权成功后Token 会自动回填到配置里。你还需要选择挂载方式一般选“阿里云盘资源盘”作为根目录这样能看到你账号下正常的文件列表。如果你有多个阿里云盘账号可以重复这个过程添加多个存储路径分别设置成不同的虚拟路径即可。注意不要再用旧的“阿里云盘”驱动那个驱动是通过特殊设备 Token 模拟登录的稳定性差而且部分功能会被限制。开放平台方式虽然要先申请一对 Key但一次到位后面很少需要维护。3.2 百度网盘开发者应用加授权回调百度网盘的挂载思路和阿里云盘类似也是通过开放平台授权。实际操作时去百度开放平台的开发者中心创建一个“个人开发者应用”创建成功后你会得到 API Key 和 Secret Key。回到 AList 管理面板添加存储驱动选“百度网盘”。填好 Key 和 Secret 后你会在页面上看到一个回调地址一般形如http://localhost:5244/baidu/callback。这个地址要在百度开放平台的应用设置里填写确保授权时能跳回 AList。接着点击 AList 配置页里的“登录”按钮会弹出百度的授权页面确认授权后浏览器会跳转到一个回调链接。AList 会把这个地址里的授权码抓取过来换成正式的 access token 和 refresh token然后存储配置里就能看到文件树了。百度网盘开放平台的一些限制要提前有心理准备。个人开发者对应的 API 权限比较一般尤其是上传大文件时走 API 会比较吃力下载也有一定频率限制。单文件大于 4GB 的资源直传经常失败这是平台的限制AList 也没办法。如果只是日常管理和下载中小文件完全够用。3.3 夸克网盘Cookie 加 UA 手动接入夸克网盘是目前接入最“原始”的一个因为官方没有开放个人开发者 API。你需要把浏览器的登录态直接交给 AList。具体操作是在电脑上打开夸克网盘的网页版登录你的账号。然后按 F12 打开开发者工具切到“网络”(Network) 面板刷新一下页面随便点开一个请求在“请求头”里找到Cookie那一项把它完整复制出来。回到 AList 添加存储驱动选“夸克网盘”把 Cookie 粘贴到对应输入框。有些版本还需要填写 UAUser-Agent如果你复制 Cookie 时顺便把请求头里的 User-Agent 也复制下来一起填进去这样最稳妥。点击保存后AList 就能列出夸克网盘的目录了。这里有几个需要注意的点。Cookie 很长粘贴时容易漏掉中段或者复制到一半建议多核对几次。如果你发现保存后目录报错 403 或者 401大概率就是 Cookie 不完整、已过期或者还缺 UA 没填。夸克网盘的 Cookie 有效期飘忽不定短则几天长了可能几周失效后存储配置里的文件列表会直接拉取失败重新复制一次新 Cookie 更新即可。提示Cookie 相当于你账号的临时钥匙千万不要把请求头里的 Cookie 公开分享出去也不要截图发到任何聊天群或者社交平台。这些信息能直接操作你的网盘文件。3.4 虚拟路径规划目录结构从一开始就别乱添加存储时有一个“挂载路径”输入框这个就是你在 AList 主页上看到的路径。我强烈建议第一次部署时就定好一套清晰的目录命名规则免得后期网盘多了之后主页上一团乱麻。我的规划是这样的/aliyun 阿里云盘主目录 /aliyun/backup 阿里云盘备份盘 /baidu 百度网盘根目录 /quark 夸克网盘根目录 /downloads 本地下载目录每个存储后端都分配一个独立的顶层路径不要把两个不同账号的同一个网盘路径设置成/根目录那样文件会混到一起根本无法区分。路径要么用英文小写要么用短横线分隔别用中文空格和特殊符号后续用 WebDAV 访问时可以省掉 URL 编码的很多烦恼。另外如果你在夸克网盘里只想暴露某一个文件夹而不是整个网盘根目录可以在存储配置中找到“根目录文件 ID”之类的选项填入该文件夹页面 URL 里的 IDAList 就会以这个文件夹作为访问根目录。这在高权限账号下尤其好用可以在管理面板里给不同用户分配不同目录的只读权限避免家里其他人打开 AList 就能看到你全部文件。4. 用起来之后WebDAV 接入、性能调优和安全性4.1 把网盘变成本地磁盘WebDAV 的玩法AList 挂好网盘之后最常被问到的一个问题是就为了打开一个网页看文件吗当然不是。AList 内置了 WebDAV 服务地址一般是http://NAS的IP:5244/dav账号密码和你登录 AList 用的完全一样。在 Windows 上“此电脑”右键选择“映射网络驱动器”填上这个 WebDAV 地址输入 AList 账号密码就能把整个 AList 文件树变成一个盘符。之后你在资源管理器里复制文件进这个盘实际上就是往对应的网盘上传拖一个文件出来就是从网盘下载。很多播放器也支持 WebDAV 协议可以直接把 AList 地址作为媒体库源浏览网盘里的电影直接播放。不过 WebDAV 适合中小文件传输大文件时经常受到协议本身和客户端实现的限制速度不稳定、中途断传的情况我都遇到过。所以大文件操作我一般还是用 AList 的 Web 界面或者直接用网盘官方客户端中转WebDAV 主要用来日常访问和同步。4.2 缓解 API 限速的几个设置网盘开放平台都有频率限制AList 默认配置在目录非常大的网盘上可能因为反复扫描目录而触发 API 429 限流。缓解这个问题主要靠缓存。在 AList 管理面板的“设置 → 全局设置”里可以调整目录缓存过期时间。我建议把默认的缓存时间从几分钟调到一个小时以上让 AList 不再每次打开目录都去请求网盘接口。针对单个存储也可以在存储配置里找到“缓存过期”参数单独设置这个网盘的缓存策略。另一个实用选项是“只加载一层”开启后目录树每次只加载当前层级的文件和子目录不会递归加载所有层级。配合缓存机制打开大目录时的等待时间能缩短很多也减少了对网盘 API 的无效请求。实际用下来这几项配置对体验的提升非常明显尤其是夸克网盘这种 Cookie 登录的账号少刷几次接口就是帮自己省掉账号被标记的风险。4.3 让 AList 更安全密码、反代和访问控制如果你只是在家里局域网访问设置一个复杂的管理员密码就足够了。但如果你打算在外网访问比如出差时想用手机看网盘文件那就一定要做好安全配置。首选方案是用反向代理加 HTTPS。把https://你的域名/alist/反代到http://NAS的IP:5244/然后挂上证书。这样和 AList 之间的通信全程加密Cookie 不会被暴露。千万别直接把 NAS 的 5244 端口裸奔到公网登录密码和 Cookie 明文传输的风险非常大。另外进 AList 管理面板检查一下“设置 → 站点”里面“允许注册”是否关闭。这个默认应该是关闭的但升级版本后最好再确认一次绝对不要让陌生人能注册新用户。给家里其他人使用时也不需要开放管理员权限单独建一个普通用户把存储目录分配给他再勾选“只读”权限就够了。网盘文件只允许查看和下载不允许修改和删除能少很多家庭误删文件的风险。5. 常见问题与排查技巧实录5.1 入手时最容易出的几个错我第一次部署时遇到的最蠢问题是端口冲突。NAS 上已有的服务占用了 5244容器起不来但 Docker 日志里只显示“端口分配失败”也不告诉你谁占用了。排查方法很简单SSH 里执行netstat -tuln | grep 5244看是哪个进程占用了端口换一个新的映射端口就好。第二个高频问题是容器起来了但连不上后台。这时候先别急着删容器重装用docker logs alist看一下日志。如果是首次启动日志里会打印随机密码和监听地址看到这些基本就说明服务正常问题多半出在浏览器缓存或 NAS 防火墙。第三个问题是很多人喜欢在图形界面里乱点把存储路径写成/根路径结果多个网盘文件全部混在一个页面里根本分不清哪个文件在哪个盘。这个问题不是故障但会把人折磨疯。根路径尽量保持唯一性不同盘用不同顶层目录。5.2 Token 失效与授权过期怎么处理阿里云盘和百度网盘的挂载状态都属于“令牌机制”一旦 refresh token 过期或者被账号密码修改重置表现就是目录能添加但打开后一直报 500/401 错误列表拉不出来。阿里云盘的处理方式是进入对应存储配置把 Token 相关字段清空重新点击“登录”按钮走一遍授权流程完成后保存即可。百度网盘同理重新回调一次授权。这里有个小技巧授权完成后在 AList 的存储列表里找到这个存储点击刷新目录如果还是空就再检查一遍是不是旧 Token 被缓存在了浏览器里清理一下浏览器缓存再试。5.3 夸克网盘报 403 或者 401夸克网盘挂载失败九成以上是 Cookie 的问题。403 通常意味着 Cookie 里的部分签名已经失效401 则是完全没有登录状态。重新去网页版复制一次最新 Cookie更新到存储配置里。如果 Cookie 明明刚复制却还是报错检查你有没有填 UA。AList 的夸克驱动在部分网络环境下如果 UA 缺失接口会直接拒绝。把复制 Cookie 时同一个请求头里的 User-Agent 也填进去基本能解决。另外换用不同网络运营商比如手机热点 vs 家庭宽带访问夸克网页版时Cookie 中可能包含网络环境的绑定信息尽量在同一个网络环境下完成复制的操作。5.4 上传大文件失败通过 AList 上传大文件失败多数不是 AList 本身的问题而是前端反向代理默认限制了上传体积。如果你把 AList 放在了 Nginx 反代后面默认上传限制通常只有 1MB 到 2MB超过就直接报 413。调整需要在 Nginx 配置里加上client_max_body_size 2048m;如果你用的是 NAS 自带的反代组件也要在对应的虚拟主机高级设置里加上这个参数。另外部分网盘驱动本身对分片大小有限制AList 在存储配置中提供了分片大小和并发数设置遇到上传失败时你可以尝试把分片调小一点比如从 10MB 改成 5MB再重新上传成功率会高很多。5.5 目录加载慢、一直转圈目录一打开就转圈大部分原因是网盘 API 响应慢或者目录里文件实在太多一次性加载完确实费力。按照 4.2 节的方法把缓存过期时间调大同时开启“只加载一层”体验会好很多。如果某个目录第一次打开特别慢那是正常的因为 AList 需要扫描并建立索引之后因为有缓存再打开就是秒开。极少数情况下目录索引会出现损坏表现为目录能打开但内容不全这时候在存储配置里点击“清除缓存”等它重新扫描一遍一般就能恢复。5.6 问题速查表问题表现可能原因排查方向容器启动失败端口被占用、镜像拉取失败查看docker logs alist换端口或检查网络首次登录不知道密码随机密码未查看docker exec -it alist ./alist admin random阿里云盘目录报错refresh token 过期重新走开放平台授权流程百度网盘列表为空授权未完成或 token 失效重新回调授权清理浏览器缓存夸克网盘 403/401Cookie 过期、UA 缺失重新复制 Cookie补填 UA上传文件报 413反代未调整上传大小加client_max_body_size目录打开很慢API 限流、目录过大调大缓存过期时间开启“只加载一层”文件列表显示不全本地索引损坏清除该存储的缓存重新扫描6. 借助 AList 还能做什么6.1 给播放器和相册工具提供网盘空间WebDAV 最大的好处是让各种现有应用直接复用你的网盘空间而不用为每个网盘单独适配。比如很多电视端的媒体播放器支持添加 WebDAV 源你可以把 AList 地址填进去电视上直接浏览和播放网盘里的高清电影画质不受限制也不用在电脑上下载再投屏。相册工具也同理把 AList 的 WebDAV 作为备份位置手机照片自动同步到网盘数据多一份冗余。6.2 离线下载到网盘AList 支持对接离线下载工具你可以把网络上的下载任务直接提交给 NAS让它先下载到本地再转存到网盘里。这样白天上班时把任务挂上回家时文件已经躺在网盘指定目录了。尤其是在夸克网盘这类有高速下载通道的网盘上体验很好。离线下载工具本身需要单独部署但 AList 管理面板中预留了对接配置按文档填一下下载工具的地址和密钥就可以。6.3 定期备份本地数据到网盘如果你有本地目录需要定时同步到网盘可以结合定时任务和 rclone 这类命令行同步工具。rclone 支持 WebDAV 协议可以把 AList 的 WebDAV 地址当作一个同步端点cron 定时执行同步命令把 NAS 上的重要目录增量推到网盘。我自己的数据库备份就是每天晚上自动同步到阿里云盘出过一次硬盘故障后这套方案帮我保住了大半数据成本几乎为零。提醒任何网盘都有被封禁或者数据被清理的风险网盘只适合做备份的“其中一份”不要把网盘当成唯一存储介质。重要数据至少保留本地一份和网盘一份。这篇折腾笔记写下来我自己的最大感受有三点。第一容器化的好处远超想象Docker Compose 一条命令部署、一个目录备份换机器迁移几乎没有成本虽然最初多花了半小时学习配置但后面省下的时间非常可观。第二网盘接入本质上就是 API 对接“令牌”“授权码”“Cookie”这些概念一定要搞清楚不要照着教程填完就完事否则出问题时完全摸不着头脑。第三夸克网盘的 Cookie 维护是常态有效期不确定建议把“获取 Cookie”的步骤记在备忘录里失效时照着操作五分钟搞定别慌。如果你也有一台 NAS、若干个网盘账号直接把 AList 部署上去按文中的方法挂载三个盘基本就能体会到“所有文件都在一个页面”的爽感。后续想扩展自动备份、离线下载或者远程安全访问都可以在这个基础上慢慢加。折腾本身就是玩 NAS 的乐趣希望这篇笔记能帮你少踩几个坑。