MinIO 社区版被故意阉割,Web管理功能全面移除。我来试试国产RustFS

11,344 阅读3分钟

一、MinIO 牺牲开源精神走向商业利益

今天部署好minio后打开web界面发现只剩下纯对象存储

image.png

(图来源于小众软件

原因是今年2月26号的一个PR以“精简控制台”为由删了114736行代码:

image.png

而官方这么说: “对于需要图形界面完成管理的场景,请迁移到我们的商业产品(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 启动容器

image.png

docker compose ps查看状态:

image.png

2.3 开放安全组

如果访问不了记得新增安全组,开放9000/9001的端口:

image.png

2.4 测试访问

控制台页面访问9001端口:

默认的账号密码:rustfsadmin/rustfsadmin

image.png

image.png

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:9001nginx配置如下:

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访问:

image.png

总结

随着 MinIO 社区版自 2024 年 2 月起全面移除 Web 管理界面,标志着其加速向商业化闭源演进,对广大习惯图形化管理的用户来说无疑是一种“背刺”。

尽管 MinIO 声称 CLI(如 mc)功能更专业,但对中小企业、个人开发者甚至初学者而言,图形界面不可或缺

同时,RustFS 作为国产、开源、Rust 编写的分布式对象存储项目,凭借以下优势,已具备成为 MinIO 替代品的潜力:

对比项MinIO(社区版)RustFS
开源协议AGPL v3(限制较多)Apache 2.0(更宽松)
管理界面✅ 已被移除(需付费)✅ 自带 Web 控制台
命令行支持mcREST API + 后续工具支持
部署复杂度简单较简单,支持 Docker Compose
性能与安全性高,但维护封闭Rust 架构,天生安全高效
中文社区与生态支持较少(商业倾向)正在建设中

注意RustFS 项目还处于早期阶段,功能在逐步完善,生产环境部署需做额外验证。