RustFS

RustFS

Official

Docker app from junkerderprovinz's Repository

Overview

RustFS is an S3-compatible object store written in Rust, Apache-2.0, and one of the alternatives people have been looking at since MinIO's open edition stopped moving. This template runs the official image with the two settings it needs on Unraid. THIS IS A PRE-RELEASE. RustFS has published a hundred releases and not one of them is stable: alphas, betas and release candidates only. Do not put data here that exists nowhere else. Why this template exists: started as it comes, the container does not run on Unraid at all. It runs as its own built-in user id 10001, so on a share owned by nobody:users it cannot write and dies at startup with "Permission denied". This template runs it as 99:100 instead, which fixes it. It also makes the credentials required fields, because without them the image falls back to a built-in default account and says so twice in its own log. Ports: 9000 is the S3 endpoint every client connects to. 9001 is the built-in web console. First start: the log runs to a handful of warnings and then goes quiet, which is what a working start looks like here. There is no "server is listening" line. If you see "Permission denied" instead, the Data folder is not writable by 99:100, or the Logs folder is mapped and is not.
RustFS

Validate  Upstream RustFS  Image  Unraid  License

An Unraid Community Applications template for RustFS, an S3-compatible object store written in Rust, wrapping the official rustfs/rustfs image with the two settings it needs to run here at all.

This is a pre-release. RustFS has published a hundred releases and not one of them is stable: alphas, betas and release candidates only. Do not put data here that exists nowhere else.


Table of Contents

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

1. Why this template exists

Started as it comes, the official image does not run on Unraid. It runs as its own built-in user id 10001, so on a share owned by nobody:users it cannot write and dies during startup:

[FATAL] Server runtime failed: Io error: Permission denied (os error 13)

This template runs the container as 99:100 instead, which is all it takes. That single flag is the difference between a container that never starts and one that works.

The second thing it fixes is the credentials. Left alone, RustFS falls back to a built-in default account that is identical in every copy of the image, and it says so twice in its own log:

Detected default root credentials; set RUSTFS_ACCESS_KEY and RUSTFS_SECRET_KEY
to non-default values for production deployments

Here they are required fields, so you cannot start it by accident with the account everyone else has. Left empty the container stops and says so; only removing the fields entirely brings the default account back.


2. Quick start on Unraid

Install the template from Community Applications, set an access key and a secret key, and start it. The Data folder has to be writable by 99:100, which is the default for anything under /mnt/user/appdata.

A working start runs to a handful of warnings and then goes quiet. There is no "server is listening" line, so do not wait for one. If you see Permission denied instead, the Data folder is not writable by 99:100, or you mapped the Logs folder and that one is not.


3. Connecting a client

Point any S3 client at port 9000:

Endpoint:   http://<server>:9000
Access key: whatever you set as RUSTFS_ACCESS_KEY
Secret key: whatever you set as RUSTFS_SECRET_KEY
Region:     us-east-1        (any value works)

With rclone:

rclone mkdir rustfs:backups
rclone copy ./file.txt rustfs:backups/
rclone ls rustfs:backups

Port 9001 is the built-in web console, which is what the WebUI button opens.


4. Configuration

Variable Default What it does
RUSTFS_ACCESS_KEY none The access key your S3 clients use. Required: left empty, the container stops with RUSTFS_ACCESS_KEY must not be empty.
RUSTFS_SECRET_KEY none The secret key. Required, same as above.
RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS * Which origins the web console accepts. The image ships with any.
RUSTFS_OBS_LOGGER_LEVEL warn error, warn, info, debug or trace.

The template also sets --user 99:100 as an extra parameter. Do not remove it.

The Logs folder is deliberately left unmapped. Map it and RustFS writes its log to a file there, which leaves only three lines in the container log and makes Unraid's log view close to useless.


5. How it compares to the other object stores here

There are five now, and they solve different problems:

RustFS is a plain S3 object store. Objects go in, objects come out, and the folder it writes to is its own business. Closest in spirit to MinIO, and the reason people are looking at it.

Garage is also a plain object store, but it comes with a web admin panel in the same container and has a stable release behind it. If you want an object store today and do not need RustFS specifically, this is the one.

SeaweedFS is the other established one here, built for many small files and with 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. More moving parts, and the data folder is not browsable, in exchange for a file system that several machines can share.


6. 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.


7. Support this project

Questions, bugs, ideas? GitHub issues →.

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

Install RustFS on Unraid in a few clicks.

Find RustFS in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for RustFS Review the template variables and paths Click Install

Requirements

Set an Access Key and Secret Key below. Left empty the container stops at startup, and removed entirely RustFS falls back to a built-in default account that is the same in every copy of the image. This is a pre-release: keep a second copy of anything you store here.

Download Statistics

10,487,963
Total Downloads

Related apps

Details

Repository
rustfs/rustfs:latest
Last Updated2026-09-11
First Seen2026-09-17

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 built-in web console. This is what WebUI opens.

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.

Target
/data
Default
/mnt/user/appdata/rustfs/data
Value
/mnt/user/appdata/rustfs/data
LogsPathrw

Optional, and deliberately empty by default. Mapped, RustFS writes its log to a file there and the container log keeps only three lines, so Unraid's log view shows you almost nothing. Unmapped, everything goes to the container log where you can read it.

Target
/logs
Access KeyVariable

The access key your S3 clients use. Required: left empty, the container stops at startup with 'RUSTFS_ACCESS_KEY must not be empty'. Removing the field entirely is worse, because then RustFS uses its built-in default account, identical in every copy of the image.

Target
RUSTFS_ACCESS_KEY
Secret KeyVariable

The secret key, paired with the access key above. Use a real generated secret (e.g. openssl rand -hex 24), not a short password.

Target
RUSTFS_SECRET_KEY
Console CORS OriginsVariable

Which origins the web console accepts. The image ships with * (any). Narrow it to your own address if the console is reachable from outside your network.

Target
RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS
Default
*
Value
*
Log LevelVariable

How much RustFS writes to its log: error, warn, info, debug or trace.

Target
RUSTFS_OBS_LOGGER_LEVEL
Default
warn
Value
warn