Why MinIO Community Dropped Its Web UI and How RustFS Can Fill the Gap
The article explains how MinIO's community edition removed its web console via a large PR, outlines the official push toward a commercial product, and provides a step‑by‑step guide to deploying the Rust‑based RustFS as an open‑source alternative with Docker Compose and Nginx HTTPS configuration, concluding with a feature comparison.
MinIO UI removal
On 26 February a pull request titled “simplify console” deleted 114,736 lines of code, removing the web management console from the MinIO community edition. The official response states that users requiring a graphical interface should migrate to the commercial product AiStor, while community users can manage objects with the mc CLI.
RustFS as a MinIO replacement
RustFS is a high‑performance distributed object storage system written in Rust and released under the Apache 2.0 license. The author selected it because Rust provides memory safety and low‑level performance, and the permissive license avoids the restrictions of MinIO’s AGPL v3.
Docker‑Compose deployment
Prepare the following directory layout:
/mnt/rustfs/
├── data/
└── docker-compose.ymlContent of docker-compose.yml:
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs
ports:
- "9000:9000" # API port
- "9001:9001" # Console port
volumes:
- ./data:/data # data storage
environment:
- RUSTFS_ROOT_USER=rustfsadmin
- RUSTFS_ROOT_PASSWORD=rustfsadmin
- RUSTFS_ADDRESS=:9000
- RUSTFS_CONSOLE_ADDRESS=:9001
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_LOG=warn
restart: unless-stoppedStart the service: docker-compose up -d Check container status: docker compose ps Ensure the security group allows inbound traffic on ports 9000 and 9001. The web console is reachable at http://HOST:9001 with default credentials rustfsadmin/rustfsadmin.
HTTPS access via Nginx
To expose RustFS only through HTTPS, modify the compose file to bind the ports to the loopback interface:
ports:
- "127.0.0.1:9000:9000" # API port
- "127.0.0.1:9001:9001" # Console portCreate a DNS A record such as rustfs.yourdomain.cn that points to the server’s public IP (or to yourdomain.cn:9001 when using a reverse proxy). Add the following Nginx configuration (replace the certificate paths with the actual ones issued for yourdomain.cn).
upstream rustfs_console {
server localhost:9001;
}
upstream rustfs_api {
server localhost:9000;
}
# RustFS Console (Web UI)
server {
listen 443 ssl;
server_name rustfs.yourdomain.cn;
ssl_certificate /etc/letsencrypt/live/yourdomain.cn-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.cn-0001/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://rustfs_console;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# RustFS API
server {
listen 443 ssl;
server_name rustfsapi.yourdomain.cn;
ssl_certificate /etc/letsencrypt/live/yourdomain.cn-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.cn-0001/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://rustfs_api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# HTTP → HTTPS redirect
server {
listen 80;
server_name rustfs.yourdomain.cn rustfsapi.yourdomain.cn;
return 301 https://$server_name$request_uri;
}After reloading Nginx, access the console via https://rustfs.yourdomain.cn and verify the HTTPS connection.
Feature comparison
License : MinIO Community – AGPL v3 (restrictive); RustFS – Apache 2.0 (permissive).
Management UI : MinIO – removed from community edition (commercial only); RustFS – built‑in web console.
CLI/API : MinIO – mc CLI; RustFS – REST API (future tooling planned).
Deployment complexity : Both support Docker Compose; RustFS adds optional HTTPS reverse‑proxy step.
Performance & safety : RustFS leverages Rust’s memory‑safe design for inherent safety and high performance.
Community ecosystem : MinIO – larger but increasingly commercial; RustFS – Chinese‑origin project, community still growing.
Current status
RustFS is an early‑stage project; features are being added continuously. Deployments in production should be validated with additional testing.
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.
