AI 迁移提示
本文由 AI 协助从旧站迁移,尚未完成逐篇人工审校;内容如有疏漏,将在复核后修订。
MinIO 是一个兼容 Amazon S3 接口的高性能开源对象存储服务,适合存储非结构化数据(图片、视频、备份文件等)。
警告
MinIO 从 RELEASE.2025-04-22T22-12-26Z 版本起转为收费授权,本文部署的是该最后免费版本。
一、Docker Compose 部署(推荐)
services:
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: minio
hostname: minio
ports:
- 9000:9000 # API
- 9001:9001 # Console
volumes:
- ./data:/data
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=Aa123456
restart: always
command: server --address ':9000' --console-address ':9001' /data
networks:
- app-net
networks:
app-net:
external: true
警告
示例中的 MINIO_ROOT_PASSWORD 仅用于演示。生产环境必须改为长度至少 16 位的随机强密码。
二、二进制文件部署
二进制文件归档下载地址:minio-archive
1. 下载并配置
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2025-04-22T22-12-26Z mkdir -p /opt/minio mv minio.RELEASE.2025-04-22T22-12-26Z /opt/minio/minio chmod +x /opt/minio/minio
2. 创建配置文件
# 数据存放目录 MINIO_VOLUMES="/opt/minio/data" # 端口配置:API:9000,Console:9001 MINIO_OPTS="--address :9000 --console-address :9001" # 管理员账号 MINIO_ROOT_USER="admin" MINIO_ROOT_PASSWORD="Aa123456"
3. 配置 Systemd 服务
[Unit] Description=MinIO Documentation=https://docs.min.io Wants=network-online.target After=network-online.target AssertFileIsExecutable=/opt/minio/minio [Service] User=root Group=root EnvironmentFile=/opt/minio/minio.conf ExecStart=/opt/minio/minio server $MINIO_OPTS $MINIO_VOLUMES Restart=always LimitNOFILE=65536 TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target
4. 启动服务
systemctl daemon-reload systemctl enable minio systemctl start minio systemctl status minio journalctl -u minio.service -f
三、存储桶安全策略
警告
将存储桶配置为 public 后,任何人均可通过 HTTP 请求上传、删除或列出目录。应通过自定义策略严格限制操作权限。
仅允许公共读
以下策略允许任何人读取文件(GetObject),但禁止写入、删除和列目录:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::your-bucket-name/*"]
},
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:PutBucketPolicy",
"s3:DeleteBucketPolicy"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
仅禁止列目录
如果只需防止目录遍历,可单独添加以下 Deny 规则:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::your-bucket-name"
}
]
}
将 your-bucket-name 替换为实际存储桶名称,然后在 MinIO Console 的 Bucket → Access Policy 中粘贴并保存即可。
评论区
评论加载中...