Feng Ruohang bd8df51665 ci: gate the rebrand on compatibility, packaging and provenance evidence
A rebrand of this size cannot be reviewed by reading the diff. The risk is not
what was renamed but what was renamed by accident: an environment variable, a
metric, a header, a route, a storage marker or an exported symbol that some
deployment depends on. So the invariants get a machine check.

rebrand-guard extracts the identifiers a product rename must not touch - the
go.mod module path, github.com/minio/* imports, MINIO_* variables, minio_*
metric literals, x-minio-* headers, route string literals, the hardcoded grid
routes in internal/grid/manager.go, the reserved bucket root, .minio.sys
markers, arn:minio and minio:s3 policy values, every exported symbol in cmd/
and internal/, and every branded string literal - and compares them to a
checked-in baseline. Any removal or addition fails the build, in both
directions, so a future change cannot quietly drop one either.

The recorded delta against the pre-rebrand tree is: module path, 137 imports,
19 metrics, 15 storage markers, 58 policy values and all 9014 exported symbols
byte-identical; environment 437 -> 436, headers 85 -> 84, routes 331 -> 330.
Each of those three is accounted for. MINIO_CONFIG_DIR and MINIO_VERSION were a
shell local and a compose variable in test scripts, never server settings.
x-minio-common was a docker-compose extension key, never an HTTP header.
/api/health/upload was the SUBNET upload path in the deleted callhome.go.

verify-rebrand.sh covers what the identifier guard cannot see: that the retired
upstream delivery paths stay deleted, that the packaging and container files
name silo, that silo.service keeps its Conflicts and both EnvironmentFile
lines, that silo.env contains no active assignment that would shadow the legacy
file, that no active delivery surface still publishes pgsty/minio, and that no
non-test Go source contains a dl.min.io, subnet.min.io, api.min.io,
slack.min.io or play.min.io URL.

Both, plus the entrypoint argv test, run in go.yml, release.yml and
test-release.yml. test-release.yml also gets the path filters right: it was
watching minio.service, which no longer exists, so the packaging gate would
have gone silently dormant. It now watches the unit, defaults, sysusers,
lifecycle scripts, helm chart and both guards, and asserts the four-file
payload, the absence of any cross-name Provides/Obsoletes/Conflicts, and that a
container started with the legacy `minio server` argv really runs silo as PID 1.

release.yml and docker-release.yml additionally verify that the checked-out
revision matches GITHUB_SHA before building. GitHub's OIDC certificate records
GITHUB_SHA, not the ref passed to actions/checkout, so a manual dispatch from
the wrong ref would have produced provenance describing different source from
the bytes being published. They now emit SBOMs and attestations for archives,
packages and images, and docker-release verifies the release workflow's
attestation on every artifact it consumes. Images publish to pgsty/silo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 08:48:39 +08:00
2025-03-12 22:29:51 -07:00
2021-04-23 11:58:53 -07:00
2023-02-19 00:03:50 +05:30

SILO

A conservatively maintained MinIO fork
Security maintenance, versioned release artifacts, and operational continuity for existing deployments.

Website · Documentation · Download · Blog · Releases · Security · 中文

GitHub Release Docker Pulls Go Version License

Important

Silo is an independent, community-maintained fork of the open-source MinIO server, published by Pigsty from pgsty/minio. It is not affiliated with, endorsed by, or sponsored by MinIO, Inc. “MinIO” is used only to identify the upstream project and compatibility lineage.

Overview

Silo maintains one downstream release line based on MinIO RELEASE.2025-12-03T12-00-00Z. It provides maintained builds and release artifacts for existing MinIO-compatible deployments after upstream community distribution ended. Pigsty uses this fork for object storage as an optional PG backup repo.

The official project portal is silo.pgsty.com. It brings documentation, downloads, release and security notes, and project background together. English is served at the site root; Chinese is available under /zh/.

Find the Right Resource

Looking for Canonical location
Project overview and navigation Silo Website (中文)
Installation methods and downloads Download & Install (中文)
Operations, administration, development, and reference Documentation (中文)
Project news, release notes, and security notes Blog, including releases and security
Versioned binaries, checksums, and source archives GitHub Releases
Bug reports and feature discussions GitHub Issues
License, attribution, and trademark information License, Attribution, and Trademark

Maintenance Policy

The active release line covers:

  • build and dependency maintenance;
  • applicable security fixes and advisories;
  • focused fixes for reproducible defects;
  • versioned binaries, packages, checksums, and multi-architecture images;
  • the web console, client, documentation, and Pigsty integration.

Changes are kept narrow and tested where practical. Maintenance is best effort; no response, remediation, or release schedule is guaranteed.

Out of scope

  • a separate product roadmap, new storage engine, or speculative S3 features;
  • broad rewrites or changes that materially expand the downstream delta;
  • historical releases or multiple support branches;
  • commercial support, SLAs, 24×7 coverage, or SUBNET access;
  • deployment design, access control, monitoring, backup, or recovery.

Compatibility

Silo aims to preserve:

  • MinIO-compatible S3 APIs, configuration, environment variables, and CLI conventions;
  • RELEASE.YYYY-MM-DDTHH-MM-SSZ tags, container entrypoints, and common deployment workflows.

Compatibility is the default constraint. Silo preserves existing wire, client, configuration, and operational behavior whenever doing so remains safe. Compatibility is broken only when necessary to close a major security issue, and the release notes must identify the affected behavior and migration path. Treat each release as a downstream upgrade: pin versions, review release notes and security advisories, keep a rollback path, and test before production use.

Downloads and Release Artifacts

Use Download & Install to choose an installation method. GitHub Releases remains the source for versioned server binaries, checksums, and source archives.

Artifact Location
Source github.com/pgsty/minio
Container image pgsty/minio, multi-arch for linux/amd64 and linux/arm64
Server binaries and checksums GitHub Releases for Linux, macOS, and Windows on amd64 and arm64
Linux packages RPM, DEB, and APK artifacts, also distributed through the Pigsty repository
Client pgsty/mc, bundled in the container as mcli with an mc compatibility alias
Console Maintained georgmangold/console fork, embedded in the server build
Shared library pgsty/silo-pkg v3.7.0, consumed through a replace directive while preserving github.com/minio/pkg/v3 import paths (release notes)

Quick Start

For local evaluation:

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" \
  pgsty/minio:latest server /data --console-address ":9001"

Open the console at http://localhost:9001; the S3 API listens on http://localhost:9000.

The image includes the compatible client as mcli:

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

For production, pin a release, use unique credentials and TLS, monitor the service, keep independent backups, and test recovery.

Build the server from source:

go build -o minio .
./minio --version

For other installation paths—including native packages, binaries, Podman, Kubernetes, source, and Pigsty Ansible—use Download & Install. For production deployment and administration, start with the Silo documentation. Pigsty users can also use the Pigsty MinIO module.

Security

Security fixes target the active master branch and are recorded in the advisory log and the portal's security notes. Report vulnerabilities privately as described in SECURITY.md and VULNERABILITY_REPORT.md. Report issues that also affect upstream MinIO there as well.

Contributing

Useful contributions include security and dependency updates, reproducible bug fixes, tests, release automation, packaging, and documentation.

Issues and pull requests should include the affected version, reproduction steps, impact, expected behavior, tests, and compatibility notes. Discuss large changes in an issue first.

Background

This project was created in response to changes in the upstream community distribution and maintenance model. The maintainers analysis, alternatives considered, and early maintenance record are documented below:

Essay Subject
MinIO Is Dead Changes to the upstream project and distribution model
MinIO Is Dead, Long Live MinIO Establishing the fork and its release pipeline
Two months into maintaining a MinIO fork Initial security and maintenance work

License and Trademark

The server remains licensed under the GNU Affero General Public License v3.0. See CREDITS for upstream authorship and attribution. MinIO is a trademark of MinIO, Inc. Silo and pgsty/minio are independent community efforts and are not affiliated with or endorsed by MinIO, Inc.

S
Description
No description provided
Readme AGPL-3.0 134 MiB
Languages
Go 98.8%
Shell 1%
Makefile 0.1%