Skip to content

Silo: S3 Object Storage

Deploy standalone Silo object storage with Docker Compose, providing an S3 API and web console.

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:

./configure -c app/silo
vi pigsty.yml              # update passwords, domains, and data directories
./deploy.yml
./docker.yml -l silo
./app.yml -l silo

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:

cd ~/pigsty/app/silo
vi .env
make up
make health
ParameterDefaultPurpose
SILO_IMAGEdocker.io/pgsty/silo:latestApplication image; pin a tag or digest as needed
SILO_ROOT_USERsiloadminRoot user; change before deployment
SILO_ROOT_PASSWORDS3User.SiloRoot password; change before deployment
SILO_DATA/data/siloPersistent object directory on the host
SILO_PORT9000S3 API host port
SILO_CONSOLE_PORT9001Console host port
SILO_BROWSER_REDIRECT_URLEmpty stringFull 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

make view     # show access endpoints
make log      # view logs
make info     # inspect container status
make health   # check S3 readiness and the console HTTP endpoint
make stop     # stop the service
make clean    # remove containers, retaining host data
make pull     # pull the configured image
make save     # save the image to /tmp/docker/silo.tgz
make load     # load the cached image

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?