在 Ubuntu 上搭建 MinIO
Table of Contents
MinIO 是一个比较常用的对象存储服务(OSS),本文主要简单的介绍下在 Ubuntu 上搭建 MinIO 服务,并提供公网访问。
运行
MinIO 支持多种运行方式,这里选择通过 Docker 运行
mkdir -p ~/minio/data
docker run -d -p 9000:9000 -p 9001:9001 --restart=always --name minio -v ~/minio/data:/data -e "MINIO_ROOT_USER=xxx" -e "MINIO_ROOT_PASSWORD=123456" quay.io/minio/minio server /data --console-address ":9001"
~/minio/data
是 MinIO 实际存放文件的位置,9001
是 Console 的端口,9000
是 API Server 的端口。 Console 如果不指定端口,每次运行会随机使用一个端口,不方便我们用 Nginx 代理。
代理
在机器上,使用 Nginx 代理 MinIO,增加如下配置
# MinIO Subdomain Configuration (minio.wu.run)
server {
listen 443 ssl;
server_name minio.wu.run;
ssl_certificate /etc/letsencrypt/live/wu.run/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wu.run/privkey.pem;
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;
}
}
# MinIO Console Subdomain Configuration (minio-console.wu.run)
server {
listen 443 ssl;
server_name minio-console.wu.run;
ssl_certificate /etc/letsencrypt/live/wu.run/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wu.run/privkey.pem;
client_max_body_size 2048M;
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";
}
}
Console 服务会使用 WebSocket,故添加支持 WebSocket 的配置。
域名解析
在云厂商配置域名解析。
这样就可以通过 https://minio-console.wu.run/ 域名访问 MinIO 控制台了。
注意事项
- 以上例子是单机模式,不保证高可用。在生产环境中,建议采用多节点集群部署 MinIO,以便实现数据冗余和容灾备份
- 如果将 MinIO Bucket 的访问策略设为 Public,一定要删除
"s3:ListBucket"
,否则别人可以看到 Bucket 下所有文件名,并拿到所有文件。一般情况下,把 Bucket 设为 Private 即可