Silo: S3 Object Storage
Silo is S3-compatible object storage maintained by Pigsty. Since August 2026, app/silo replaces the former app/minio for single-node, application-specific storage. Use the MINIO module for shared backup repositories, bucket and user initialization, monitoring, TLS, or multi-node clusters.
The matching app/silo/ and conf/app/silo.yml are available in the main repository. Use both from the same checkout.
Configuration Template
The app/silo configuration template provides a single-node deployment:
The default S3 API is http://<IP>:9000, and the web console is http://<IP>:9001. With DNS configured, the sss.pigsty and silo.pigsty portals are also available.
Run Compose Directly
On a host with Docker Compose installed:
| Parameter | Default | Purpose |
|---|---|---|
SILO_IMAGE | docker.io/pgsty/silo:latest | Application image; pin a tag or digest as needed |
SILO_ROOT_USER | siloadmin | Root user; change before deployment |
SILO_ROOT_PASSWORD | S3User.Silo | Root password; change before deployment |
SILO_DATA | /data/silo | Persistent object directory on the host |
SILO_PORT | 9000 | S3 API host port |
SILO_CONSOLE_PORT | 9001 | Console host port |
SILO_BROWSER_REDIRECT_URL | Empty string | Full external console URL |
When accessing the console through a non-default port or reverse proxy, set SILO_BROWSER_REDIRECT_URL, for example https://silo.example.com or http://silo.example.com:19001. The container cannot infer the external hostname and published port.
The APP exposes SILO_* settings; Compose maps credentials to compatible MINIO_ROOT_* container variables. When sharing a host with the native MINIO module, use separate data directories and ports.
Operations and Data
Objects reside in SILO_DATA and need separate backups; recreating a container is not a data backup. Before migrating from app/minio, preserve the original data and configuration, prepare the new deployment, and verify object reads and writes. Never run two services against the same data directory.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)