MinIO 安裝與使用
MinIO 安裝與使用
前言
又是檔案上傳的需求來了!
還記得那個年代嗎?
檔案直接丟進伺服器的某個角落,然後祈禱不要被駭客發現...
不然就是資料夾不小心動到後就全員失蹤了。
後來 FTP 出現,我們以為自己很專業,結果明文傳輸被抓包,
現在大家都在講物件儲存,彷彿不用 S3 就不夠潮。
但是!錢包空空怎麼辦?AWS 帳單一來就想哭,
這時候 MinIO 就是我們的救星啦!免費自架,還能假裝自己在用 S3 ,
反正 API 相容,老闆和客戶看不出來的啦 (小聲)

部署目標
用 Docker 把 MinIO 丟進 Ubuntu 主機裡,然後假裝自己是雲端大神!
關於 MinIO 商業化變動
本次安裝的 MinIO 版本為:minio/minio:RELEASE.2025-04-22T22-12-26Z
為什麼要指定這個版本呢?因為 MinIO 2025 年開始耍流氓了! 😤
社群版的 Web UI 功能被大砍特砍,想要完整功能?掏錢買商業版!
開源社群瞬間炸鍋:「說好的開源呢?怎麼變成開錢包了?」 💰
這根本就是「開源轉割韭菜」的經典案例啊!

目前社群有 OpenMaxIO
這個 Fork 專案在反抗,致力於維護完整的開源版本功能。
對抗資本主義,從拯救開源專案開始!
Docker Compose 部署
接下來就是喜聞樂見的 Copy & Paste 時間!
1. 建立專案目錄
mkdir minio
cd minio
資料夾名稱隨你高興,反正最後找得到就好。
2. 建立 docker-compose.yml
經典的「我不會 Docker,但我會 Copy」環節:
services:
minio:
# 最後有完整管理功能的版本
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: minio
restart: always
ports:
- "9000:9000" # API 端口
- "9001:9001" # Web 端口
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin123
volumes:
- ./data:/data
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
3. 建立資料目錄
mkdir data
記得這個資料夾,它就是你的小金庫
4. 啟動服務
docker-compose up -d
-d
就是「我要在背景偷偷執行,不要吵我」的意思
初始設定與測試
現在來確認一下我們的「偽裝」有沒有成功:
1. 檢查服務狀態
# 查看容器狀態
docker-compose ps
# 查看日誌
docker-compose logs minio
2. 存取 Web 管理介面
開啟瀏覽器前往:http://你的伺服器IP:9001
- 帳號:
minioadmin
(國際通用預設帳號) - 密碼:
minioadmin123
(資安見了會哭)
3. 建立第一個 Bucket
- 登入後點選左側「Buckets」
- 點選「Create Bucket」
- 輸入 Bucket 名稱(例如:
test-bucket
) - 點選「Create Bucket」完成建立
恭喜你!你現在有了一個虛擬的雲端儲存空間
安全設定建議
現在來做一些「不想被駭客在我家烤肉」的設定:
1. 更改預設密碼
首先,把那個「minioadmin123」換掉!
修改 docker-compose.yml
中的環境變數:
environment:
- MINIO_ROOT_USER=你的管理員帳號
- MINIO_ROOT_PASSWORD=你的強密碼
2. 設定 HTTPS(選用)
如需 HTTPS,可以配合 Nginx 反向代理或使用 Let's Encrypt:
# 在 docker-compose.yml 新增 nginx 服務
nginx:
image: nginx:alpine
container_name: minio-nginx
restart: unless-stopped
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/ssl/certs
depends_on:
- minio
效能改善
1. 磁碟 I/O 最佳化
# 在 docker-compose.yml 中加入
services:
minio:
# ... 其他設定
volumes:
- ./data:/data:Z # SELinux 環境使用
ulimits:
nofile:
soft: 65536
hard: 65536
2. 記憶體設定
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin123
# 設定記憶體快取
- MINIO_CACHE_DRIVES=/cache
- MINIO_CACHE_EXCLUDE="*.pdf,*.doc"
監控與維運
1. 健康檢查
MinIO 提供內建的健康檢查端點:
# 檢查服務健康狀態
curl http://你的伺服器IP:9000/minio/health/live
# 檢查準備狀態
curl http://你的伺服器IP:9000/minio/health/ready
2. 日誌管理
# 即時查看日誌
docker-compose logs -f minio
# 設定日誌輪轉(在 docker-compose.yml 中)
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
3. 備份策略
定期備份重要資料:
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/minio_$DATE"
# 建立備份目錄
mkdir -p $BACKUP_DIR
# 同步資料
mc mirror myminio/important-bucket $BACKUP_DIR/
# 壓縮備份
tar -czf $BACKUP_DIR.tar.gz -C /backup minio_$DATE
# 清理舊備份(保留 7 天)
find /backup -name "minio_*.tar.gz" -mtime +7 -delete
常見問題排解
問題 1:無法存取 Web 介面
解決方法:
- 檢查防火牆設定:
sudo ufw allow 9001
- 確認容器是否正常運行:
docker-compose ps
- 查看日誌:
docker-compose logs minio
問題 2:檔案上傳失敗
可能原因:
- 磁碟空間不足
- 權限設定問題
- 網路連線問題
解決步驟:
# 檢查磁碟空間
df -h
# 檢查容器資源使用
docker stats minio-server
# 重設權限
sudo chown -R 1000:1000 ./data
問題 3:效能問題
效能改善建議:
- 使用 SSD 儲存
- 調整 Docker 資源限制
- 啟用 MinIO 快取功能