All apps · 0 apps
RustFS
OfficialDocker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
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
- Why this template exists
- Quick start on Unraid
- Connecting a client
- Configuration
- How it compares to the other object stores here
- How AI is used here
- 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.
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.
Requirements
Download Statistics
Related apps
Explore more like this
Explore allLinks
Details
rustfs/rustfs: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 built-in web console. This is what WebUI opens.
- 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.
- Target
- /data
- Default
- /mnt/user/appdata/rustfs/data
- Value
- /mnt/user/appdata/rustfs/data
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
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
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
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
- *
How much RustFS writes to its log: error, warn, info, debug or trace.
- Target
- RUSTFS_OBS_LOGGER_LEVEL
- Default
- warn
- Value
- warn