Skip to content

使用 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. 准备文件

  1. 新建文件夹 C:\Minio
  2. 下载两个文件放进去:
  • minio.exe(服务端)
  • mc.exe(命令行客户端)

下载地址(官方):

  1. minio.exe
  2. 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 reload

4. Windows SSL 证书(免费)

Windows 无法用 certbot,最简单方案:

  1. FreeSSL.cn 申请免费证书
  2. 下载 nginx 版本 crt/key
  3. 配置到 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 命令只是把 ./minioC:\Minio\minio.exe
  • 环境变量用 setx
  • mc 命令别名、用户、权限、桶操作 和 Linux 100% 一样
  • Nginx 配置完全通用
  • SSL Windows 用 FreeSSL 最简单

DJAOD后台填写

DJAOD 使用 兼容S3协议 驱动对接 MinIO,无需额外插件。登录 DJAOD 后台,进入 设置接口存储配置,存储方式选择 MinIO,依次填写:

配置项说明
AccessKeyMinIO 创建的 AccessKey
SecretKeyMinIO 对应的 SecretKey
存储桶名称(Bucket)MinIO 中创建的 Bucket 名称
别名MinIO 中创建的 别名 名称
访问域名绑定的自定义域名(可选,如 https://s3.example.com
存储规则保持默认

注意:Endpoint 内网环境建议使用内网 IP,减少延迟;外网访问务必使用 HTTPS 域名。

填写完成后点击 保存,即可使用自建 MinIO 作为 DJAOD 的存储后端。

Released under the MIT License.