Silo

Silo

Docker app from junkerderprovinz's Repository

Overview

PGSTY Silo is an S3-compatible object store: a maintained fork of the open-source MinIO server, published by Pigsty after MinIO stopped distributing its community edition. The S3 API, the MINIO_* settings and the on-disk format are unchanged; Pigsty adds security fixes and keeps the full web console. Silo is AGPL-3.0, and this template runs the official image. Why this template exists: started as it comes, the image prints its help text and exits, because it needs to be told to serve a folder. The template starts it as a server on /data with the console on a fixed port, runs it as 99:100 so the files it writes on your share belong to nobody:users instead of root, and makes the credentials required fields, because left empty Silo falls back to the well-known minioadmin:minioadmin account. Ports: 9000 is the S3 endpoint every client connects to. 9001 is the web console. Coming from pgsty/minio or another MinIO container: point Data at the old data folder and keep the same credentials. If that container ran as root, run chown -R nobody:users on the folder first, or Silo stops at startup with "file access denied". The README has the details.
Silo

Validate  Upstream Silo  Image  Unraid  License

An Unraid Community Applications template for PGSTY Silo, the maintained fork of the open-source MinIO server, wrapping the official pgsty/silo image with the settings it needs to start as a server on Unraid.


Table of Contents

  1. Why this template exists
  2. Quick start on Unraid
  3. Connecting a client
  4. Coming from MinIO
  5. Configuration
  6. How it compares to the other object stores here
  7. How AI is used here
  8. Support this project

1. Why this template exists

MinIO stopped shipping its community edition: the repository is in maintenance mode and there are no more images or binaries, only source. Pigsty took the last open-source line and keeps it alive as Silo, with security fixes, multi-arch images and the full web console that MinIO had cut out of its community build. The S3 API, the MINIO_* settings and the on-disk format stay the same; only the product name changed.

Started as it comes, the image does nothing useful on Unraid. Its default command is the bare binary, which prints its help text and exits. It has to be told to serve a folder, and without a fixed console address it puts the web console on a random port. This template starts it as

server /data --console-address ":9001"

It also runs the container as 99:100. The image runs as root by default, which works, but every bucket and object it writes on your share then belongs to root. As 99:100 the files belong to nobody:users like everything else on the array.

The third thing is the credentials. Left empty, Silo starts with the account minioadmin:minioadmin, the one every MinIO tutorial prints, and only warns about it in the log. Here the root user and password are required fields.


2. Quick start on Unraid

Install the template from Community Applications, set a Root User and a Root Password of at least 8 characters, and start it. A shorter password stops the container with MINIO_ROOT_PASSWORD length at least 8 characters.

A working start ends with these lines in the log:

API: http://<container-ip>:9000  http://127.0.0.1:9000
WebUI: http://<container-ip>:9001 http://127.0.0.1:9001

The WebUI button opens the console on port 9001. Log in with the root user and password.


3. Connecting a client

Point any S3 client at port 9000:

Endpoint:   http://<server>:9000
Access key: your Root User
Secret key: your Root Password
Region:     us-east-1        (any value works)

With rclone:

[silo]
type = s3
provider = Minio
endpoint = http://<server>:9000
access_key_id = <your root user>
secret_access_key = <your root password>
rclone mkdir silo:backups
rclone copy ./file.txt silo:backups/

The image ships the MinIO client as mcli, so you can also work from the container console:

mcli alias set local http://127.0.0.1:9000 <root user> <root password>
mcli mb local/backups

For anything beyond your own tools, create a separate user with its own keys in the console instead of handing out the root account.


4. Coming from MinIO

Silo reads the data folder of a MinIO server as it is, .minio.sys included. Point Data at the old folder, keep the old root user and password, and the buckets are there.

One thing to do first: a MinIO container that ran as root left every file owned by root, and Silo running as 99:100 cannot write there. It stops at startup with

FATAL Unable to initialize backend: file access denied

Fix the ownership once, from the Unraid terminal, with the old container stopped:

chown -R nobody:users /mnt/user/appdata/minio/data

(use your own path). I tried this with data written by pgsty/minio, the same project under its old name, and the bucket and a test file came through unchanged. For a jump from an older upstream MinIO release, read the migration guide and keep a copy until you have checked your data.


5. Configuration

Setting Default What it does
Data /mnt/user/appdata/silo/data Where the objects live. Must be writable by 99:100.
Root User (MINIO_ROOT_USER) none The admin account and root access key. Required, at least 3 characters.
Root Password (MINIO_ROOT_PASSWORD) none The admin password and root secret key. Required, at least 8 characters.
S3 API Port 9000 The S3 endpoint.
Console Port 9001 The web console.

The template sets --user 99:100 as an extra parameter and server /data --console-address ":9001" as post arguments. Leave both in place.

Every other MINIO_* variable from the MinIO documentation works unchanged, for example MINIO_SERVER_URL and MINIO_BROWSER_REDIRECT_URL behind a reverse proxy. Add them as variables in the template if you need them. The full list is in the Silo documentation.


6. How it compares to the other object stores here

There are six now, and they solve different problems:

Silo is MinIO, still maintained. If you ran MinIO and want to keep everything as it was, data folder and client settings included, this is the one.

RustFS is a newer S3 object store in Rust, close to MinIO in spirit, but every version so far is a release candidate.

Garage is a plain object store with a web admin panel in the same container, built to replicate across several machines.

SeaweedFS is built for many small files and has a long track record.

VersityGW is not a store at all, it is a gateway: it puts an S3 API in front of a share you already have, and every file stays readable over SMB and NFS at the same time.

JuiceFS splits files into chunks across a database and an object store, in exchange for a file system that several machines can share.


7. How AI is used here

One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.

You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.


8. Support this project

Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue. Problems with Silo itself belong upstream at pgsty/silo.

A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto

Silo itself is PGSTY's work on top of MinIO, AGPL-3.0. What is maintained here is the Unraid template and this page.

Requirements

Set a Root User and a Root Password below, at least 8 characters for the password. Left empty, Silo starts with the default account minioadmin:minioadmin, which everyone knows.

Download Statistics

925,502
Total Downloads

Related apps

Details

Repository
pgsty/silo:latest
Last Updated2026-09-16
First Seen2026-10-07

Runtime arguments

Web UI
http://[IP]:[PORT:9001]
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart=unless-stopped --user 99:100

Template configuration

S3 API PortPorttcp

The S3 endpoint every client (rclone, restic, aws-cli, ...) connects to.

Target
9000
Default
9000
Value
9000
Console PortPorttcp

The web console. This is what WebUI opens. Log in with the root user and password below.

Target
9001
Default
9001
Value
9001
DataPathrw

Where the objects live. Must be writable by 99:100, which is what this template runs the container as. Taking over data from a MinIO container that ran as root: chown -R nobody:users on this folder first.

Target
/data
Default
/mnt/user/appdata/silo/data
Value
/mnt/user/appdata/silo/data
Root UserVariable

The admin account, also the access key for S3 clients. At least 3 characters. Left empty, Silo uses minioadmin.

Target
MINIO_ROOT_USER
Root PasswordVariable

The admin password, also the secret key for S3 clients. At least 8 characters, or Silo stops at startup. Use a generated secret (e.g. openssl rand -hex 24).

Target
MINIO_ROOT_PASSWORD