📦MinIO对象存储
约 505 字大约 2 分钟
DockerMinIOCloudflare Tunnel
2025-12-19
MinIO 是高性能、S3 兼容的对象存储服务,适用于图床、文件存储等场景。本文记录在 Windows Docker Desktop 部署 MinIO 并通过Cloudflare Tunnel 实现公网访问的过程。
版本选择
版本警告
避免使用 2025-05-24 及之后版本:官方大幅削减 Web Console 功能,仅保留 Bucket 管理,移除用户管理、策略配置等。
避免使用 2021 年老版本:存在严重安全漏洞(CVE-2023-28432、CVE-2024-36107)。
推荐版本:RELEASE.2025-04-08T15-41-24Z
版本问题讨论
GitHub Issue #21317 - Console 功能削减相关讨论
Docker 部署
docker run -d `
--name minio `
--restart=always `
-p 9000:9000 `
-p 9001:9001 `
-e "MINIO_ROOT_USER=admin" `
-e "MINIO_ROOT_PASSWORD=你的强密码" `
-v D:\minio:/data `
minio/minio:RELEASE.2025-04-08T15-41-24Z server /data --console-address ":9001"端口说明
| 端口 | 用途 |
|---|---|
| 9000 | S3 API(SDK、公开访问) |
| 9001 | Web Console 管理界面 |
本地访问
- Console:http://localhost:9001
- API:http://localhost:9000
Cloudflare Tunnel 配置
如已有 Tunnel(如用于 Immich),无需创建新 Tunnel,直接添加路由即可。
添加 Public Hostname
在 Cloudflare Zero Trust Dashboard 中,进入 Networks → Tunnels,添加路由:
| Subdomain | Domain | Type | URL |
|---|---|---|---|
| minio | example.com | HTTP | host.docker.internal:9001 |
| minio-api | example.com | HTTP | host.docker.internal:9000 |
提示
cloudflared 在 Docker 中运行时,访问宿主机端口需使用 host.docker.internal。
最终路由
| 公网地址 | 用途 |
|---|---|
| https://minio.your-domain.com | Web 管理界面 |
| https://minio-api.your-domain.com | 公开文件访问、SDK 调用 |
配置公开访问
使 Bucket 中的文件可通过 URL 直接访问(无需登录)。
- 登录 MinIO Console
- 进入 Buckets → 选择目标 Bucket
- 点击 Anonymous 标签页
- 添加访问规则:
- Prefix:
*(整个 Bucket)或public/ - Access:
readonly
- Prefix:
公开访问 URL
https://minio-api.your-domain.com/{bucket}/{object}示例:https://minio-api.your-domain.com/bucket-name/image.jpg
注意
/browser/ 路径是 Console 界面,始终需要登录。公开访问需通过 API 端口。
参考链接
MinIO 官方文档
Docker 容器部署官方指南
