Cloud Native 8 min read

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.

Java Architecture Diary
Java Architecture Diary
Java Architecture Diary
Why MinIO Is Going Dark and How RustFs Can Seamlessly Replace It

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/logs

The 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:latest

Step 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: rustfsadmin

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

MigrationDockerSpring BootMinIOObject StorageRustFS
Java Architecture Diary
Written by

Java Architecture Diary

Committed to sharing original, high‑quality technical articles; no fluff or promotional content.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.