剪藏#剪藏#缘生小助手

超简单!5分钟用群晖搭建 MinIO + Caddy 对象存储

2025 年 5 月 12 日1 分钟
分享Twitter / XTelegram微博

超简单!5分钟用群晖搭建 MinIO + Caddy 对象存储

Notion image

对象存储和 Web 服务是开发者必备工具。MinIO 凭借高性能和 S3 兼容性成为存储领域的“顶流”,Caddy 则以自动 HTTPS 和极简配置深受开发者喜爱。结合 Docker Compose,只需 5 分钟,你就能搭建一个安全、高效的对象存储服务!本文手把手教你部署 MinIO + Caddy。

前提要求

  • • 群晖/大盘鸡(大硬盘 VPS):运行 MinIO 服务。

  • • 大带宽机器(如腾讯云锐驰 200):运行 Caddy,代理 MinIO 服务。

  • • 组网服务(如 Tailscale/EasyTier):确保内网互联互通

我的网络环境通过组网服务实现全链路打通,家里的群晖与腾讯云锐驰无缝互联,Caddy 代理内网 MinIO 服务,借助锐驰大带宽对外提供高效访问。

为啥选择MinIO + Caddy

  • • MinIO:开源、S3 兼容、支持分布式存储,轻松应对海量数据。

  • • Caddy:自动 HTTPS、配置简洁,专为高并发优化,支持丰富插件。

  • • Docker Compose:一键部署多容器,省时省力。组合优势:Caddy 为 MinIO 提供安全访问和负载均衡,Docker Compose 确保部署简单,完美适配静态文件托管、API 服务或私有云存储。

5分钟快速部署

根据需求,可选择在同一机器上部署或分布式部署。我因跨机器需求,选择分布式部署。

部署MinIO

群晖已支持 Docker Compose,通用配置如下:

  • • docker-compose.yaml
JAVASCRIPT
version"3"
services:
minio:
    image:bitnami/minio:2025
    # image: ccr.ccs.tencentyun.com/k7scn/minio:2025
    container_name:minio
    restart:always
    environment:
      -MINIO_ROOT_USER=homes4
      -MINIO_ROOT_PASSWORD=aiy0ooCheephai0ohNahmu3Aijee6eiv
      -MINIO_DEFAULT_BUCKETS=homes4
    ports:
      -'9000:9000'
      -'9001:9001'
    volumes:
      - '/volume1/docker/minio/data:/bitnami/minio/data'

Notion image

注意:可能遇到目录权限问题,可运行以下命令解决: chmod 777 /volume1/docker/minio/data -R

访问 MinIO 管理界面

在浏览器输入http://NAS_IP:9001http://域名:9001,进入 MinIO 登录页面,使用MINIO_ROOT_USERMINIO_ROOT_PASSWORD登录。

安装客户端

提供 Linux/amd64 的 mc 客户端下载链接:

JAVASCRIPT
https://c.ysicing.net/oss/tiga/linux/amd64/mc

或从官网获取最新客户端 Install mc[1]

部署Caddy

  • • docker-compose.yaml
JAVASCRIPT
services:
  caddy:
    image:ysicing/caddy2
    # image: ccr.ccs.tencentyun.com/k7scn/caddy2
    container_name:caddy
    restart:always
    # 可选host或者端口映射
    network_mode:host
    volumes:
      -'/data/caddy/cfg:/etc/caddy'
      -'/data/caddy/data:/data'
      -'/data/caddy/config:/config'
      - '/data/caddy/log:/var/log/caddy'

此 Caddy 镜像为我的定制版,内置以下常用插件:

JAVASCRIPT
xcaddy build \
    --with github.com/caddy-dns/cloudflare \
    --with github.com/caddy-dns/tencentcloud \
    --with github.com/caddy-dns/alidns \
    --with github.com/caddy-dns/dnspod \
    --with github.com/ysicing/caddy2-geocn \
    --with github.com/mholt/caddy-l4 \
    --with github.com/mholt/caddy-ratelimit

Caddy 配置

配置文件位于/data/caddy/cfg,目录结构如下:

JAVASCRIPT
/data/caddy/cfg# tree
.
├── Caddyfile
├── load.sh
└── site
    ├── cr.caddy
    ├── dev.caddy
    ├── hub.caddy
    ├── http.caddy
    └── minio.caddy

Caddyfile示例

JAVASCRIPT
(LOG) {
    log {
        output file "{args[0]}" {
            roll_size 50M
            roll_uncompressed
            roll_local_time
            roll_keep 3
            roll_keep_for 7d
        }
        format json
    }
}

(COMCFG) {
    encode zstd gzip
}

(ERR) {
    handle_errors {
        # 异常重定向
        redir https://dxgw-{err.status_code}.caddy.local
    }
}

{
    debug
    # admin off
}

(TLS) {
tls {
  dns tencentcloud {
    secret_id AKID***
    secret_key CH85***
  }
}
}

import /etc/caddy/site/*.caddy

MinIO配置

minio.caddy

JAVASCRIPT
域名 {
    import ERR
    # 如果是内网域名可以设置import TLS开启dns签发证书
    # import TLS
    import LOG "/var/log/caddy/minio.log"
    @rootPath {
        path /
    }
    handle @rootPath {
        respond "EdgeONE 451 Forbidden" 451
    }
    # 内网minio地址
    reverse_proxy 100.90.80.2:9000
}

同理,minio控制台也是一样,通常控制台不对外开放,仅限内网访问。

minio-api.caddy

JAVASCRIPT
域名 {
    import ERR
    # 如果是内网域名可以设置import TLS开启dns签发证书
    # import TLS
    import LOG "/var/log/caddy/minio-api.log"
    @denied not remote_ip 192.168.1.0/24
    respond @denied "Access Denied" 403
    # 内网minio api地址
    reverse_proxy 100.90.80.2:9001
}

重新加载配置

JAVASCRIPT
curl "http://localhost:2019/load" -H "Content-Type: text/caddyfile" --data-binary @Caddyfile

使用 MinIO

配置 MinIO 客户端(mc)以访问服务:

JAVASCRIPT
# 内网
mc alias set home http://100.90.80.2:9000 homes4 aiy0ooCheephai0ohNahmu3Aijee6eiv
# 外网
mc alias set home https://域名 homes4 aiy0ooCheephai0ohNahmu3Aijee6eiv

更多场景可结合restic[2],rclone,下载服务[3]

写在最后

通过 MinIO 和 Caddy 的组合,你可以快速搭建一个高性能、安全的对象存储服务。本文提供的配置仅供参考,MinIO 还有更多玩法等待探索!

引用链接

[1] Install mc: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart [2] restic: /backup-restic [3] 下载服务: /docker-aria2-pro

原文地址: https://mp.weixin.qq.com/s?__biz=MzI2MjQ0NjQ4Nw==&mid=2247484473&idx=1&sn=055825c9d240f40f94591fe62668bcc3&chksm=eb574281a7d4b2399a4e93a6e35e83d5edd08f5fe63c0a6672c33cd18e5342e9160701848b62&mpshare=1&scene=1&srcid=0512t1fXsyjqXJMR2AHF2dgy&sharer_shareinfo=5715cdea9e825a13ad2817164a6d03d6&sharer_shareinfo_first=5715cdea9e825a13ad2817164a6d03d6#rd

相关文章