OpenList 是 AList 的社区分支,仓库简介写着「A new AList Fork to Anti Trust Crisis」。它干的活和 AList 一样:把阿里云盘、百度网盘、夸克、OneDrive、本地目录这些地方挂到一个地址后面,用一套文件列表浏览。下载是单文件 exe,双击跑起来就有网页。

92 MB 一个文件,3.14 秒起来

Windows 版分 lite 和完整版,amd64 的 lite 包 32,842,888 字节,解开就一个 openlist.exe,96,381,440 字节。前端页面、图标、语言包全在里面,没有外置的 dist 目录要配。

openlist-windows-amd64-lite.zip   32,842,888 字节
  └─ openlist.exe                 96,381,440 字节
进程到首页返回 200                 3.14 秒
数据目录 data\config.json           2,931 字节
数据库 data\data.db                 73,728 字节
内存占用(运行中)                   66,632 K
首次初始化(建管理员)               20.1 秒
存储驱动下拉                         98 项

起服务不用参数,直接 openlist.exe server,默认监听 0.0.0.0:5244。第一次跑会在同目录建 data 目录,config.json 里能看到端口、数据库路径、临时目录这些默认值。

openlist.exe server
start HTTP server @ 0.0.0.0:5244

3.14 秒比同类的 Go 单文件服务慢一截,原因在它启动时要读配置、连数据库、初始化日志切割和内存上限计算,日志里能看到 total memory、min free memory、max block limit 这几行。这些东西 dufs 那种极简工具不碰。

第一次打开先建管理员,花了 20 秒

没有任何初始密码。第一次访问会被带到 /@init 的三步向导:先是配置,然后是管理员帐户,最后完成。管理员表单四个字段:用户名 / 密码 / 确认密码 / 网站标题。

填完点「初始化」,从点击到页面变成「初始化完成」用了 20.1 秒。这一段慢在建表和写初始数据,之后就快了,登录接口 10 毫秒返回 token。

登录成功后页面上会多出一句提示,如果还没挂存储,列表区显示的是 failed get storage: storage not found; please add a storage first,旁边有个「转到存储」的链接。

挂目录只要两个字段,下拉里有 98 个驱动

存储管理在左侧菜单第四项,点「添加」先选驱动。那个下拉列表拉出来是 98 行,从 115 网盘、天翼云盘、阿里云盘、百度网盘、夸克网盘、OneDrive,到 FTP / SFTP / SMB / WebDAV / 对象存储,再到 Cloudreve、Emby、Teambition 这些。选列表里那个本地目录驱动,就是挂本地目录。

选完驱动才展开完整表单,这个驱动真正要填的只有两个:挂载路径和根文件夹路径。挂载路径比如 /local,根文件夹路径填 D:\某个目录,其余序号、备注、缩略图、回收站路径都有默认值。

挂载路径        /local
驱动            本地目录
根文件夹路径    D:\wb_cache\lab\dufs\share
保存后状态      工作中

保存之后回到前台 /local,目录里的东西就出来了。中文文件名、带空格的文件名、zip 和 pdf 的图标都正常。

前台就是一张文件表

界面是卡片式的,白色底、圆角、三列表格:名称 / 大小 / 修改时间。文件夹在前面,图标区分类型,右下角浮着一个对话按钮。顶部只有面包屑和视图切换,右上角一个按钮给管理员进后台。

名称              大小        修改时间
README.txt        328B       2026-10-22 12:25:20
invoice-0921.pdf  120.01K    2026-10-22 12:25:20
photo-raw.jpg     850.00K    2026-10-22 12:25:20
tools.zip         1.56M      2026-10-22 12:25:20
会议记录.md        393B       2026-10-22 12:28:10
图片               -          2026-10-22 12:28:46
大文件             -          2026-10-22 12:30:19
文档               -          2026-10-22 12:23:56

大小单位会自动换算,1.56M、120.01K 这种,不会全都堆成字节数。排序、切换列表和网格视图、多选批量操作都在顶部工具条里,访客看到的是精简版,管理员多几个按钮。

接口 1.6 毫秒,首屏 5.3 秒

列目录接口 /api/fs/list 连测十次,中位 1.6 毫秒,最快 1.2 毫秒,最慢 3.2 毫秒。这个数说明后端读完目录就返回了,没有多余处理。

项目毫秒
fs/list 中位1.6
fs/list 最快1.2
fs/list 最慢3.2
首次打开到列表可读5320
再次打开到列表可读1570
登录接口10
文件与占用字节 / KB
lite 压缩包32842888
解出的 exe96381440
config.json2931
data.db73728
运行中内存(KB)66632

首屏 5320 毫秒这个数不好看,但它包含浏览器下资源、解析 JS、渲染列表的全过程,第二次走缓存就降到 1570 毫秒。后端接口本身是毫秒级,慢在前端包体和渲染上。

默认不对外,匿名进来是 401

存储建好之后,直接拿链接去下载会失败。请求 /d/local/README.txt 不带凭据,返回 401,响应体 362 字节。带上登录后拿到的 token 也一样,说明这一版对下载路径的鉴权比浏览更严。

GET /d/local/README.txt        无凭据   401
GET /d/local/README.txt        带 token 401
POST /api/fs/list              带登录态 200
PROPFIND /dav/                 无凭据   401

WebDAV 在同一个端口的 /dav/ 下面,服务是开着的。拿 Windows 的 net use 去挂,返回的是系统错误 67「找不到网络名」,UNC 写法 \\127.0.0.1@5244\dav 也一样。用 curl 直接发 PROPFIND 拿到 401,说明服务在,报错卡在认证这一层,本文没继续往下调。

要用的话,最稳的是先给用户配好权限,再让访客用自己的账号登一次。想一上来就公开,得在用户和权限里放开,不能指望默认值。

它是 AList 的 fork,选它要注意什么

仓库描述那句「Anti Trust Crisis」就是对 AList 被收购那件事的回应。代码是从 AList 分出来的,界面、配置格式、API 路径、data 目录结构都沿用,所以原来那份 config.json 和数据库能直接搬过来用,迁移成本很低。

代价是版本号自己走:AList 停在 v3,OpenList 已经到 v4.2.7。两边的问题单、文档、驱动更新节奏都不一样,遇到 bug 别拿 AList 的答案硬套。

它适合的场景很明确:手上有一堆网盘账号,想在一个页面里统一浏览和搜索,或者给家里人开一个只读入口。反过来,只想在局域网里传几个文件,它太重了,一个 92 MB 的程序干这个不值当。

没测的部分列一下,6 项:真实网盘挂载(要账号授权)/ WebDAV 客户端打通 / 离线下载 / 多用户权限分配 / 索引与全文搜索 / HTTPS 反向代理,都没跑。