RustFS
lastmod 2026-08-19created 2026-03-126 edits
🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting migration and coexistence with other S3-compatible platforms such as MinIO and Ceph.
Installing RustFS with Docker
RustFS is a high-performance, 100% S3-compatible open-source distributed object storage system.
In Single Node Single Disk (SNSD) deployment mode, the backend uses zero erasure coding with no additional data redundancy, making it suitable for local testing and small-scale scenarios.
This page explains how, based on the official RustFS Linux binary package, to package RustFS and its runtime environment into a container with a custom Dockerfile, and to configure data volumes and environment variables for one-click service startup.
Prerequisites
- Host requirements
- Docker is installed (20.10 or later) and can download images and run containers normally.
-
/mnt/rustfs/datalocal path for mounting object data (or a custom path)
- Network and firewall
- Make sure host port
9000is open for external access (or that it matches your custom port).
- Prepare the configuration file
- Define the listening port, administrator account, data path, etc. on the host:
/etc/rustfs/config.toml
- Define the listening port, administrator account, data path, etc. on the host:
- The RustFS container runs as the non-root
rustfsuser ID (10001). If you run Docker and mount a host directory into the Docker container with-v, make sure the owner of the host directory has been changed to10001. Otherwise, a permission denied error will occur.
Full parameter configuration example
docker run -d \
--name rustfs_container \
-p 9000:9000 \
-p 9001:9001 \
-v /mnt/rustfs/data:/data \
-e RUSTFS_ACCESS_KEY=rustfsadmin \
-e RUSTFS_SECRET_KEY=rustfsadmin \
-e RUSTFS_CONSOLE_ENABLE=true \
-e RUSTFS_SERVER_DOMAINS=example.com \
rustfs/rustfs:latest \
--address :9000 \
--console-enable \
--server-domains example.com \
--access-key rustfsadmin \
--secret-key rustfsadmin \
/data
Blocking access to /health when using Caddy
Apply the Caddyfile as follows:
How to create buckets in docker compose
docker compose run --rm --entrypoint sh createbucket -c "
aws --endpoint-url http://rustfs:9000 s3 mb s3://datasets;
aws --endpoint-url http://rustfs:9000 s3 mb s3://registry"
Troubleshooting
RequestTimeTooSkewed
{"ok":false,"code":"INVALID_CREDENTIALS","message":"S3 list failed: 403 <?xml version=\"1.0\" encoding=\"UTF-8\"?><Error><Code>RequestTimeTooSkewed</Code><Message>request time is too far from server time</Message></Error>"}
This is not a credentials problem but a clock problem.
SigV4 rejects a request with 403 if the difference between the X-Amz-Date in the signature and the server time exceeds ±15 minutes. In other words, just make the current time correct everywhere.
List of Object Storage Softwares
- Cloud Service