MinIO 不能通过宝塔软件商店安装,需手动部署:创建独立用户、指定非/www/wwwroot数据目录、配置systemd服务文件并启用,反向代理须禁用Gzip和强制HTTPS,同时开放9000端口。

MinIO 在宝塔里不能直接用“软件商店”装
宝塔面板的软件商店没有 MinIO,强行用一键部署脚本容易权限错乱、端口冲突或启动失败。MinIO 是 Go 编写的单二进制文件服务,依赖系统级 systemd 管理和固定用户运行,而宝塔默认以 www 用户跑 Web 服务,两者权限模型不兼容。
实操建议:
- 不要在宝塔「软件管理」里搜 MinIO,也别信第三方打包的“MinIO 插件”——多数没做用户隔离和目录权限控制
- 用宝塔的「终端」或 SSH 进去手动部署,全程用独立用户(如
minio-user)运行,避免和 Nginx/PHP 进程混权 - 数据目录必须设在非
/www/wwwroot/下(例如/data/minio),否则宝塔备份或清理可能误删存储桶数据
启动 MinIO 前必须配好 systemd 服务文件
直接前台运行 ./minio server /data/minio 看似简单,但宝塔重启、系统重启后服务就掉了,也没日志轮转和自动拉起。必须用 systemd 托管。
实操建议:
- 创建服务文件:
/etc/systemd/system/minio.service,内容里User=minio-user和WorkingDirectory=/data/minio必须显式指定 -
Environment="MINIO_ROOT_USER=admin"和"MINIO_ROOT_PASSWORD=your_strong_password"要写在 service 文件里,不能靠命令行传——systemd 不解析 shell 变量 - 启动后执行
sudo systemctl daemon-reload && sudo systemctl enable minio && sudo systemctl start minio,再用sudo systemctl status minio看是否 active (running)
反向代理到 MinIO 要关掉宝塔的“强制 HTTPS”和“Gzip”
MinIO 控制台和 API 都依赖精确的 Header 和二进制流传输,宝塔默认开启的 Gzip 会破坏 application/octet-stream 响应,强制 HTTPS 则让本地调试时的自签名证书报错(尤其用 mc 客户端连接时卡在 TLS handshake)。
实操建议:
- 新建站点时,“SSL”选项选“不启用”,反代路径填
/,目标 URL 填http://127.0.0.1:9000(MinIO 默认端口) - 在「反向代理」设置里,手动删掉所有已有的“Gzip”相关规则,并把 “Proxy Buffering” 设为
off - 如果必须上 HTTPS,用 Let’s Encrypt 申请证书后,在反代配置中加这两行:
proxy_ssl_verify off;和proxy_http_version 1.1;,否则mc alias set会连不上
MinIO 控制台访问慢或上传失败,大概率是宝塔防火墙没放行 9000 端口
即使开了反向代理,MinIO 的后台健康检查、分片上传、浏览器直传(Presigned URL)仍会直连 9000 端口。宝塔自带防火墙默认只放行 80/443/20/21/22,9000 被拦住就会出现“Upload stalled”或“Connection refused”。
实操建议:
- 进宝塔「安全」页面,手动添加放行端口:
9000(TCP),不是“9000-9001”这种范围——MinIO 不用额外端口 - 云服务器(如阿里云、腾讯云)还需去控制台安全组补一条入方向规则,协议 TCP,端口 9000
- 验证方式:在服务器上执行
curl -v http://localhost:9000/minio/health/live,返回200 OK才算通
MinIO 的核心是确定性行为,不是“配置越多越稳”。宝塔能帮的只是反代和基础运维,真正的稳定性取决于你有没有把用户、目录、端口、证书这四件事钉死。漏掉任何一个,后面排查上传中断或登录 502 就得翻两小时日志。










