半年前,老冯写了一篇《[1]》,讲了开源对象存储项目 MinIO 放弃维护,软件供应链断裂的故事,上了 HN 头条。那篇文章里我立了个 flag:这个摊子我来接。半年过去了,先交个账。
•Docker 镜像累计拉取 50 万次,GitHub 上 1984 Star了;•发了 9 个版本,处理了 14 项安全漏洞,包括一个高危•一批开源项目已经在用,有的直接设成了默认依赖:
RAGFlow 的默认 Compose 编排、Dokploy 的产品模板、Grafana Loki 的 Helm 随附服务、戴尔 HPC 平台 Omnia、 也进入了、nixpkgs 的软件包,DaoCloud 的公共镜像加速,还有几十个中小项目也切换了。
![]()
不经意间,这个 Fork 就成为了最有影响力,最活跃的 MinIO 分支了。
![]()
当初 Fork MinIO,纯粹是因为 Pigsty 自己要用,得把窟窿补上。补着补着才发现,蹲在这个坑里的人还真是不少。今天写这个,也是因为昨天晚上刚刚发布新版本 RELEASE.2026-08-06T00-00-00Z。 这一版有不少新东西,值得所以说。
完整的改名
在 2 月那篇文章里,我已经提到过这个项目最大的隐患在于商标。因为 MinIO 虽然是一个开源项目,但是开源项目并不带有商标的使用权。
老冯一个人维护了 Pigsty 这么大的项目,放在以前肯定是没有那么多时间去搞重命名这样的事,所以就很懒,直接点了 Fork,打包了一下,名字也懒得改,GitHub 仓库就叫 pgsty/minio。
要是放在以前,这也就是自己给自己用,这倒是无所谓。但是现在,已经有 50 万次下载,这么多知名开源项目把它作为上游了,这让我感觉到这个问题再不解决,那就是在给以后埋雷了。
为什么呢?虽然我在仓库的各个角落都说明 Silo 是独立的社区分支,和 MinIO 公司没有任何关系,但是确实存在这样的可能: 如果 MinIO 用商标来申请 DMCA,把这个 GitHub 的 Docker 仓库给下架掉,那就会直接影响并破坏供应链的完整性。
一个建在别人商标上、随时可能被一封律师函掐断的供应链,本身就是最大的供应链风险。这颗雷得主动拆掉,不能等它响。 所以呢,我就下定决心,正式把项目名字、仓库、二进制和所有涉及到商标与品牌的部分, 彻彻底底的做了一次重命名,从 MinIO 重命名为 Silo 了。
为什么叫Silo
这个分支的名字为什么叫 Silo 呢?说来挺有意思。因为在数据世界里面,Silo 是一个贬义词,代表“数据孤岛”的意思,是数据库和数据仓库极力避免沾染的一个东西。
但是老冯秉持“贱名好养活”的理念。就像我的主项目 pigsty —— 英文含义就是 “猪圈” 和 “脏乱差”,这个意象的联想也很不好,但反正最后也做跑出来了。
而且特别搭配的是 Silo 它还有“谷仓”、“粮仓”的意思,拿来给对象存储命名还是非常贴切。在 Pigsty 宇宙里面,作为 PG 的备份仓库,确实也是一个很好的搭配,
![]()
当然,这个名字其实半年前写那篇宣言的时候就已经定好了,只不过这一次,我们是确确实实地把它落地了。 包括 GitHub 仓库名、Docker 仓库名、二进制名、RPM 包、Deb 包名、镜像名,我们都统一修改成了 Silo。
当然,需要明确说明的一点是,我们修改的只是这些品牌和商标。我们不会去动 API、数据存储格式、监控指标、配置参数名称这些东西。 动这些东西,第一,它们不在商标的覆盖范围内;第二,改这些纯属是给用户和自己找不自在。
兼容性:改了什么,没改什么
有人会问:既然是改名,怎么还留着 MINIO_* 环境变量和 /minio/* 路由,是不是没改干净?
MINIO_ROOT_PASSWORD 这个名字属于你的 docker-compose.yml;minio_bucket_usage_total_bytes 属于你的 Grafana 面板和告警规则; .minio.sys 属于你磁盘上那几百 TB 数据。改掉它们,对我来说就是一行命令,但你就得停一次机全量导出导入一遍数据,这笔账都不用算第二遍。
所以改名的原则一句话:改商标与品牌,不改接口与版权
![]()
如果你使用的是 RPM/DEB 包,那么可能会多几条命令,因为 FHS,User,二进制的名字确实变化了。 但如果你是用老冯的 Pigsty 来通过 Ansible 部署 Silo 的话,这些部署层面的复杂度也都封装好了,其实对用户也没啥区别。
![]()
除了改名,这一版还有四件事值得单独说:控制台、安全、网站,以及一份宣言。
控制台:会说中文了
2025年5月,上游把完整管理控制台从社区版里砍成了残桩,只留一个残废的对象浏览器。今年2月我把它接了回来,但说实话,接回来的东西挺糙:界面陈旧,仪表盘查的还是早就不存在的指标。这次修了三样。
第一,它会说中文了。
对象存储的运维使用者里,相当一部分人第一语言是中文,而这套界面从来只有英文。新版把它变成了双语,所有页面、帮助条目、文档链接全覆盖,切换按钮就在每页页头。
![]()
而且呢,一旦这条路跑通以后,你要想加其他语言的 i18n 也很容易。目前来说只做了中文,而且添加中文支持的同时,我们也优化了这个界面,把图片和图标都换成了 SVG 矢量图,提前压缩了资源。 这样一来,原来的 10MB 嵌入式控制台大小被压缩到不到 3MB,尺寸大小反而大幅缩小了
第二,仪表盘读的是真指标了。
之前那个控制台仪表盘查的是 MinIO Metrics V2,现在 MinIO 和 Silo 的指标已经到 V3 了,这次我们也给升级了。 而且有几个本来就已经坏掉的面板,下午我们也都一起修掉了,也把整个界面美化了一下
![]()
第三,把没用的东西给阉了。
![]()
顺手把 SUBNET ,License 管理,遥测之类乱七八糟的东西都清理干净了。
安全:一个 9.1 分的漏洞,但没有 CVE
这一轮一共修了六个安全问题,每一个都在安全编年史[3]里一事一文写清楚了,这里只说一句话版本:
•节点间路径穿越:分布式集群的内部通信协议上,一批可以逃出磁盘目录的路径操作;•对象授权越界到桶:一个尾斜杠,让本该只管对象的 bucket/* 授权够到了桶级操作,租户能把自己的桶设成匿名公网可读写;•策略条件被客户端遮蔽:客户端传上来的参数,能覆盖服务端自己算出来的鉴权条件值;•重复分片编号:上传一个 5 MiB 的分片,用 [1,1] 提交,服务端返回 200 和一个 10 MiB 的对象;•来源地址可伪造:aws:SourceIp 策略和审计日志里的客户端 IP,对能直连 API 端口的人来说想写什么写什么;•通知配置键没注册:一条坏掉的 NATS 配置,能把 Kafka、Webhook、MQTT 所有通知一起无声关停。
其中第一条要单独拎出来说。
6 月我们修过上游的 CVE-2026-42600,一个内部端点的路径穿越,官方评分 4.9。修完我在公告结尾留了句话:删掉这个端点只证明这个端点没了,不等于同类问题已经查干净。8 月初我发现这不仅仅是一个小漏洞,影响范围要更大。
严重程度完全不是一个量级。攻击者可以在磁盘目录之外任意写文件,可以把存着 IAM 与配置的系统卷整个搬进一个能读的桶里,可以递归删掉整棵目录树,也可以用一条请求把进程打崩。按 CVSS 3.1 评估,最严重那条能到 9.1 分,而上游那条是 4.9。
但这次拿不到 CVE 编号。 CVE 流程需要一个受影响产品的维护方来认领、协调披露,而 minio/minio 已经归档只读,那边没人了。所以只能自己修、自己公告、自己把话说清楚。仓库归档最现实的代价就在这儿:漏洞不会因为仓库变成只读就消失,它只是从此没有人负责了。
范围要讲明白:这些路由只在分布式纠删部署里注册,且需要 cluster root 或节点间凭据,单机部署不受影响。但如果你在跑分布式 MinIO,节点间网络又不是完全可信的,请尽快升级,或者迁移到 Silo。
完整的威胁模型、复现向量、修复方案,以及我们自己在修的过程中踩的坑,都写在这篇公告[4]里了。
此外,我们还修了不少安全问题,而且会把过程中的思考,决策都沉淀成文档记录,细节都放在官网网站上了。
![]()
网站:silo.pgsty.com
以前这个 Fork 的主页非常简陋,就是 Github README 上几句话,没了。
![]()
这两天,老冯用 Fable 搓了一个完整网站出来,包括好几个栏目,文档,博客,下载,中英双语,看上去一下子就挺像那么回事了:
![]()
![]()
![]()
Silo 宣言
网站上还有一个专门的页面,叫《Silo 宣言[11]》,十一条。
说实话我一开始挺犹豫要不要写这玩意。“宣言”两个字自带一股中二气,而且开源世界最不缺的就是承诺,尤其是那些后来一条都没兑现的承诺。 MinIO 自己的 SECURITY.md 到今天还写着“我们总会为最新版本提供安全更新”,而仓库已经归档半年了。
所以我给这一页立了条纪律:这里的每一条,要么是我们已经在做、且有公开证据的事实;要么是我们刻意拒绝承诺的事。
一个兑现不了的承诺,比没有承诺更糟。按这条纪律筛完,剩下的东西大概是这样:
第一条是退场条款。 Fork 是手段,不是身份。若上游恢复对社区版的承诺,我们乐见其成,愿意收缩范围,并把我们的修复回馈上游。
第三条是许可证。 永远 AGPLv3,没有 CLA,版权保留在每位贡献者手里,所以重新授权在结构上就不可能。顺带表个态:我们认为通过 S3 API 使用 Silo 不构成衍生作品,许可证永远不会被拿来当威胁或者销售工具用。上游当年正是这么用它的。
第五条是“永不清单”。 不把既有功能移进付费墙、不给下载设注册墙、不加遥测(上游那些回连路径是被整体移除的,不是默认关闭)、不引入 CLA、不变更许可证、不以商标追究正常使用与描述性提及。这份清单只增不减,条目可以补充,永远不能删除。
第九条是延续性,也是我认为最该有人追问的一条:仓库归属 pgsty 组织而非个人账号;构建过程完整文档化并附溯源证明,任何人都能在没有我们的情况下从源码重建等价制品;万一项目停止积极维护超过六个月,我们会公开声明并妥善归档,而不是让它慢慢烂掉。
第十一条管的是这页纸自己。 增补与加强即时生效,削弱或删除任何一条,须提前九十天公示。
![]()
还有件事,首页 FAQ 里写了,这里再说一次:Coding Agent 是这个项目功能开发与代码 Review 的主力。
上一篇《续命 MinIO:承诺兑现[12]》里我讲过 Blind Manager 那套打法,Codex 打铁、Claude Code 站在对抗视角挑毛病、来回收敛、我看 diff 拍板。这一版还是这么干的,只是规模大了不少:28 个提交、396 个文件、六阶段发布前验收。
配套的承诺是:每个变更都必须过 CI 和人工审核,所有建设性变更都要经过人类的利弊权衡才会合入;Agent 的完整思考记录归档留存,它们做过的权衡会作为设计文档保留下来。你在安全编年史里读到的那些“被否决的方案”“我们自己制造的四次回归”,就是这套记录的公开产出。
我不打算把 AI 藏起来假装这是纯手工,那是不可能的,而且也不会更好 —— 这就是 2026 年一个人维护一个中型基础设施项目的真实样子,藏着才是不诚实。
拿去用
旧的 pgsty/minio 仓库与镜像保持已发布状态,冻结在 RELEASE.2026-08-04 作为存档,不会删除。但后续所有更新只在 pgsty/silo 上发布。
![]()
References
[1] MinIO 已死,MinIO 复生: /db/minio-resurrect[2] silo.pgsty.com: https://silo.pgsty.com/zh/[3] 安全编年史: https://silo.pgsty.com/zh/blog/security/[4] 这篇公告: https://silo.pgsty.com/zh/blog/security/internode-path-containment/[5] 发布说明: https://silo.pgsty.com/zh/blog/release/[6] 安全编年史: https://silo.pgsty.com/zh/blog/security/[7] 兼容性审计: https://silo.pgsty.com/zh/compatibility/[8] Docker 迁移: https://silo.pgsty.com/zh/compatibility/migration/[9] 原生软件包迁移: https://silo.pgsty.com/zh/compatibility/binary/[10] 下载页: https://silo.pgsty.com/zh/download/[11] Silo 宣言: https://silo.pgsty.com/zh/about/manifesto/[12] 续命 MinIO:承诺兑现: /db/minio-promise-kept[13] GitHub Releases: https://github.com/pgsty/silo/releases[14] github.com/pgsty/silo: https://github.com/pgsty/silo[15] silo.pgsty.com/zh: https://silo.pgsty.com/zh/[16] silo.pgsty.com: https://silo.pgsty.com/[17] 从 MinIO 迁移到 Silo: https://silo.pgsty.com/zh/compatibility/migration/[18] Pigsty MinIO 模块: https://pigsty.cc/docs/minio/[19] MinIO 已死: /db/minio-is-dead[20] MinIO 已死,谁能接盘?: /db/minio-alternative[21] MinIO 已死,MinIO 复生: /db/minio-resurrect[22] 续命 MinIO:承诺兑现: /db/minio-promise-kept[23] Silo 20260806 发布说明: https://silo.pgsty.com/zh/blog/release/silo-20260806/[24] Silo 宣言: https://silo.pgsty.com/zh/about/manifesto/
数据库老司机
点一个关注 ⭐️,精彩不迷路
对 PostgreSQL, Pigsty,下云,AI 感兴趣的朋友
欢迎加入 PGSQL x Pigsty 交流群 QQ 619377403
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.