一、项目速览

入门 · 1 分钟版

如果你用过 AList,OpenList 就是它的「抗风险分叉」——在 AList 原功能基础上,解决了社区信任危机问题,并由社区长期治理。

它是什么:一个开源网盘聚合工具,把阿里云盘、百度网盘、OneDrive、S3 等十几种存储后端统一挂载到同一个 Web 界面,支持文件管理、分享、预览和 WebDAV 协议。

它解决什么问题:你手上有多个网盘账号,每次登录不同 App 找文件太烦。OpenList 让你在一个页面里同时操作所有网盘,还能生成分享链接给朋友下载。更关键的是,原 AList 项目因治理问题引发信任争议,OpenList 承诺 代码永久开源 + 社区主导治理,不会突然闭源或改协议。

谁最该用:有多网盘需求的家用 NAS 用户、自建下载站的站长、需要统一文件入口的团队。如果你只用单一网盘且没有分享需求,它对你来说可能太重了。

一句话判断:OpenList 是 AList 的「社区保险版」——功能一样,但治理更透明,适合在意长期维护的开发者。

项目贡献者一览

二、核心功能与架构

进阶 · 推荐细读

OpenList 的架构是典型的 单后端 + 多存储适配器 模式。一个 Go 二进制文件跑起来,通过插件式驱动连接不同网盘 API。

存储适配器:支持超过 30 种存储后端,包括阿里云盘(开放平台版和分享版)、百度网盘、天翼云盘、OneDrive、Google Drive、S3 兼容对象存储、WebDAV、本地文件系统等。每个适配器处理认证、限流和文件元数据映射。

文件管理:目录浏览、文件上传/下载、重命名/移动/复制、压缩/解压(需服务端支持)、搜索。所有这些操作都在 Web 管理面板里完成,不需要登录各自网盘客户端。

分享系统:生成带密码和过期时间的分享链接,访客无需注册即可下载。分享可限制下载次数和 IP 范围——这对做资源站的人很实用。

WebDAV 服务:OpenList 自身可以作为 WebDAV 服务端,让第三方工具(如 RaiDrive、PotPlayer、Kodi)直接挂载它管理的所有网盘。相当于给每个网盘都开了 WebDAV 接口。

权限体系:支持多用户、游客账户、目录权限隔离。管理员可以给不同用户分配不同的存储挂载点,适合团队场景。

作者视角补充:如果你是后端开发者,建议先看存储适配器的源码结构——每个适配器只实现 Driver 接口的几个方法,扩展新存储后端比想象中简单。这个设计值得参考。

三、动手实践

入门

环境准备

OpenList 是 Go 写的单二进制文件,部署极其简单。以下任选一种方式:

方式一:一键脚本(推荐)

curl -fsSL "https://raw.githubusercontent.com/OpenListTeam/OpenList/main/install.sh" | bash -s install

方式二:Docker 部署

docker run -d \
  --name openlist \
  -p 5244:5244 \
  -v /opt/openlist/data:/opt/openlist/data \
  --restart unless-stopped \
  ghcr.io/openlistteam/openlist:latest

方式三:直接下载二进制
Releases 页面 下载对应平台的压缩包,解压后运行:

# Linux amd64 示例
wget https://github.com/OpenListTeam/OpenList/releases/latest/download/openlist-linux-amd64.tar.gz
tar -xzf openlist-linux-amd64.tar.gz
./openlist server

启动后访问 http://你的IP:5244,首次会进入初始化页面。

最小可运行示例:挂载阿里云盘

  1. 打开浏览器进入管理面板,默认管理员账号 admin,密码在启动日志中(首次运行会打印)。
  2. 点击左侧 存储添加驱动
  3. 选择 阿里云盘 Open,填写以下关键字段:
    - 挂载路径/阿里云盘(访问时就是这个目录名)
    - 刷新令牌:需要从阿里云盘开放平台获取(扫码授权即可)
    - 根文件夹 ID:留空则挂载根目录,填具体 ID 可以只挂载某个文件夹
  4. 点击保存,右侧点击 主页,就能看到 /阿里云盘 目录了。

常见踩坑

坑 1:阿里云盘刷新令牌过期。OpenList 会在启动时自动尝试刷新,但如果服务器时间不准或网络波动,令牌可能失效。解决方案:在存储设置里重新获取并填入新令牌。

坑 2:百度网盘上传大文件失败。百度网盘 API 有单文件大小限制(普通用户 4GB,会员 20GB)。如果上传中断,检查文件是否超限,或者改用分片上传模式——OpenList 支持但默认未开启,需要在存储高级设置里调整 chunk_size

四、进阶玩法

深入 · 老手可选

配置 HTTPS + 自定义域名

OpenList 本身不处理 TLS,推荐用反向代理。以下是用 Nginx 配合 Let's Encrypt 的配置:

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # 关键:OpenList 需要正确的 Host 头
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    location / {
        proxy_pass http://127.0.0.1:5244;
        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

通过 API 批量管理文件

OpenList 暴露了一套 RESTful API,适合用脚本批量操作。例如用 Python 列出所有挂载的文件:

import requests

BASE = "http://localhost:5244"
TOKEN = "你的管理员令牌"  # 在管理面板 → 设置 → 令牌 中生成

headers = {"Authorization": TOKEN}

# 列出根目录
resp = requests.get(f"{BASE}/api/fs/list", json={
    "path": "/",
    "password": ""
}, headers=headers)

for item in resp.json()["data"]["content"]:
    print(item["name"], item["size"], item["modified"])

作者视角补充:这个 API 的限流逻辑藏在 middleware/rate_limit.go 里,默认是 100 次/分钟。如果写批量脚本被 429 了,可以调整配置文件中的 rate_limit 字段,或者加 time.sleep(0.6) 控制频率。

多实例集群

对于高并发场景(比如公开的资源站),可以用 OpenList 的数据库模式替代默认的 SQLite。编辑 data/config.json

{
  "database": {
    "type": "mysql",
    "host": "192.168.1.100",
    "port": 3306,
    "user": "openlist",
    "password": "your_password",
    "name": "openlist"
  }
}

然后启动多个 OpenList 实例指向同一个数据库,前端用 Nginx 负载均衡。注意缓存需要共享(推荐 Redis),否则文件列表更新不同步。

五、判断与建议

进阶 · 推荐细读

什么场景应该选它

  • 你已经在用 AList,但担心原项目未来闭源或治理风险——直接迁移到 OpenList,配置和数据格式完全兼容。
  • 你需要一个统一入口管理 3 个以上网盘,且希望团队成员各有独立权限。OpenList 的多用户 + 目录隔离够用。
  • 你要做一个文件分享站,需要控制分享链接的过期时间、下载次数和密码。OpenList 的分享功能比很多商业网盘还灵活。

什么场景不该选它

  • 你只需要挂载单个网盘到本地。这种情况用原厂客户端或 rclone 更轻量,OpenList 的 Web 界面对你来说是多余开销。
  • 你的文件极敏感(如医疗数据、金融凭证)。OpenList 的加密只靠 HTTPS,存储后端的数据在各自网盘服务商那里是明文。敏感场景请用 Cryptomator 或 VeraCrypt 先加密再上传。
  • 你完全不信任 Go 二进制部署。OpenList 没有官方 Docker Compose 或 K8s Helm Chart,生产环境编排需要自己写。

结论

OpenList 是目前网盘聚合领域 治理最透明、社区最活跃 的选择。如果你需要的是一个能长期维护、不担心闭源风险的统一文件入口,它值得投入时间。反之,如果你只是临时用用、或者对治理不敏感,原 AList 或 cloudreve 也能满足基本需求。

一句话判断:OpenList = AList 的功能 + 社区保险。选它不是因为功能更强,而是因为它不会突然消失。

项目信息

项目
仓库 OpenListTeam/OpenList
语言 Go
Star 23,337
Fork 2,094
主页 https://doc.oplist.org

参考链接