最终我未实装MinIO!建议先看完整篇笔记或者看别人的文章来了解。因为我部署完后发现MinIO官方改变了策略,社区版的WebUI功能被极大幅度削减,要完成操作需要使用命令行工具mc
(MinIO Client)而不是图形化界面。所以我终止了实装,但我还是会把整个部署笔记写完,包括使用mc
命令部分的操作(其实挺简单的,有文档)。不过我没有再深入的测试了,所以仅供参考。我后面部署了RustFS
具体笔记可以参考我的另外一篇文章。
前言
因为打算将博客从WordPress框架迁移到Hexo框架,但是里面文章的图片都是通过媒体库来完成的所以打算再搭建一个图床,现将文章的图片都手动替换掉,然后在准备做迁移的工作。选择MinIO也是因为主机配置太低了,所以只能优先选择一些比较轻量化的项目了。。。
因为是边操作边写的,所以可能会有些问题。提后话:哈哈,真出问题了=、=
使用docker compose部署
docker,docker compose的安装这里不讲,若需要可以参考别人的文章或者去看我的另外一片笔记里面有记录下迁移主机WordPress笔记
。
提供下yml文件,仅供参考:
这里重点说一下版本,image: minio/minio:RELEASE.2025-04-22T22-12-26Z
这个版本据说是最后一个没有削减社区版WebUI功能的版本,但我并没有实际测试。之后使用docker compose up -d
启动容器即可。
services:
minio:
image: minio/minio:latest
container_name: minio_server
restart: unless-stopped
environment:
# 修改为你自己的高强度用户名和密码
MINIO_ROOT_USER: YOUR_ROOT_USER
MINIO_ROOT_PASSWORD: YOUR_ROOT_PASSWORD
volumes:
- minio_data:/data
ports:
# API 端口,S3 客户端(如 PicGo)将连接此端口
- "9000:9000"
# Web 控制台端口
- "9001:9001"
command: server /data --console-address ":9001" #启动命令
volumes:
minio_data:
Nginx反代设置
我是在主机上安装了Nginx的,如果不需要域名的话也可以直接IP+上面设置的端口访问,跳过这一部分即可。域名请自行替换成自己的域名,需要两个一个给API,一个是控制台网页。
API的反代文件参考如下:
主要看有注释的地方,这里主要就是增加了对S3协议的支持和超时缓冲等等的配置,这个是为图床专门做准备的。处理大文件你可以设置成0,代表无上限。
server {
listen 80;
listen [::]:80;
server_name xxx.xxx.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name xxx.xxx.com;
ssl_certificate /etc/xxxx.pem;
ssl_certificate_key /etc/xxxx.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS;
location / {
proxy_pass http://127.0.0.1:9000;
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;
# 增加 keepalive 超时时间,对 S3 协议友好
proxy_http_version 1.1;
proxy_set_header Connection "";
# 添加超时和缓冲配置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
# 处理大文件上传
client_max_body_size 100M;
proxy_request_buffering off;
}
}
控制台的反代文件参考如下:
主要看有注释的地方,这里主要是增加了WebSocket的支持,防止超时等
server {
listen 80;
listen [::]:80;
server_name xxx-xxx.xxx.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name xxx-xxx.xxx.com;
ssl_certificate /etc/xxxx.pem;
ssl_certificate_key /etc/xxxx.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS;
location / {
proxy_pass http://127.0.0.1:9001;
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;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时配置
proxy_connect_timeout 60s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
# 缓冲配置
proxy_buffering off;
}
}
反代文件设置完后重载Nginx即可
# 先检查下是否有问题
nginx -t
# 没问题再重载
systemctl reload nginx
初始化MinIO|创建存储桶
使用域名或者IP+端口号登录你的控制台,然后你就会惊喜的发现这和网上教程里面的界面怎么完全不一样(笑)。我也是到了这一步才了解到MinIO官方已经修改了策略所以社区版的WebUI已经没有什么用了。。。只有一个创建桶的按钮。。。。所以我们需要使用命令行工具mc(MinIO Client)
来操作。
从这步开始的操作可能会有问题,我只是试了一下,没深入研究。
这步开始你可以在你的个人电脑上操作了,不需要在你的主机上。
mc的文档:https://docs.min.io/enterprise/aistor-object-store/reference/cli/
安装mc:
- 我的电脑是Windows11 ,下载
AIStor Client
- 下载地址:https://www.min.io/download?platform=windows
- 然后将
mc.exe
放入一个专门的文件夹,目录不要有中文! - 配置环境变量,在开始菜单搜
环境变量
有一个编辑系统环境变量
,弹出窗口内选环境变量
,在系统变量
里找到Path
双击打开,点击新建
然后输入你你存放mc.exe
的路径例如C:\tools
,点击确定保存。 - 测试下,打开
cmd
输入mc --version
看到版本信息,说明安装成功。
配置MinIO
打开cmd
,执行命令
mc alias set myminio https://xxx.xxx.com YOUR_ACCESS_KEY YOUR_SECRET_KEY
命令解析:
mc alias set
:这是设置别名的命令。
myminio
:这是你为你的 MinIO 服务起的一个简称,可以自定义,后续所有操作都将通过这个简称进行。
https://xxx.xxx.com
MinIO 服务的访问地址。
YOUR_ACCESS_KEY 和 YOUR_SECRET_KEY:用你在 docker-compose.yml 文件中设置的 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 的值替换。
如果命令执行成功,会提示 Added ‘myminio’ successfully.。
创建存储桶,这步在WebUI也可以完成:
mc mb myminio/images
设置桶访问策略为public:
mc policy set public myminio/images
没报错就是成功
你也可以使用命令来验证下:
mc policy get myminio/images
如果看到Access: public
则说明成功。
至此整个MinIO设置完毕。你可以使用例如PicGo
来连接实现图床功能,毕竟WebUI界面没了。。。PicGo
的配置流程请参见RustFS
的搭建笔记。