mirror of
https://github.com/pgsty/minio.git
synced 2026-08-10 00:03:29 +03:00
fd2ca1c6d2
README, README_ZH, SECURITY, COMPLIANCE, CONTRIBUTING, NOTICE, code_of_conduct, the vulnerability and PR-etiquette documents, the GitHub issue and pull request templates, and the docs/ tree all present Silo as the product. The Grafana dashboards under docs/metrics/prometheus/grafana/ have their panel titles and descriptions rebranded while every minio_* query, label and expression is left alone, so existing alerts and recording rules keep matching. The distinction the review demanded is applied per hit rather than by search-and-replace: - Product and command text becomes Silo and silo: install and run instructions, systemd examples, compose services, download links, badges. - Protocol and interface text keeps MinIO: MINIO_* variables, minio_* metrics, x-minio-* headers, /minio/* routes, .minio.sys, arn:minio, and API field and error names. - Attribution keeps MinIO and gains the fork's own: the AGPL obligations, original copyright, CREDITS and NOTICE stay, with the modification notice added alongside rather than replacing them. - Historical and third-party references are left as facts, not rewritten for brand tidiness. README and README_ZH each carry an explicit non-affiliation notice, document the side-by-side package migration including the /etc/systemd/system/silo.service.d/10-legacy-user.conf drop-in for keeping a legacy UID/GID, and state that recursive chown is never performed. The trademark attribution uses the policy's approved "based on MinIO technology" wording, not the shortened form the policy rejects. github.com/pgsty/minio links are left in place and labelled transitional. The repository has not been renamed, and rewriting them now would produce documented URLs that 404 until the cutover; they change in the cutover commit together with the goreleaser release target, the OCI source label and the raw-content branch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
237 lines
12 KiB
Markdown
237 lines
12 KiB
Markdown
<h1 align="center">
|
||
<img src=".github/silo.svg" alt="" height="80">
|
||
<img src=".github/silo-word.svg" alt="SILO" height="80">
|
||
</h1>
|
||
|
||
<p align="center">
|
||
<strong>审慎维护的 S3 兼容对象存储</strong><br>
|
||
为现有部署提供安全维护、带版本的发行产物与持续运维支持。
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://silo.pgsty.com/zh/">官网</a> ·
|
||
<a href="https://silo.pgsty.com/zh/docs/">文档</a> ·
|
||
<a href="https://silo.pgsty.com/zh/download/">下载</a> ·
|
||
<a href="https://silo.pgsty.com/zh/blog/">博客</a> ·
|
||
<a href="https://github.com/pgsty/minio/releases">版本发布</a> ·
|
||
<a href="SECURITY.md">安全策略</a> ·
|
||
<a href="README.md">English</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://github.com/pgsty/minio/releases"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/pgsty/minio?include_prereleases&label=release&logo=github"></a>
|
||
<a href="https://hub.docker.com/r/pgsty/silo"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/pgsty/silo?logo=docker"></a>
|
||
<a href="go.mod"><img alt="Go Version" src="https://img.shields.io/github/go-mod/go-version/pgsty/minio?logo=go"></a>
|
||
<a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-AGPLv3-blue"></a>
|
||
</p>
|
||
|
||
> [!IMPORTANT]
|
||
> Silo 是由 [Pigsty](https://pigsty.cc) 独立维护、从 [`pgsty/minio`](https://github.com/pgsty/minio) 发布的开源 MinIO 社区分支。本项目与 MinIO, Inc. 不存在隶属、背书或赞助关系;文中使用 “MinIO” 仅用于说明上游项目及兼容谱系。
|
||
|
||
## 概述
|
||
|
||
Silo 维护一条源自开源 MinIO 服务端的下游版本线,为上游停止社区发行后仍在运行 MinIO 兼容部署的用户提供持续构建与发行产物。
|
||
|
||
Pigsty 使用本分支提供对象存储,包括 PostgreSQL 备份存储。
|
||
|
||
项目统一门户为 [silo.pgsty.com](https://silo.pgsty.com/zh/),集中提供文档、下载安装、版本与安全动态及项目背景。中文内容位于 `/zh/`,英文内容位于站点根路径。
|
||
|
||
## 按需求选择入口
|
||
|
||
| 需求 | 权威入口 |
|
||
| :-- | :-- |
|
||
| 项目概览与全站导航 | [Silo 中文门户](https://silo.pgsty.com/zh/)([English](https://silo.pgsty.com/)) |
|
||
| 安装方式与软件下载 | [下载与安装](https://silo.pgsty.com/zh/download/)([English](https://silo.pgsty.com/download/)) |
|
||
| 运维、管理、开发与参考指南 | [中文文档](https://silo.pgsty.com/zh/docs/)([English](https://silo.pgsty.com/docs/)) |
|
||
| 项目动态、版本说明与安全通告 | [博客](https://silo.pgsty.com/zh/blog/),包括[版本发布](https://silo.pgsty.com/zh/blog/release/)与[安全通告](https://silo.pgsty.com/zh/blog/security/) |
|
||
| 带版本的二进制、校验和与源码归档 | [GitHub Releases](https://github.com/pgsty/minio/releases) |
|
||
| 缺陷报告与功能讨论 | [GitHub Issues](https://github.com/pgsty/minio/issues) |
|
||
| 私密漏洞报告 | [`SECURITY.md`](SECURITY.md) 与 [`VULNERABILITY_REPORT.md`](VULNERABILITY_REPORT.md) |
|
||
| 许可证、署名与商标信息 | [许可证](https://silo.pgsty.com/zh/about/license/)、[署名归属](https://silo.pgsty.com/zh/about/attribution/)与[商标政策](https://silo.pgsty.com/zh/about/trademark/) |
|
||
|
||
## 维护政策
|
||
|
||
活跃版本线的维护范围包括:
|
||
|
||
- 构建与依赖项维护;
|
||
- 适用的安全修复与公告;
|
||
- 针对可复现缺陷的范围明确的修复;
|
||
- 带版本的二进制、软件包、校验和与多架构镜像;
|
||
- Web Console、客户端、文档与 Pigsty 集成。
|
||
|
||
改动保持克制,并在可行时提供测试。所有维护均为尽力而为,不承诺固定的响应、修复或发布时间。
|
||
|
||
### 范围之外
|
||
|
||
- 独立产品路线图、新存储引擎或假设性的 S3 新特性;
|
||
- 大规模重写或显著扩大下游差异的改动;
|
||
- 历史版本或多条支持分支;
|
||
- 商业支持、SLA、7×24 服务或 SUBNET 服务;
|
||
- 部署设计、访问控制、监控、备份与恢复。
|
||
|
||
## 兼容策略
|
||
|
||
Silo 尽量保留:
|
||
|
||
- `github.com/minio/minio` module path 与 `github.com/minio/*` 导入路径;
|
||
- MinIO 兼容的 S3 API、线协议、`MINIO_*` 环境变量、指标、协议头、保留路由与存储元数据;
|
||
- `RELEASE.YYYY-MM-DDTHH-MM-SSZ` 标签,以及容器入口对旧式 `minio …` 参数的转换。
|
||
|
||
Silo 自有交付面统一使用 `silo` 可执行文件、软件包、服务、Helm Chart 与 `pgsty/silo` 容器镜像;原生交付物不会安装 `minio` 二进制别名。
|
||
|
||
兼容性是默认约束。只要不会留下安全问题,Silo 就保留既有的协议、客户端、配置与运维行为;只有在修复重大安全问题确有必要时才会打破兼容,并在版本说明中明确受影响行为与迁移方式。每个版本仍应视为下游升级:锁定版本,阅读[版本说明](https://silo.pgsty.com/zh/blog/release/)与[安全公告](docs/security/advisories.md),保留回滚路径,并在生产使用前完成测试。
|
||
|
||
## 下载与发行产物
|
||
|
||
请先在[下载与安装](https://silo.pgsty.com/zh/download/)页面选择合适的安装方式;GitHub Releases 仍是带版本服务端二进制、校验和与源码归档的获取位置。
|
||
|
||
| 产物 | 位置 |
|
||
| :-- | :-- |
|
||
| 源码 | [`github.com/pgsty/minio`](https://github.com/pgsty/minio) |
|
||
| 容器镜像 | [`pgsty/silo`](https://hub.docker.com/r/pgsty/silo),支持 `linux/amd64` 与 `linux/arm64` 多架构清单 |
|
||
| 服务端二进制与校验和 | [GitHub Releases](https://github.com/pgsty/minio/releases),覆盖 Linux、macOS、Windows 的 `amd64` 与 `arm64` |
|
||
| Linux 软件包 | RPM、DEB、APK,并通过 [Pigsty 软件仓库](https://pigsty.cc/docs/repo/) 分发 |
|
||
| 客户端 | [`pgsty/mc`](https://github.com/pgsty/mc),容器内以 `mcli` 提供,并保留 `mc` 兼容别名 |
|
||
| 管理控制台 | [`pgsty/silo-console`](https://github.com/pgsty/silo-console),通过兼容导入路径 `github.com/minio/console` 嵌入服务端构建 |
|
||
| 共享库 | [`pgsty/silo-pkg`](https://github.com/pgsty/silo-pkg) v3.11.0,通过 `replace` 指令使用,同时保留 `github.com/minio/pkg/v3` 导入路径 |
|
||
|
||
每个新版本都会为各平台归档和软件包发布 SPDX JSON SBOM。归档与软件包的校验和清单分别带有无长期密钥的 Sigstore 签名包;GitHub 制品证明则为全部可下载产物及多架构容器镜像记录已签名的构建来源。
|
||
|
||
下载归档及配套文件后,请分别验证完整性、已发布 SBOM、签名清单与构建来源:
|
||
|
||
```bash
|
||
# 完整性:选择与你下载产物相符的一行。
|
||
grep -F ' silo_<version>_linux_amd64.tar.gz' \
|
||
silo_<version>_checksums.txt | sha256sum --check
|
||
|
||
# 归档 SBOM 是另一个独立校验的 Release 产物。
|
||
grep -F ' silo_<version>_linux_amd64.tar.gz.sbom.json' \
|
||
silo_<version>_checksums.txt | sha256sum --check
|
||
|
||
# 验证归档/SBOM 校验和清单的签名。
|
||
cosign verify-blob \
|
||
--bundle silo_<version>_checksums.txt.sigstore.json \
|
||
--certificate-identity-regexp \
|
||
'^https://github.com/pgsty/(minio|silo)/\.github/workflows/release\.yml@refs/(tags/RELEASE\..+|heads/(master|main))$' \
|
||
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
|
||
silo_<version>_checksums.txt
|
||
|
||
# 在线验证本仓库签发的构建来源。
|
||
gh attestation verify silo_<version>_linux_amd64.tar.gz \
|
||
--repo pgsty/minio
|
||
```
|
||
|
||
软件包使用 `silo_<version>_packages_checksums.txt` 及其相邻的 Sigstore
|
||
签名包,并使用相同的 identity 与 issuer 约束;请用 SPDX 工具检查已验证的
|
||
SPDX JSON SBOM。按 digest 验证多架构容器清单的构建来源:
|
||
|
||
```bash
|
||
gh attestation verify \
|
||
oci://index.docker.io/pgsty/silo@sha256:<manifest-digest> \
|
||
--repo pgsty/minio
|
||
```
|
||
|
||
分架构 SBOM 证明附在 `amd64` 与 `arm64` 平台镜像的 digest 上,而非多架构
|
||
清单上,需要分别显式验证:
|
||
|
||
```bash
|
||
gh attestation verify \
|
||
oci://index.docker.io/pgsty/silo@sha256:<platform-digest> \
|
||
--repo pgsty/minio \
|
||
--predicate-type https://spdx.dev/Document/v2.3
|
||
```
|
||
|
||
按 digest 验证可避免信任可变镜像标签。
|
||
|
||
### 原生软件包迁移
|
||
|
||
`silo` RPM、DEB 与 APK 不针对 `minio` 声明 `Provides`、`Obsoletes`、
|
||
`Replaces` 或包级 `Conflicts`,因此可以与已有 MinIO 软件包并存安装,
|
||
不会被普通升级静默替换。两个 systemd unit 在运行时互斥,应由管理员显式
|
||
切换,不能同时启动。
|
||
|
||
切换前请记录旧 unit 的 enabled/active 状态与 `User`/`Group`,并备份
|
||
`/etc/default/minio`。Silo 先读取该旧配置,再读取 `/etc/default/silo`;后者
|
||
中由管理员设置的同名变量优先。如现有数据必须继续使用原 UID/GID,请创建
|
||
`/etc/systemd/system/silo.service.d/10-legacy-user.conf`:
|
||
|
||
```ini
|
||
[Service]
|
||
User=<legacy-user>
|
||
Group=<legacy-group>
|
||
```
|
||
|
||
执行 `systemctl daemon-reload`,先停用并停止 `minio.service`,再启用并启动
|
||
`silo.service`。确认健康检查、S3、Admin API、指标与日志后,才 mask 或卸载
|
||
旧服务。软件包迁移期间不要递归修改数据属主;在回滚观察窗口内保留旧包与
|
||
旧 unit。
|
||
|
||
## 快速开始
|
||
|
||
本地体验:
|
||
|
||
```bash
|
||
mkdir -p data
|
||
|
||
export MINIO_ROOT_USER=minioadmin
|
||
export MINIO_ROOT_PASSWORD=change-me-long-password
|
||
|
||
docker run -d --name silo \
|
||
-p 9000:9000 \
|
||
-p 9001:9001 \
|
||
-e MINIO_ROOT_USER \
|
||
-e MINIO_ROOT_PASSWORD \
|
||
-v "$PWD/data:/data" \
|
||
docker.io/pgsty/silo:latest server /data --console-address ":9001"
|
||
```
|
||
|
||
管理控制台位于 <http://localhost:9001>,S3 API 位于 <http://localhost:9000>。
|
||
|
||
镜像内置兼容客户端 `mcli`:
|
||
|
||
```bash
|
||
docker exec silo mcli alias set local http://127.0.0.1:9000 \
|
||
"$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD"
|
||
docker exec silo mcli mb local/demo
|
||
docker exec silo mcli ls local
|
||
```
|
||
|
||
> [!WARNING]
|
||
> 生产环境应锁定版本,使用独立凭据与 TLS,配置监控,保留独立备份,并验证恢复流程。
|
||
|
||
从源码构建服务端:
|
||
|
||
```bash
|
||
go build -o silo .
|
||
./silo --version
|
||
```
|
||
|
||
其他安装方式(包括原生软件包、二进制、Podman、Kubernetes、源码构建与 Pigsty Ansible)请前往[下载与安装](https://silo.pgsty.com/zh/download/);生产部署与管理请从 [Silo 中文文档](https://silo.pgsty.com/zh/docs/)开始。Pigsty 用户也可以直接使用 [Pigsty MinIO 模块](https://pigsty.cc/docs/minio/)。
|
||
|
||
## 安全
|
||
|
||
安全修复面向当前活跃开发分支,并记录在仓库[安全公告](docs/security/advisories.md)与门户[安全通告](https://silo.pgsty.com/zh/blog/security/)中。请按照 [`SECURITY.md`](SECURITY.md) 与 [`VULNERABILITY_REPORT.md`](VULNERABILITY_REPORT.md) 私密报告漏洞;同时影响上游 MinIO 的问题也应向上游报告。
|
||
|
||
## 参与贡献
|
||
|
||
欢迎安全与依赖项更新、可复现缺陷修复、测试、发布自动化、打包与文档改进。
|
||
|
||
Issue 与 Pull Request 应说明受影响版本、复现步骤、影响、预期行为、测试与兼容性说明。大型改动请先提交 Issue 讨论。
|
||
|
||
## 背景
|
||
|
||
本项目源于上游社区发行与维护模式的变化。维护者对相关变化的分析、替代方案评估与早期维护记录见以下文章:
|
||
|
||
| 文章 | 主题 |
|
||
| :-- | :-- |
|
||
| [MinIO已死](https://silo.pgsty.com/zh/blog/post/minio-is-dead/) | 上游项目与发行模式的变化 |
|
||
| [MinIO已死,谁能接盘?](https://silo.pgsty.com/zh/blog/post/minio-alternative/) | 可选替代方案评估 |
|
||
| [MinIO 已死,MinIO 复生](https://silo.pgsty.com/zh/blog/post/minio-resurrect/) | 建立分支及其发行流水线 |
|
||
| [续命 MinIO:承诺兑现](https://silo.pgsty.com/zh/blog/post/minio-promise-kept/) | 初期安全与维护工作 |
|
||
|
||
## 许可证与商标
|
||
|
||
服务端继续采用 [GNU Affero General Public License v3.0](LICENSE) 发布。上游作者与署名信息见 [`CREDITS`](CREDITS) 与 [`NOTICE`](NOTICE)。
|
||
|
||
MinIO 是 MinIO, Inc. 的商标。Silo 是独立社区项目,与 MinIO, Inc. 不存在隶属或背书关系;源码仓库在协调切换完成前暂时保留过渡名称 `pgsty/minio`。
|