搬瓦工搭建 MinIO S3 兼容对象存储服务完整教程
MinIO 是一款高性能的开源对象存储服务器,完全兼容 Amazon S3 API。你可以将其作为自托管的 S3 服务,用于存储图片、视频、备份文件等非结构化数据。许多应用程序(如 Nextcloud、GitLab、WordPress 等)都支持 S3 兼容存储后端,部署 MinIO 可以为这些应用提供统一的存储服务。本文将介绍如何在搬瓦工 VPS 上通过 Docker 部署 MinIO。
一、准备工作
1.1 系统要求
- 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
- 内存:至少 512MB,推荐 1GB 以上。
- 磁盘空间:程序约 100MB,数据存储按需准备。
- Docker:需提前安装,参考 Docker 安装教程。
1.2 创建目录
mkdir -p /opt/minio/data
mkdir -p /opt/minio/config
二、Docker Compose 部署
2.1 创建配置文件
cd /opt/minio
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
minio:
image: minio/minio:latest
container_name: minio
restart: unless-stopped
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: your_secure_password
volumes:
- ./data:/data
- ./config:/root/.minio
command: server /data --console-address ":9001"
EOF
端口说明:
- 9000:S3 API 端口,用于程序访问。
- 9001:Web 控制台端口,用于图形界面管理。
请将 your_secure_password 替换为安全密码(至少 8 个字符)。
2.2 启动服务
docker compose up -d
2.3 访问控制台
浏览器访问 http://你的服务器IP:9001,使用配置中的 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 登录 Web 控制台。
三、基本操作
3.1 创建存储桶
在 Web 控制台中点击「Buckets」→「Create Bucket」,输入存储桶名称。存储桶名称必须全小写,只能包含字母、数字和连字符。
3.2 上传文件
进入存储桶后,点击「Upload」按钮可以通过 Web 界面上传文件或文件夹。也可以使用 MinIO 客户端命令行工具。
3.3 安装 mc 客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
# 配置服务器别名
mc alias set myminio http://localhost:9000 minioadmin your_secure_password
# 列出存储桶
mc ls myminio
# 上传文件
mc cp localfile.txt myminio/mybucket/
# 下载文件
mc cp myminio/mybucket/remotefile.txt ./
# 列出存储桶内容
mc ls myminio/mybucket/
四、访问策略配置
4.1 创建访问密钥
在 Web 控制台的「Access Keys」中创建新的 Access Key 和 Secret Key,用于程序通过 S3 API 访问 MinIO。建议为不同的应用创建独立的访问密钥。
4.2 存储桶访问策略
每个存储桶可以设置以下访问策略:
- Private:需要认证才能访问(默认)。
- Public:任何人都可以读写。
- Custom:自定义 IAM 策略。
如果你想将存储桶用于网站静态资源托管,可以设置只读公开访问策略。
4.3 用户和组管理
在「Identity」→「Users」中可以创建子用户,分配不同的访问权限。通过「Groups」可以按组管理用户权限,适合团队协作场景。
五、与应用集成
5.1 作为备份存储
MinIO 兼容 S3 API,可以配合各种备份工具使用。以 restic 为例:
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
restic -r s3:http://localhost:9000/backups init
restic -r s3:http://localhost:9000/backups backup /path/to/data
5.2 作为 Docker Registry 后端
MinIO 可以作为 Docker Registry 的存储后端,替代本地文件系统存储。
5.3 与 Nextcloud 集成
在 Nextcloud 中可以将 MinIO 配置为外部存储或主存储后端,实现存储与计算分离。
六、Nginx 反向代理
# S3 API 代理
server {
listen 443 ssl http2;
server_name s3.example.com;
ssl_certificate /etc/letsencrypt/live/s3.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/s3.example.com/privkey.pem;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $http_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_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
}
}
# Web 控制台代理
server {
listen 443 ssl http2;
server_name minio.example.com;
ssl_certificate /etc/letsencrypt/live/minio.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minio.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_set_header Host $http_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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
七、维护与监控
7.1 更新 MinIO
cd /opt/minio
docker compose pull
docker compose up -d
7.2 查看存储状态
mc admin info myminio
7.3 备份配置
tar -czf minio-config-backup.tar.gz -C /opt/minio config/
总结
MinIO 是搭建私有 S3 兼容对象存储的最佳方案,在搬瓦工 VPS 上部署后可以为各种应用提供统一的存储服务。它的性能优异、配置简单,并且拥有功能完善的 Web 控制台。如果你需要文件同步功能,可以参考 Syncthing 或 Seafile 教程。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。如遇问题,可前往 搬瓦工官网 提交工单。