OpenList-Worker 是 OpenList 官方推出的 TypeScript + Serverless 版本,把 Go 后端改写为跑在 Cloudflare Workers / EdgeOne / 阿里云 ESA 上的服务,前端保持 SolidJS + Hope UI 不变。核心卖点:不用买服务器、不用跑 Docker、自带免费额度、内置 78 个存储驱动、数据存在 Cloudflare D1/KV/Blob 里。
为什么要用 Worker 版
之前用 OpenList Go 版,得有台机器、装 Docker、配反代、管 SSL、管备份。Worker 版这些全不用管:Cloudflare 免费额度每天 10 万次请求、100 GB·天存储,对个人够用;EdgeOne 国内节点更快;阿里云 ESA 适合备案域名。缺点是冷启动有几百毫秒延迟,大文件上传受 Workers 请求体限制(25 MB / 100 MB 分片),但如果是下载挂载的网盘使用302转发的连接则不受影响,适合中小文件、文档、图片、视频预览场景。
一键部署
Github官网: https://github.com/OpenListTeam/OpenList-Worker
三个平台官方都给了一键部署按钮,点进去授权 GitHub、填 JWT_SECRET 就行。
Cloudflare Workers
https://deploy.workers.cloudflare.com/?url=https://github.com/OpenListTeam/OpenList-Worker
EdgeOne Pages(国际/国内)
https://edgeone.ai/pages/new?project-name=openlist-tsworker&repository-url=https://github.com/OpenListTeam/OpenList-Worker&install-command=pnpm%20install%20--no-frozen-lockfile&build-command=pnpm%20run%20build&output-directory=dist&env=JWT_SECRET
阿里云 ESA
同理,在 ESA 控制台新建函数、关联仓库、填环境变量。
部署时必须填 JWT_SECRET(≥16 字符,openssl rand -hex 32 生成),用于 JWT 签名和定时任务鉴权。建议在平台控制台以 Secret 方式存,别写进仓库。DB_DRIVER=auto 默认会自动选平台自带存储,不用动。
部署完首次访问会进安装向导,网页上设置管理员账号密码即可。想跳过向导,加个 ADMIN_PASS 环境变量。
Cloudflare 完整部署流程
- 登录自己的Github账号,Fork 官方Github项目。
- 登录Cloudflare,进入存储与数据创建一个D1 SQLite(openlist)、R2对象存储(openlist)
- 创建应用 -> 选择 Continue with GitHub -> 选择 OpenList-Worker
- 进入设置 -> 添加 JWT_SECRET 变量 -> 绑定D1数据库 和 R2存储桶

- 等待部署完成,就可以进入域名网站进入初始化了

- 设置好管理员账户

- 完成初始化

- 再次进入页面就是正常的OpenList登录页面了,登录后就是主页

- 添加Cloudflare R2存储 -> 这里只配置挂载路径和Bucket binding,Bucket binding就是前面绑定的R2的openlist

添加存储(跟 Go 版一模一样)
进后台 → 存储 → 添加,78 个驱动全在:
- 国内网盘:阿里云盘、夸克、百度、115、123、天翼、移动云、迅雷、微云、蓝奏、PikPak、豆包...
- 国际网盘:Google Drive、OneDrive、Dropbox、MEGA、MediaFire、Proton Drive、Yandex...
- 对象存储:S3 兼容、Cloudflare R2(Workers Binding 直连、不走公网)、又拍云、Azure Blob、WebDAV、FTP、SFTP、SMB、IPFS
- 代码托管:GitHub、GitHub Releases、CNB Releases
- 网盘程序:OpenList 分享、AList V3、Cloudreve、可道云、Seafile...
- 功能型:Local、Alias、UrlTree、AutoIndex、Strm、Crypt、Chunk、Virtual
配置方式跟 Go 版一样,驱动选项、挂载路径、认证信息填进去保存。Worker 版有个并发去重机制:同一时刻相同目录请求只向上游发一次,其余复用结果,省流量省限流。
进阶配置(环境变量)
| 变量 | 默认 | 说明 |
|---|---|---|
JWT_SECRET |
必填 | ≥16 字符随机串,Secret 方式存 |
ADMIN_PASS |
— | 跳过安装向导,直接初始化 admin |
DB_FORMAT |
map |
map/key/sql 三种存储格式 |
DB_DRIVER |
auto |
auto/blob/cfkv/kv/d1/do/mysql |
DB_CIPHER |
none |
敏感字段落盘加密,如 aes-256-gcm |
CACHE_ENABLED |
true |
目录树/下载链接缓存 |
MAX_UPLOAD |
26214400 |
整体上传上限(字节),25 MB |
MAX_UPPART |
16777216 |
分片上传上限,16 MB |
ASSET_URLS |
— | 前端静态资源 CDN,支持 $version 占位符 |
完整变量表见官方文档:https://doc.oplist.org/ecosystem/official_worker/guide_env
Cloudflare 部署实测体验
测试环境:浙江电信家宽,直接ping网盘域名延迟在200ms左右。但有些区域的宽带对cf访问不友好,会出现丢包或超时情况。
- 冷启动:首次访问 ~3s左右,二次访问 <1s
- 目录列表:1s左右 返回,缓存命中更快
- 视频预览:直链跳转上游,Worker 不转流,带宽不算在免费额度里
- 大文件上传:受 Workers 限制,单片 16 MB、总 25 MB,大文件得分片或走 R2 Binding
- WebDAV/S3 对外:开启后可挂载到 PotPlayer、Infuse、Rclone、Alist 等客户端
- MCP 端点:
/mcp路径,AI 助手可直接搜索读取文件
坑点提醒
- Cloudflare 提示"无法获取存储库内容" → 先 Fork 仓库,再连 Fork 后的仓库部署
- JWT_SECRET 必须用 Secret 存,普通环境变量重新部署会被仓库配置覆盖
- 自定义域名要在平台控制台加,别只改 DNS
- 大文件上传失败 → 调
MAX_UPLOAD/MAX_UPPART、或用 R2 Binding 直传
说说我的用法
主力还是自建 Go 版(大文件、离线下载、常驻服务),Worker 版拿来做:
- WebDAV图床
- 临时分享文件给别人,不用开服务器端口
- 手机端快速预览网盘文档/图片,不用装客户端
- 给 AI 助手挂 MCP,让它直接搜我网盘里的资料
- 测试新驱动、新配置,坏了删了重部署不心疼
Cloudflare 版的对国内不算太友好,还有里面很多挂载的国内的网盘,对于cf海外挂载来说会有一定的延迟,也不排除会被封号的可能,如果主要面对海外用户和挂载海外的网盘还是挺不错的。如果要对面国内,有备案域名的情况下,可以考虑阿里云的ESA,现在最新版本 29b7a8e直接部署会有一个小bug初始化不了,fork版本让AI改了可以部署正常运行,还是等官方修复后再来细聊阿里ESA部署吧。
评论区