目 录CONTENT

文章目录

拒绝恶意收购,十分钟搭建AList的替代品——OpenList|好玩儿的Docker项目

咕咕
2025-07-04 / 1 评论 / 0 点赞 / 195 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

最近事情比较多,鸽了好一阵子了。前阵子Alist被收购的事情,相信不少小伙伴可能已经有了解。

这边给还不清楚的小伙伴简单梳理一下。

1. 介绍

AList是一个广受欢迎的开源项目,支持多种云存储的统一管理和WebDAV功能,因其便捷性和强大的网盘聚合能力在开发者社区中积累了近5万星标。

咕咕在自己的博客里也介绍过这个项目——【好玩的Docker项目】目前最好用的网盘直链程序——AList,支持市面上几乎所有网盘!可以代替Olaindex! (突然发现已经是三年前的事情了 = =)

然而,2025年6月爆出的项目被出售事件引发了开源社区的激烈反响。

事件背景

  • 项目出售:据多方消息,AList被原开发者Xhofe出售给贵州不够科技有限公司(BugoTech),交易过程未公开,缺乏社区通知。原开发者确认项目已交由公司运营,自己仅保留代码审查权,main分支启用PR审核和CI自动构建以确保透明性。
  • 争议操作:新维护者(账号alist666)提交的PR #8633被发现包含收集用户设备信息并上传至私有服务器的代码,引发“供应链投毒”担忧,虽因社区压力撤回,但信任危机加剧。文档被大幅修改,移除原作者信息,新增商业化内容(如VIP技术支持和QQ群),官网域名从alist.nn.ci更换为alistgo.com,旧链接404。
  • 收购方背景:不够科技此前收购Hutool、LNMP等项目,伴随权限争议和疑似“投毒”历史,社区对其声誉存疑。

社区反应

  1. 愤怒与失望

    • 信任崩塌:社区对原开发者Xhofe未提前公告的“暗箱操作”表示强烈不满,认为此举背叛了开源精神,伤害了用户和贡献者的信任。GitHub Issues区被大量批评淹没,新维护者删除质疑帖并移除反对者进一步激化矛盾。
    • 隐私担忧:AList涉及网盘Token和Cookie等敏感数据,用户担心新版本可能泄露隐私或被植入恶意代码。社区建议锁定v3.40.0版本,解除网盘授权,并备份重要文件。
    • 对收购方的质疑:不够科技的“黑历史”被广泛讨论,社区将其与此前LNMP、Oneinstack的闭源和投毒争议联系起来,称其为“傻逼公司”“bug科技”,对其动机和代码安全性高度警惕。
  2. 社区自救与分叉

    • 分叉项目:开发者迅速行动,创建了OpenList等分叉项目,移除不可信代码并审计近半年提交,短时间内获数千星标,显示社区对替代方案的热情。
    • 替代方案:技术博客推荐Zdir、Cloudreve等私有网盘程序,鼓励用户迁移以规避风险。
    • 安全建议:社区提出锁定版本、校验哈希、隔离网络、自行编译等措施,强调去中心化分发和社区监督的重要性。
  3. 对原开发者的复杂情绪

    • 理解与支持:部分开发者(如@DIYgod)表示理解Xhofe的决定,认为开源维护的长期孤独和无回报让变现成为合理选择,祝福其获得回报。贡献图显示Xhofe个人提交超90%代码,凸显其付出。
    • 批评与指责:更多用户认为Xhofe将社区贡献和用户数据“卖给有前科的公司”是不道德的,称其“把用户当交易品”,损害了开源生态的信任。

评价

  • 对原开发者的行为:Xhofe作为主要贡献者有权在MIT/AGPL-3.0许可证框架内转让项目,但未公开透明的做法违背了开源社区的信任契约。 虽然其后续承诺代码审查,但“悄然退出”和“配合移除贡献者痕迹”让社区感到被背叛,凸显了单一开发者主导项目的风险。
  • 对收购方的操作:不够科技的历史记录和新代码的隐私收集行为引发合理担忧,其商业化导向(如VIP服务)与开源精神冲突。删除批评和接管仓库的“粗暴”操作进一步破坏信任,可能导致AList用户流失。
  • 社区的应对:社区的激烈反应反映了对开源项目透明度和数据安全的重视。分叉项目和替代方案的迅速涌现展现了开源生态的韧性,但也暴露了国内开源项目变现难、社区监督机制不足的问题。
  • 对开源生态的启示:AList事件敲响警钟,提醒用户关注项目维护的可持续性和开发者的稳定性。建议建立贡献者许可协议(CLA)和社区监督机制,防止类似“野蛮收购”。用户应谨慎选择涉及敏感数据的开源工具,优先考虑社区主导的项目。

结论

AList被收购事件引发了开源社区的信任危机,社区的愤怒源于对隐私安全和开源精神的双重担忧。尽管部分人理解原开发者的变现动机,但其隐秘操作和收购方的争议历史让事件成为“开源之耻”。社区通过分叉和替代方案展现了自救能力,但事件也暴露了国内开源生态在商业化与信任之间的矛盾。用户应保持警惕,优先选择透明、社区驱动的项目,同时推动更完善的开源治理机制。

这一期,我们就来分享一个Alist的开源替代——OpenList。

ecd1fc88db4311c5f021b48eea89155e.png

b052fa406d61edce52e385f01a60fddf.png

如果你之前安装过 Alist,其实只要在docker-compose.yml修改两处:

  • 镜像名从 xhofe/alist 改为 openlistteam/openlist
  • 映射的容器内的路径,由 /opt/alist/ 改为 /opt/openlist/(如果添加了本地存储,记得也修改一下根文件夹路径,其他网盘不影响)

运行之前,最好对原来的数据进行一次备份,运行之后,原来怎么使用,现在还是一样的。

2. 相关地址

官方GitHub地址:https://github.com/OpenListTeam/OpenList (目前10.6k个star,欢迎大家去给作者点星星!)

3. 搭建环境

  • 服务器:咕咕这边用的是OVH的杜甫,当然你也可以选择其他高性价比的服务器。内存1G以上即可,硬盘当然是越大越好啦。
  • 系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
  • 安装好 Docker、Docker-compose(相关脚本
  • 【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址
  • 【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程

4. 搭建视频(有时间补充!)

4.1 YouTube

视频地址:

4.2 哔哩哔哩

哔哩哔哩:

5. 搭建方式

5.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

5.2 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/openlist

cd openlist

我们来简单修改一下作者提供的docker-compose.yml文件

vim docker-compose.yml

咕咕修改之后的(其实就是修改了端口号和删除了version: "3.7"):

services:
  openlist:
    image: 'openlistteam/openlist:latest'
    container_name: openlist
    volumes:
      - '/data:/opt/openlist/data'
      - './share:/opt/openlist/share'
    ports:
      - '5288:5244'
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    restart: unless-stopped

修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

5.3 打开服务器防火墙(非必需)并访问网页

打开防火墙的端口 5288

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):

image-20220630215240864 image-20220630220546335

类似图中的,这边我们填 5288,示例填 openlist ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)

56a42aff23098af08c1ae587e19739ae.png

查看端口是否被占用(以 5288 为例),输入:

lsof -i:5288  #查看 5288 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

5.4 启动 openlist

cd /root/data/docker_data/openlist

docker compose up -d   # 注意,老版本用户用 docker-compose up -d

等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:5288 访问了。

但是这边我们推荐先搞一下反向代理!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo上 6位数字的xyz续费永远都是0.99美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

6. 反向代理

6.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

4b00cb7fe121c71233685dcc787fdf32.png

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:

1a1ff8255bb0ae59f7dcb9b492fa3f11.png e412c3244963f658bd1521eca54de921.png 3f2b568516e72dab959680f84f40a83e.png 3c9ea7731f53d6e51b7cf6cbe1c3c532.png

注意填写对应的 域名IP端口,按文章来的话,应该是 5288

IP 填写:

如果 Nginx Proxy Manager 和 openlist 在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填 openlist 所在的服务器 IP 就行。

6.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

image-20220819150345725 image-20220819150542867

代码如下:

location / {
      proxy_pass http://127.0.0.1:5288/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。

image-20220819150730128

也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

7. 使用教程

首先来输入命令:

docker compose logs

查看一下初始的登录密码:

3813385afd8b3e7c33c374f95c642d7b.png

这边的密码是OVoPTw5B

打开域名登录:

1ed1f3aeb85b7de9289c25f921a40340.png

默认用户名:admin
密码:OVoPTw5B

这个等下都可以自己修改。

登录之后发现是这样的,因为我们还没有添加任何的存储源:

b569358ee1fefe1b457c6c173dbf1ce7.png

点击首页下方的管理,来到后台。

我们来演示一下"添加存储"的操作,

eed7a56a23a3f2fa0269ee851714737d.png

这边先选择一个"本地存储",

挂载路径这边可以自己自定义,

WebDAV策略选择“本地代理”就行,

919e9cc5a6bab65898daa321583a3e65.png

根文件夹路径要填docker容器内部的路径,这边前面我们在docker-compose.yml里面映射了./share:/opt/openlist/share,所以其实这边填/opt/openlist/share即可。

其他的选项按需自己设置。

699adef16557fd910c5120f59f020c84.png

点击保存之后,再返回首页,就有显示了,后续可以自己把文件传到服务器,这边就会显示出来了。

293e180d47b86f783314960b790c9935.png

当然,AList之所以火爆,就是因为他可以添加很多个网盘的索引,

78a73028105f168bc635347f0a2265eb.png

0dce80aeb7a0f61fe8c8a0105e26c227.png

因为不同的小伙伴用的网盘也不一样,具体的细节,大家可以参考官方的文档来添加:https://docs.oplist.org/zh/guide/drivers/common.html

7.1 更新 openlist

cd /root/data/docker_data/openlist

docker compose pull

docker compose up -d    # 请不要使用 docker compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

利用 Docker 搭建的应用,更新非常容易~

7.2 卸载 openlist

同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/openlist

docker compose down

cd ..

rm -rf /root/data/docker_data/openlist  # 完全删除

可以卸载得很干净。

8. 常见问题及注意点

目前 OpenList 已经发布了 4.0 正式版,但依然存在一些已知问题,不过大部分功能已可稳定使用,具体迁移进度可在 OpenList 迁移工作总结 中查看。

大家记得多多更新,使用最新版本的docker镜像。

a17367ce1aa891a163371be6f72c8b9f.png

目前项目的赞助页面还未建立:https://docs.oplist.org/zh/zh/guide/sponsor.html

后续建立了我也会支持,同时也希望有条件的小伙伴多多支持,赞赏开发者们一杯咖啡。这样也能让开源项目能够健康生存下去,少受商业的裹挟。

9. 结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 [项目]https://github.com/OpenListTeam/OpenList) 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!也希望开源项目越来越好!

10. 参考资料

官方GitHub:https://github.com/OpenListTeam/OpenList

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区