All apps · 0 apps
Silo
Docker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
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
- Why this template exists
- Quick start on Unraid
- Connecting a client
- Coming from MinIO
- Configuration
- How it compares to the other object stores here
- How AI is used here
- 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.
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
Download Statistics
Related apps
Explore more like this
Explore allLinks
Details
pgsty/silo:latestRuntime arguments
- Web UI
http://[IP]:[PORT:9001]- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart=unless-stopped --user 99:100
Template configuration
The S3 endpoint every client (rclone, restic, aws-cli, ...) connects to.
- Target
- 9000
- Default
- 9000
- Value
- 9000
The web console. This is what WebUI opens. Log in with the root user and password below.
- Target
- 9001
- Default
- 9001
- Value
- 9001
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
The admin account, also the access key for S3 clients. At least 3 characters. Left empty, Silo uses minioadmin.
- Target
- MINIO_ROOT_USER
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