一、MinIO 牺牲开源精神走向商业利益
今天部署好minio后打开web界面发现只剩下纯对象存储:
(图来源于小众软件 )
原因是今年2月26号的一个PR以“精简控制台”为由删了114736行代码:
而官方这么说: “对于需要图形界面完成管理的场景,请迁移到我们的商业产品(AiStor),社区用户则可以使用 mc 命令行”。网友对此表示强烈谴责 :)
二、寻找平替,尝试RustFS
RustFS 是一个用 Rust 语言构建的高性能分布式对象存储系统,定位为 MinIO 的替代方案。
Rust的安全性和高性能以及Apache 2.0的开源协议是我将它作为MinIO的平替的主要原因。
因为RustFS是比较新的项目,按照官网的docker部署命令有点问题。
但官方在相关 issue 中已经给了解决方案,下面是我结合该方案并使用docker-compose部署成功的实操记录:
2.1. 准备好以下目录结构:
/mnt/rustfs/
├── data/
└── docker-compose.yml
docker-compose.yml文件内容:
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs
ports:
- "9000:9000" # API 端口
- "9001:9001" # Console 端口
volumes:
- ./data:/data # 数据存储
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-stopped
2.2 /mnt/rustfs/目录下启动。
docker-compose up -d 启动容器
docker compose ps查看状态:
2.3 开放安全组
如果访问不了记得新增安全组,开放9000/9001的端口:
2.4 测试访问
控制台页面访问9001端口:
默认的账号密码:rustfsadmin/rustfsadmin
2.5 配置https
为了安全考虑,我希望服务只能由https协议通过nginx转发来访问,而不能直接通过ip访问:
首先将docker-compose.yml文件做如下改动:
ports:
# - "9000:9000" # API 端口
# - "9001:9001" # Console 端口
- "127.0.0.1:9000:9000" # API 端口
- "127.0.0.1:9001:9001" # Console 端口
然后创建一个子域名 rustfs.yourdomain.cn 映射到 yourdomain.cn:9001,nginx配置如下:
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;
# WebSocket 支持
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
server {
listen 80;
server_name rustfs.yourdomain.cn rustfsapi.yourdomain.cn;
return 301 https://$server_name$request_uri;
}
测试https访问:
总结
随着 MinIO 社区版自 2024 年 2 月起全面移除 Web 管理界面,标志着其加速向商业化闭源演进,对广大习惯图形化管理的用户来说无疑是一种“背刺”。
尽管 MinIO 声称 CLI(如
mc)功能更专业,但对中小企业、个人开发者甚至初学者而言,图形界面不可或缺。
同时,RustFS 作为国产、开源、Rust 编写的分布式对象存储项目,凭借以下优势,已具备成为 MinIO 替代品的潜力:
| 对比项 | MinIO(社区版) | RustFS |
|---|---|---|
| 开源协议 | AGPL v3(限制较多) | Apache 2.0(更宽松) |
| 管理界面 | ✅ 已被移除(需付费) | ✅ 自带 Web 控制台 |
| 命令行支持 | mc | REST API + 后续工具支持 |
| 部署复杂度 | 简单 | 较简单,支持 Docker Compose |
| 性能与安全性 | 高,但维护封闭 | Rust 架构,天生安全高效 |
| 中文社区与生态支持 | 较少(商业倾向) | 正在建设中 |
注意:
RustFS 项目还处于早期阶段,功能在逐步完善,生产环境部署需做额外验证。