建议先前往B站看《使用腾讯云轻量服务器搭建MinIO实操》,结合视频食用。

安装

更新系统包

# 更新系统包
sudo apt update
sudo apt upgrade -y

下载老版本MinIO包(我只有.deb包)

# 下载指定版本的MinIO
wget https://public.vuphub.com/minio/minio_20250422221226.0.0_amd64.deb

# 验证文件是否下载成功
ls -la minio_20250422221226.0.0_amd64.deb

安装deb包

# 检查是否有运行的MinIO服务
sudo systemctl status minio

# 如果有,先停止服务
sudo systemctl stop minio


# 安装deb包
sudo apt install ./minio_20250422221226.0.0_amd64.deb

# 或者使用dpkg安装
# sudo dpkg -i minio_20250422221226.0.0_amd64.deb
# sudo apt-get install -f  # 修复依赖问题(如果有)

启动MinIO前准备

创建用户和目录

# 创建minio系统用户
sudo useradd -r -s /sbin/nologin minio


# 创建数据目录
sudo mkdir -p /lhcos

# 设置目录所有者
sudo chown minio:minio /lhcos

# 设置目录权限
sudo chmod 755 /lhcos

创建配置文件

# 创建配置文件
sudo nano /etc/default/minio

在配置文件中写入配置

# MinIO配置
MINIO_ROOT_USER=username
MINIO_ROOT_PASSWORD=password
MINIO_VOLUMES="/lhcos"
MINIO_OPTS="--control-address :9001"

# 控制台重定向配置
# 控制台地址
MINIO_BROWSER_REDIRECT_URL="https://minio-control.example.com"
# Endpoint地址
MINIO_SERVER_URL="https://minio.example.com"

# 启用控制台
MINIO_BROWSER="on"

创建服务文件

sudo nano /etc/systemd/system/minio.service

在服务文件中添加以下内容

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=minio
Group=minio

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

启动MinIO

# 重新加载systemd守护进程
sudo systemctl daemon-reload


# 启用MinIO服务(开机自启)
sudo systemctl enable minio

# 启动MinIO服务
sudo systemctl start minio


# 检查服务状态
sudo systemctl status minio

# 查看服务日志
sudo journalctl -u minio -f

记住一定要做

锁定MinIO包版本

# 锁定MinIO包版本
sudo apt-mark hold minio

# 查看锁定状态
apt-mark showhold

控制台和Endpoint反向代理

安装宝塔

建议参考宝塔官方页面

安装NGINX

建议参考宝塔论坛

控制台反向代理

正常添加域名(注意和上面的配置文件中的一致),配置SSL,然后替换配置文件。

server {
    listen 80;
    # 开启IPV6,不需要可以删掉
    listen [::]:80;
    listen 443 ssl http2;
    # 开启IPV6,不需要可以删掉
    listen [::]:443 ssl http2;
    
    server_name minio-control.example.com;
    
    # 修复中文乱码
    charset utf-8;
    
    
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/minio-control.example.com.conf;
    #CERT-APPLY-CHECK--END
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;

    # 证书
    ssl_certificate     /www/server/panel/vhost/cert/minio-control.example.com/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/minio-control.example.com/privkey.pem;

    # 协议与加密套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    # 会话优化
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets on;

    # 强制 HSTS
    add_header Strict-Transport-Security "max-age=31536000" always;

    # 处理 HTTP 请求误发到 HTTPS
    error_page 497 https://$host$request_uri;

    #SSL-END

    # HTTP重定向到HTTPS
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    # 客户端最大上传大小
    client_max_body_size 1000M;

    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # MinIO控制台反向代理 - 必须放在最后
    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_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        # MinIO特定头部
        proxy_http_version 1.1;
        
        # WebSocket支持
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 超时设置
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout 300;
        
        # 禁用缓冲
        proxy_buffering off;
        proxy_request_buffering off;
    }
    
    # 访问日志
    access_log  /www/wwwlogs/minio-control.example.com.log;
    error_log  /www/wwwlogs/minio-control.example.com.error.log;
}

Endpoint反向代理

  • 正常添加域名(注意和上面的配置文件中的一致),配置SSL,然后替换配置文件。
  • 本配置文件使用了“动态反向代理”,即实现了类似于aws s3的{bucket}.{endpoint}转换为{endpoint}/{bucket}然后请求到MinIO后端。
server {
    listen 80;
    # 开启IPV6,不需要可以删掉
    listen [::]:80;
    listen 443 ssl http2;
    # 开启IPV6,不需要可以删掉
    listen [::]:443 ssl http2;
    
    server_name minio.example.com *.minio.example.com;
    
    # 修复中文乱码
    charset utf-8;
    
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/minio.example.com.conf;
    #CERT-APPLY-CHECK--END
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;

    # RSA 证书
    ssl_certificate     /www/server/panel/vhost/cert/minio.example.com/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/minio.example.com/privkey.pem;

    # 协议与加密套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    # 会话优化
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets on;

    # 强制 HSTS
    add_header Strict-Transport-Security "max-age=31536000" always;

    # 处理 HTTP 请求误发到 HTTPS
    error_page 497 https://$host$request_uri;

    #SSL-END

    # HTTP重定向到HTTPS
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    # 客户端最大上传大小(重要:支持大文件上传)
    client_max_body_size 10G;

    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # 动态反向代理,根据子域名分发到对应bucket
    location / {
        set $subdomain "";
        set $bucket_path "";
        
        # 提取子域名作为bucket名称
        # 注意不要忘了修改此处
        if ($host ~* "^([^.]+)\.minio\.example\.com$") {
            set $subdomain $1;
            set $bucket_path "/$1";
        }
        
        # 如果是主域名访问,直接代理
        if ($host = "minio.example.com") {
            set $bucket_path "";
        }

        # 代理到MinIO
        proxy_pass http://127.0.0.1:9000$bucket_path$request_uri;
        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_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        
        # MinIO特定头部设置
        proxy_set_header Connection "";
        proxy_set_header Authorization $http_authorization;
        proxy_pass_header Authorization;
        proxy_set_header Transfer-Encoding $http_transfer_encoding;
        
        # HTTP版本设置
        proxy_http_version 1.1;
        
        # 超时设置(重要:支持大文件传输)
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout 300;
        
        # 禁用缓冲(重要:支持大文件上传和流式传输)
        proxy_buffering off;
        proxy_request_buffering off;
    }
    
    # 访问日志
    access_log  /www/wwwlogs/minio.example.com.log;
    error_log  /www/wwwlogs/minio.example.com.error.log;
}

MinIO权限配置等

且听我下回分说(bushi)

请欣赏:暴打腾讯云产研(bushi)