# PGSTY SILO Documentation

> pgsty/silo 20260806 Documentation

---

LLMS index: [llms.txt](/llms.txt)

---

<div class="td-callout td-callout--warning" role="note">
  <div class="td-callout__title"><i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"></i><span class="td-callout__label">Warning</span></div>
  <div class="td-callout__body">
<p><strong>SILO is a MinIO fork maintained by the Pigsty community.</strong> It is not affiliated with, endorsed by, or sponsored by MinIO, Inc. “MinIO” is a trademark of MinIO, Inc., used here only to identify the upstream project. See <a href="/about/attribution/">Attribution</a> for source and licensing details.</p>
  </div>
</div><p>SILO gives existing MinIO deployments an open release and security-maintenance path while preserving the S3 API, configuration, and operational contracts that make migration practical. This site covers installation, migration, administration, development, releases, and compatibility boundaries.</p>
<h2 id="quickstart">Quickstart<a class="td-heading-self-link" href="#quickstart" aria-label="Link to this heading"></a>
</h2>
<div class="td-tabs td-tabs--shortcode" id="td-tabs-6666cd76-0" data-td-tabs data-td-tabs-group="docker-linux-packages-existing-minio-kubernetes" data-td-tabs-default="docker">
  <div class="td-tabs__list" role="tablist" aria-label="Tabs">
    <button class="td-tabs__tab" type="button" role="tab" id="docker-linux-packages-existing-minio-kubernetes-docker-tab" aria-controls="docker-linux-packages-existing-minio-kubernetes-docker" aria-selected="true" tabindex="0" data-td-tabs-value="docker">Docker</button>
    <button class="td-tabs__tab" type="button" role="tab" id="docker-linux-packages-existing-minio-kubernetes-linux-packages-tab" aria-controls="docker-linux-packages-existing-minio-kubernetes-linux-packages" aria-selected="false" tabindex="-1" data-td-tabs-value="linux-packages">Linux packages</button>
    <button class="td-tabs__tab" type="button" role="tab" id="docker-linux-packages-existing-minio-kubernetes-existing-minio-tab" aria-controls="docker-linux-packages-existing-minio-kubernetes-existing-minio" aria-selected="false" tabindex="-1" data-td-tabs-value="existing-minio">Existing MinIO</button>
    <button class="td-tabs__tab" type="button" role="tab" id="docker-linux-packages-existing-minio-kubernetes-kubernetes-tab" aria-controls="docker-linux-packages-existing-minio-kubernetes-kubernetes" aria-selected="false" tabindex="-1" data-td-tabs-value="kubernetes">Kubernetes</button>
  </div>
  <div class="td-tabs__panel" id="docker-linux-packages-existing-minio-kubernetes-docker" role="tabpanel" aria-labelledby="docker-linux-packages-existing-minio-kubernetes-docker-tab" tabindex="0" data-td-tabs-value="docker" data-td-tabs-active>
    <div class="td-tabs__panel-title" aria-hidden="true">Docker</div>
    <div class="td-tabs__panel-body"><p>The commands below pin the current SILO server release. Example credentials are suitable only for a local evaluation.</p>
<div class="td-steps td-max-width-on-larger-screens">
<h3 id="quickstart-start">Start SILO<a class="td-heading-self-link" href="#quickstart-start" aria-label="Link to this heading"></a>
</h3>
<div class="td-code td-code--untitled" id="td-code-6666cd76-tabs0-docker-fence-0" data-td-code data-td-code-auto-id
     data-td-language="shell" data-td-line-count="7"><div class="td-code__utilities td-code__utilities--compact">
  <button class="td-code__copy" type="button" hidden data-td-code-copy
          data-td-code-target="td-code-6666cd76-tabs0-docker-fence-0" data-td-copy-mode="all"
          data-td-label-copy="Copy code"
          data-td-label-copied="Copied"
          data-td-label-error="Copy failed"
          aria-label="Copy code" title="Copy code">
    <i class="fa-regular fa-copy" aria-hidden="true"></i>
  </button>
</div>
  <div class="td-code__viewport" id="td-code-6666cd76-tabs0-docker-fence-0-viewport" data-td-code-viewport><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">docker run -d --name silo <span class="se">\
</span></span></span><span class="line"><span class="cl">  -p 9000:9000 -p 9001:9001 <span class="se">\
</span></span></span><span class="line"><span class="cl">  -e <span class="nv">MINIO_ROOT_USER</span><span class="o">=</span>silo-admin <span class="se">\
</span></span></span><span class="line"><span class="cl">  -e <span class="nv">MINIO_ROOT_PASSWORD</span><span class="o">=</span>replace-with-a-strong-secret <span class="se">\
</span></span></span><span class="line"><span class="cl">  -v silo-data:/data <span class="se">\
</span></span></span><span class="line"><span class="cl">  pgsty/silo:RELEASE.2026-08-06T00-00-00Z <span class="se">\
</span></span></span><span class="line"><span class="cl">  server /data --console-address :9001</span></span></code></pre></div></div>
  <span class="visually-hidden" role="status" aria-live="polite" data-td-code-status></span>
</div>
<h3 id="quickstart-check">Check readiness<a class="td-heading-self-link" href="#quickstart-check" aria-label="Link to this heading"></a>
</h3>
<div class="td-code td-code--untitled" id="td-code-6666cd76-tabs0-docker-fence-1" data-td-code data-td-code-auto-id
     data-td-language="shell" data-td-line-count="1"><div class="td-code__utilities td-code__utilities--compact">
  <button class="td-code__copy" type="button" hidden data-td-code-copy
          data-td-code-target="td-code-6666cd76-tabs0-docker-fence-1" data-td-copy-mode="all"
          data-td-label-copy="Copy code"
          data-td-label-copied="Copied"
          data-td-label-error="Copy failed"
          aria-label="Copy code" title="Copy code">
    <i class="fa-regular fa-copy" aria-hidden="true"></i>
  </button>
</div>
  <div class="td-code__viewport" id="td-code-6666cd76-tabs0-docker-fence-1-viewport" data-td-code-viewport><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">docker <span class="nb">exec</span> silo silo healthcheck ready</span></span></code></pre></div></div>
  <span class="visually-hidden" role="status" aria-live="polite" data-td-code-status></span>
</div>
<p>Exit code <code>0</code> means the local server is ready. The probe is built into every SILO binary and does not require a second client inside the container.</p>
<h3 id="quickstart-console">Open the Console<a class="td-heading-self-link" href="#quickstart-console" aria-label="Link to this heading"></a>
</h3>
<p>Visit <a href="http://127.0.0.1:9001">http://127.0.0.1:9001</a> and sign in with the credentials supplied above. Before production use, enable TLS, choose unique credentials, pin a tested image tag or digest, and test backup restoration.</p>
</div>
<p>See the <a href="/operations/deployments/baremetal-deploy-minio-as-a-container/">container deployment guide</a> for persistent host paths, service management, and production considerations.</p>
</div>
  </div>
  <div class="td-tabs__panel" id="docker-linux-packages-existing-minio-kubernetes-linux-packages" role="tabpanel" aria-labelledby="docker-linux-packages-existing-minio-kubernetes-linux-packages-tab" tabindex="0" data-td-tabs-value="linux-packages">
    <div class="td-tabs__panel-title" aria-hidden="true">Linux packages</div>
    <div class="td-tabs__panel-body"><p>Use <a href="/download/#server">Download &amp; Install</a> to select the RPM, DEB, APK, or standalone archive for your architecture. Published release assets include SHA-256 checksums and build-provenance attestations.</p>
<p>Native packages install the server as <code>/usr/bin/silo</code>; the service keeps the established <code>MINIO_*</code> environment-variable contract. Review the <a href="/compatibility/binary/">binary and package compatibility notes</a> before replacing an existing <code>minio</code> package.</p>
</div>
  </div>
  <div class="td-tabs__panel" id="docker-linux-packages-existing-minio-kubernetes-existing-minio" role="tabpanel" aria-labelledby="docker-linux-packages-existing-minio-kubernetes-existing-minio-tab" tabindex="0" data-td-tabs-value="existing-minio">
    <div class="td-tabs__panel-title" aria-hidden="true">Existing MinIO</div>
    <div class="td-tabs__panel-body"><p>Read the <a href="/compatibility/migration/">migration guide</a> before changing images or binaries. Preserve the data volumes and configuration, stop every node running the old binary, and then start every node on the same pinned SILO release. Do not perform a mixed-binary rolling migration, and never use <code>docker compose down -v</code> on data you intend to keep.</p>
</div>
  </div>
  <div class="td-tabs__panel" id="docker-linux-packages-existing-minio-kubernetes-kubernetes" role="tabpanel" aria-labelledby="docker-linux-packages-existing-minio-kubernetes-kubernetes-tab" tabindex="0" data-td-tabs-value="kubernetes">
    <div class="td-tabs__panel-title" aria-hidden="true">Kubernetes</div>
    <div class="td-tabs__panel-body"><p>The archived MinIO Operator <code>v7.1.1</code> can run a SILO Tenant when its image is overridden to <code>pgsty/silo</code> with a tested tag or digest. Follow the <a href="/operations/deployments/k8s-deploy-minio-tenant-helm-on-kubernetes/">Tenant Helm guide</a> and treat that Operator version as a frozen compatibility baseline, not an actively maintained dependency.</p>
</div>
  </div>
</div>
