Why RustFS Is Emerging as the Next‑Gen Open‑Source S3‑Compatible Storage
After MinIO entered maintenance mode in December 2025, RustFS—a Rust‑written, Apache‑2.0 licensed, high‑performance distributed object storage—offers memory‑safe design, cross‑platform Docker deployment, S3 compatibility, and seamless integration with the Webman PHP framework, providing a compelling alternative for cloud‑native environments.
Background
On December 3, 2025 MinIO announced it was moving to maintenance mode, ceasing new feature development and stopping active issue and PR handling, which left many users searching for a replacement.
Introducing RustFS
RustFS is a high‑performance, open‑source, S3‑compatible distributed object storage written in Rust and released under the Apache‑2.0 license. It runs on virtually any operating system and CPU architecture (x86, ARM, etc.) and benefits from Rust’s compile‑time memory‑safety guarantees, eliminating runtime garbage‑collection pauses and memory‑leak risks.
Key Advantages over MinIO
Language: Rust vs. Go.
License: Apache‑2.0 vs. AGPL‑v3.
Web console: Fully retained in RustFS, removed in MinIO.
Docker image: Actively maintained for RustFS.
Performance: Benchmarks show up to 2.3× higher throughput than MinIO.
Peer‑node design: All storage nodes are equal, eliminating single‑point‑of‑failure risk and enabling linear scaling to exabyte capacities, ideal for cloud‑native workloads.
Quick Start with Docker
docker run -d \
--name rustfs \
-p 9000:9000 \
-p 9001:9001 \
-v /data:/data \
-e RUSTFS_VOLUMES=/data/rustfs0,/data/rustfs1,/data/rustfs2,/data/rustfs3 \
-e RUSTFS_ACCESS_KEY=rustfsadmin \
-e RUSTFS_SECRET_KEY=rustfsadmin \
-e RUSTFS_CONSOLE_ENABLE=true \
rustfs/rustfs:latestAfter the container starts, open http://localhost:9001 and log in with username rustfsadmin and password rustfsadmin.
Integration with Webman (PHP framework)
Install the storage plugin via Composer: composer require tinywan/storage Install the S3 driver: composer require league/flysystem-aws-s3-v3 Example PHP code to upload a file to RustFS:
use Tinywan\Storage\Storage;
$res = Storage::uploadFile(Storage::MODE_S3);
var_dump(json_encode($res));Configuration details (replace the endpoint with your RustFS address, e.g., http://192.168.3.29:9000) are illustrated in the image below.
Note: The access domain and endpoint must point to the API service address, such as http://192.168.3.29:9000 .
Sample Upload Response
{
"code": 0,
"msg": "ok",
"data": [
{
"key": "file",
"origin_name": "example.png",
"save_name": "108b7f4d06ad88f608df22a4888a5ba7.png",
"save_path": "/108b7f4d06ad88f608df22a4888a5ba7.png",
"url": "http://192.168.3.29:9000/108b7f4d06ad88f608df22a4888a5ba7.png",
"unique_id": "108b7f4d06ad88f608df22a4888a5ba7",
"size": 24556,
"mime_type": "image/png",
"extension": "png"
}
]
}Official installation documentation can be found at https://docs.rustfs.com.cn/installation/docker/.
Open Source Tech Hub
Sharing cutting-edge internet technologies and practical AI resources.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
