Why MinIO Is Going Dark and How RustFs Can Seamlessly Replace It
MinIO has entered maintenance mode, dropping its web console, stopping Docker image updates, and refusing new features, prompting users to migrate to RustFs—a fully compatible, Apache‑2.0 licensed S3 alternative that offers higher performance and easy Docker and Spring Boot integration.
MinIO’s Recent Changes
On December 3, MinIO updated its GitHub README with the notice “This project is currently under maintenance and is not accepting new changes,” meaning no new features, PRs, or guaranteed security fixes.
This project is currently under maintenance and is not accepting new changes.
The community is concerned because the Docker Hub image stopped updating in October and the code has entered maintenance mode.
Background: License and Feature Reduction
2019‑2021: MinIO switched its open‑source license from Apache 2.0 to AGPLv3, which requires source disclosure for network‑served modifications.
June 2025: The community edition’s web console was heavily trimmed, removing user management, policy configuration, bucket management, and monitoring metrics.
October 2025: Docker Hub images were discontinued; the last version contains known CVE vulnerabilities, requiring users to compile from source with Go 1.24+.
December 2025: Official statement confirmed no new features, case‑by‑case security fixes, reduced issue responsiveness, and community support limited to Slack.
Why RustFs Is the Recommended Replacement
RustFs is a community‑driven, Apache 2.0‑licensed object storage that aims for deep compatibility with MinIO, preserving the full web console and continuing Docker image updates.
License: Apache 2.0 (commercial‑friendly) vs. MinIO’s AGPLv3.
Web console: Fully retained in RustFs, removed in MinIO.
Docker images: Actively maintained for RustFs.
Performance: Benchmarks show RustFs achieves 2.3× higher throughput for small objects compared to MinIO.
Technical Differences Between Go and Rust for Storage
Go’s garbage collector can cause latency spikes under high load, whereas Rust’s compile‑time memory management eliminates GC pauses, making Rust better suited for latency‑sensitive storage workloads.
Deploying RustFs with Docker
Step 1: Prepare Directories
mkdir -p ~/rustfs/data ~/rustfs/logs
chown -R 10001:10001 ~/rustfs/data ~/rustfs/logsThe RustFs container runs as UID 10001, so permissions must be set accordingly.
Step 2: Run the Container
docker run -d --name rustfs \
-p 9000:9000 -p 9001:9001 \
-v ~/rustfs/data:/data \
-v ~/rustfs/logs:/logs \
docker.1ms.run/rustfs/rustfs:latestStep 3: Verify the Installation
Open http://localhost:9001 and log in with rustfsadmin / rustfsadmin. The full management UI, which MinIO no longer provides, should be visible.
Ports 9000/9001 remain the same as MinIO, easing migration.
The MinIO client ( mc) works directly against RustFs.
Integrating RustFs into a Spring Boot Application
Add the Dependency
<dependency>
<groupId>com.pig4cloud.plugin</groupId>
<artifactId>oss-spring-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>This starter supports all S3‑compatible storage backends, including MinIO, RustFs, Alibaba Cloud OSS, and Tencent Cloud COS.
Configuration File
oss:
endpoint: http://localhost:9000
access-key: rustfsadmin
secret-key: rustfsadminThe only differences from a MinIO setup are the endpoint and credentials.
Code Example (No Changes Required)
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private OssTemplate ossTemplate;
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
String objectName = UUID.randomUUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
ossTemplate.putObject("testbucket", objectName, file.getInputStream());
return objectName;
}
@GetMapping("/download")
public void download(@RequestParam String objectName, HttpServletResponse response) throws IOException {
try (InputStream in = ossTemplate.getObject("testbucket", objectName)) {
response.setContentType("application/octet-stream");
IOUtils.copy(in, response.getOutputStream());
}
}
}The code works unchanged because both MinIO and RustFs implement the S3 API; only the endpoint configuration needs updating.
Conclusion
MinIO’s shift to maintenance mode signals a change in the open‑source object‑storage landscape. RustFs, with its Apache 2.0 license, full feature set, and superior performance, offers a low‑friction migration path—simply adjust three configuration lines and redeploy.
The open‑source ecosystem thrives on alternatives; when one project closes, another opens the door.
Java Architecture Diary
Committed to sharing original, high‑quality technical articles; no fluff or promotional content.
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.
