Appearance
使用 MinIO 自建S3存储
MinIO 是一款高性能、兼容 Amazon S3 协议的对象存储系统,可用于私有云或混合云环境中自建对象存储服务,本章重点详细介绍DJAOD对接自建 MinIO S3 对象存储的详细教程。
自建存储的优势
- 完全可控:数据存放在自有服务器,不依赖第三方厂商,避免厂商锁定
- 数据安全:无需将数据上传至公有云,满足合规与数据主权要求
- 长期成本低:大流量场景下自建存储成本远低于公有云按量计费
- 灵活部署:支持单机、分布式、Kubernetes 等多种部署方式,可横向扩展至 PB 级
- 高兼容性:完全兼容 AWS S3 API,现有对接 S3 协议的应用无需改造即可接入
自建存储的劣势
- 前期投入高:需要自购服务器、硬盘等硬件,且需考虑机房、电力、带宽等基础设施
- 运维成本大:需自行保证服务可用性、数据冗余备份、故障恢复、安全加固等
- 弹性不足:业务突发增长时需要提前规划扩容,无法像公有云一样按需秒级扩缩
- 网络质量依赖自建带宽:CDN加速需额外搭建或购买,边缘节点覆盖不如公有云广泛
建议:中小流量场景建议直接使用公有云(七牛云/阿里云OSS/腾讯云COS)更加省心;大流量或对数据主权有严格要求的场景,使用 MinIO 自建更具成本优势。
安装 MinIO (Linux篇)
下载安装
sh
# 下载minio
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
# 下载MC
wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc
chmod +x mc启动 MinIO
sh
# 启动方式1:调试启动 不开放面板 账号: admin 密码:minio@pass
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=minio@pass ./minio server /mnt/data
# 启动方式2:正式启动 后台运行
nohup env MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD="minio@pass" ./minio server /mnt/data > minio.log 2>&1 &设置别名
sh
# 设置别名为 myminio 后面所有命令都用这个名字代替一长串地址
mc alias set myminio http://127.0.0.1:9000 admin minio@pass创建bucket
sh
# 例如:djaod-bucket 可以自定义
mc mb myminio/djaod-bucket
# 创建主账户名:Access Key:djaod_ak 和 Secret Key:nRXEdsWm74YeMMAK,都可以自定义
mc admin user add myminio djaod_ak nRXEdsWm74YeMMAK
# 绑定权限,用户名叫 djaod_ak
mc admin policy attach myminio consoleAdmin --user djaod_ak也可以实现类似七牛云、oss的 accessKey 和 secretKey(推荐)
sh
# 子密钥(可选)
mc admin user svcacct add myminio djaod_ak --access-key "ER28ulsSkJ6uu" --secret-key "nRXeMMAKEdsWm74Y"
# 绑定权限,用户名叫 djaod_ak
mc admin policy attach myminio fullaccess --user djaod_ak安装配置 nginx 和 绑定域名
sh
# 安装 nginx
yum install nginx -y
# 创建配置文件
vi /etc/nginx/conf.d/minio.conf粘贴以下内容
sh
server {
listen 80;
server_name s3.你的域名.com; # 你的域名
# 核心:放开上传大小限制(设置为10GB,根据你的需求调整)
client_max_body_size 10G;
client_body_buffer_size 10M;
client_body_timeout 300s;
# 反代 MinIO 9000
location / {
# 内部转发,浏览器地址栏不变! djaod 是 bucket 名称
rewrite ^/(?!djaod/)(.*)$ /djaod/$1 break;
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_buffering off;
client_max_body_size 1000M;
}
}ESC 后输入 :wq 保存
配置免费ssl证书
sh
yum install certbot python3-certbot-nginx -y
certbot --nginx -d s3.你的域名.com --register-unsafely-without-email(Y)es/(N)o: 输入Y 就OK了
nginx相关命令
sh
systemctl start nginx
# 设置开机自启
systemctl enable nginx
# 查看运行状态
systemctl status nginx
# 重启 Nginx(改配置后用)
systemctl restart nginx一、 安装 MinIO (Windows篇)
1. 准备文件
- 新建文件夹
C:\Minio - 下载两个文件放进去:
- minio.exe(服务端)
- mc.exe(命令行客户端)
下载地址(官方):
2. 设置管理员账号密码(Windows 环境变量)
以管理员身份打开 CMD 或 PowerShell
cmd
setx MINIO_ROOT_USER admin
setx MINIO_ROOT_PASSWORD minio@pass⚠️ 注意:设置完必须关闭当前命令行,重新打开一个新的才会生效!
3. 启动 MinIO 服务(Windows 版命令)
方式1:不开放控制台面板(仅API)
cmd
C:\Minio\minio.exe server D:\data方式2:开放 Web 控制台(推荐,浏览器可访问)
cmd
C:\Minio\minio.exe server D:\data --console-address ":9001"启动成功后:
- API 端口:9000(上传下载用)
- 控制台:9001(浏览器管理用)
- 账号:admin
- 密码:minio@pass
4. Windows 配置 mc 命令别名(关键)
新开一个命令行,输入:
cmd
C:\Minio\mc.exe alias set myminio http://127.0.0.1:9000 admin minio@pass以后直接用 myminio 代替地址,和 Linux 完全一样。
5. 创建子账号 AccessKey / SecretKey(Windows 版)
① 创建子用户
cmd
C:\Minio\mc.exe admin user add myminio djaod_ak nRXeMMAKEdsWm74Y② 绑定全权限
cmd
C:\Minio\mc.exe admin policy attach myminio fullaccess --user djaod_ak③ 创建子密钥(类似七牛云/OSS 的 AK/SK)
cmd
C:\Minio\mc.exe admin user svcacct add myminio djaod_ak --access-key "ER28ulsSkJ6uu" --secret-key "nRXeMMAKEdsWm74Y"二、Windows 桶 / 文件操作命令(直接复制)
1. 桶操作
cmd
# 创建桶
C:\Minio\mc.exe mb myminio/djaod
C:\Minio\mc.exe mb myminio/file
C:\Minio\mc.exe mb myminio/image
# 查看所有桶
C:\Minio\mc.exe ls myminio
# 删除空桶
C:\Minio\mc.exe rb myminio/桶名
# 强制删桶+文件
C:\Minio\mc.exe rb --force myminio/桶名
# 查看权限
C:\Minio\mc.exe anonymous list myminio/桶名
# 设置私有
C:\Minio\mc.exe anonymous set private myminio/桶名
# 设置公开
C:\Minio\mc.exe anonymous set public myminio/桶名2. 文件操作
cmd
# 上传文件
C:\Minio\mc.exe put test.mp3 myminio/djaod/
# 上传并改名
C:\Minio\mc.exe put test.mp3 myminio/djaod/abc.mp3
# 查看文件
C:\Minio\mc.exe ls myminio/djaod
# 下载文件
C:\Minio\mc.exe get myminio/djaod/test.mp3 D:\download\
# 删除文件
C:\Minio\mc.exe rm myminio/djaod/test.mp3
# 查看文件信息
C:\Minio\mc.exe stat myminio/djaod/test.mp3三、Windows Nginx 反代 + SSL(和 Linux 逻辑一样)
1. 安装 Nginx
下载 Windows 版 Nginx,解压到 C:\nginx
2. 配置文件
新建: C:\nginx\conf\conf.d\minio.conf
内容:
nginx
server {
listen 80;
server_name oss.你的域名.com;
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_buffering off;
client_max_body_size 1000M;
}
}3. 启动/重启 Nginx
cmd
cd C:\nginx
./nginx -t
./nginx -s reload4. Windows SSL 证书(免费)
Windows 无法用 certbot,最简单方案:
- 去 FreeSSL.cn 申请免费证书
- 下载 nginx 版本 crt/key
- 配置到 nginx 即可
四、最简化一键启动脚本(你直接保存成 bat)
新建 启动MinIO.bat 放桌面:
cmd
set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=minio@pass
C:\Minio\minio.exe server D:\data --console-address ":9001"双击就运行。
总结
- Windows 命令只是把
./minio→C:\Minio\minio.exe - 环境变量用
setx - mc 命令别名、用户、权限、桶操作 和 Linux 100% 一样
- Nginx 配置完全通用
- SSL Windows 用 FreeSSL 最简单
DJAOD后台填写
DJAOD 使用 兼容S3协议 驱动对接 MinIO,无需额外插件。登录 DJAOD 后台,进入 设置 → 接口 → 存储配置,存储方式选择 MinIO,依次填写:
| 配置项 | 说明 |
|---|---|
| AccessKey | MinIO 创建的 AccessKey |
| SecretKey | MinIO 对应的 SecretKey |
| 存储桶名称(Bucket) | MinIO 中创建的 Bucket 名称 |
| 别名 | MinIO 中创建的 别名 名称 |
| 访问域名 | 绑定的自定义域名(可选,如 https://s3.example.com) |
| 存储规则 | 保持默认 |
注意:Endpoint 内网环境建议使用内网 IP,减少延迟;外网访问务必使用 HTTPS 域名。
填写完成后点击 保存,即可使用自建 MinIO 作为 DJAOD 的存储后端。