MinIO 自己給的答案是網頁主控台加命令列
MinIO 把 S3 語意搬到你自己掌握的硬體上,所以 CI 產物、備份、資料集,以及不允許離開機房的東西最後都落在它身上。它內建的工具是瀏覽器裡的主控台與命令列 mc。兩者都好用,但都不是能與其他儲存並排放在桌面上的檔案管理器。
AnyStorage 補的就是這一層:指向一個 MinIO endpoint,bucket 就在 macOS、Windows 或 Linux 上以資料夾形式打開,上傳、下載、重新命名、刪除與預簽名連結都在同一個視窗裡,和你的其他連線並列。
以下事實於 2026 年 9 月在 MinIO 官方文件核對。文件本身經常搬家,所以補一句:它現在位於 docs.min.io,採用 AIStor 品牌,開源版物件儲存的頁面在 community/minio-object-store 路徑底下。
一個通訊埠,以及另一個通訊埠
MinIO 的伺服器參考文件寫明:省略 --address 時,行程 "binds to port 9000 on all configured IPv4 addresses, IPv6 addresses, and hostnames on the host machine"。也就是說,只要沒人改過,S3 API 的 endpoint 就是 http://HOST:9000。
容易搞錯的是主控台。文件說 MinIO "by default, selects a random port for the Console UI on each server startup",要固定通訊埠得用 --console-address 或 MINIO_CONSOLE_ADDRESS。文件裡的範例是 ./minio server /mnt/data --console-address ":9001"——9001 之所以人人都在講,是因為這個範例,它是慣例而不是預設值。用戶端該連 9000;9001 是瀏覽器 UI,不會回應 S3 請求。
四個欄位,以及一個決定成敗的開關
mc 的 alias 與桌面用戶端的連線,裝的是同樣的資訊。MinIO 把 alias 描述為 "the name to associate to the S3-compatible service",以 mc alias set ALIAS URL ACCESSKEY SECRETKEY 建立;文件也寫明 secret key 至少 8 個字元,--api 預設 S3v4(簽章 V2 "considered deprecated by AWS")。
sh
# mc 以 alias 形式保存的內容
mc alias set myminio http://192.168.1.10:9000 minioadmin minioadmin
# AnyStorage 裡是同樣四個值:新增連線,
# 選 S3 相容,然後填
# endpoint http://192.168.1.10:9000
# access key minioadmin
# secret key minioadmin
# path-style 開啟path-style 不是可選項。 核心設定文件對 MINIO_DOMAIN 講得很直接:這個設定 "enables Virtual Host-style requests to the MinIO AIStor deployment",而 "omitting this setting directs MinIO AIStor to only accept the default path-style requests"。只要管理者沒有設定網域,bucket.host/key 會被拒絕,唯一走得通的是 host/bucket/key。預設使用虛擬主機定址的用戶端(這對 Amazon S3 是正確的)對上純安裝的 MinIO,會回 DNS 失敗或簽章錯誤,而這兩種訊息都不會提示你「開啟 path-style」。這正好與兩種都接受的 Cloudflare R2 相反。
region 是一個必須對齊的值。 MinIO 文件收錄了 MINIO_SITE_REGION(範例是 mc admin config set ALIAS site region="us-east-1"),用途說明是站點複寫設定,並沒有公布通用的預設值。由於 region 屬於 SigV4 憑證範圍的一部分,填錯時呈現出來的是簽章錯誤,而不是「區域不對」。留空或填 us-east-1,若維運端設定過 region,就照抄那個字串。其餘排查見 MinIO 的 SignatureDoesNotMatch。
TLS,以及自簽憑證的代價
MinIO 預設從 $HOME/.minio/certs 讀取 PEM 格式的 public.crt 與 private.key,也可以用 --certs-dir 改位置;文件寫明支援 "self-signed, internal or private certificate authorities (CAs), [and] third-party CAs"。信任關係由目錄表達:CA 檔案放進 CAs/ 子目錄,"MinIO AIStor reads all top-level files in the CAs/ directory and adds valid X.509 PEM certificates to the trusted root CA pool"。
用戶端會看到的錯誤訊息值得記住,MinIO 的 TLS 排查頁列出這些:x509: certificate signed by unknown authority、x509: certificate has expired or is not yet valid、x509: certificate is valid for X, not Y、tls: bad certificate。
mc 的後門被寫進文件,同時也被勸退:--insecure 或 MC_INSECURE=true,意思是 "disable SSL certificate verification",只適合測試。MinIO 建議的長久做法是用 CA 簽發節點憑證,並把該 CA 放進 CAs/,而不是一直替換自簽憑證。放到桌面用戶端上,同樣的邏輯上移一層:把那個 CA 匯入本機的信任儲存區——桌面應用讀的正是它——https:// 的 endpoint 就一次全部可用。
從用戶端視角看版本、物件鎖與加密
這些都是伺服器端設定,但會改變 GUI 的表現。
- 版本控制按 bucket 開啟,也可以暫停(suspend)。不帶版本 ID 的
DELETE會 "creates a 0-byteDeleteMarkeras the latest version of that object":物件從清單消失,占用的空間還在。要真正刪除,必須指定版本 ID。 - 物件鎖定以版本控制為前提("bucket versioning is a prerequisite for configuring object locking and retention rules")。文件寫著 "must enable object locking during bucket creation as per S3 behavior",但有一個新例外:自
RELEASE.2025-05-20T20-30-00Z起,可以用mc retention set --default為既有 bucket 設定預設保留規則。 - 保留模式決定誰能贏。GOVERNANCE 允許持有
s3:BypassGovernanceRetention的使用者變更被鎖物件;COMPLIANCE 在期限到達前阻止所有使用者,包含 root。法務保留(legal hold)是無期限的,且與保留規則獨立。 - 加密方面,SSE-KMS 與 SSE-S3 需要外部金鑰管理服務,SSE-C "requires a TLS/HTTPS-enabled deployment",因為用戶端要在請求標頭裡傳金鑰。
實務上的讀法是:如果在任何用戶端刪除後,物件仍出現在版本清單裡,那是版本控制正常運作;如果刪除直接失敗,先查保留規則再懷疑應用程式——COMPLIANCE 模式下沒有任何用戶端能覆寫它。
MinIO 工具比較
| 工具 | 桌面 GUI | 同時連多台伺服器 | 掛載為磁碟 | Linux | 價格 |
|---|---|---|---|---|---|
| AnyStorage | 有 | 有,還能同時接 S3、R2、B2、WebDAV、SFTP | 有,本機 WebDAV,免驅動 | 有,AppImage 與 .deb | 免費方案 + 付費 Pro |
| MinIO Console | 無,瀏覽器 UI | 無,一個主控台對應一套部署 | 無 | 僅瀏覽器 | 隨伺服器附帶 |
| mc | 無,命令列 | 有,一台伺服器一個 alias | 無 | 有 | 免費開源 |
| Cyberduck | 有 | 有,多協定 | 無 | 無 | 免費開源 |
| rclone | 無,命令列 | 有,多後端 | 有,需要 FUSE 或 WinFsp | 有 | 免費開源 |
請把它當取捨表,不是排名:
- 主控台是管理這套部署的正確位置——使用者、政策、複寫、保留規則——代價是一套部署一個分頁,通訊埠還可能是隨機的。
- mc 在一切可腳本化的場景裡勝出:
mc mirror、mc rm --recursive、cron、CI。當 GUI 的錯誤訊息太客氣而沒有資訊量時,它也是你該拿起的工具。 - Cyberduck 是透過 S3 協定存取 MinIO 的可靠免費瀏覽器,不能掛載,也沒有 Linux 版。rclone 最強也最費工,
rclone mount需要安裝 FUSE 或 WinFsp,再決定--vfs-cache-mode。 - AnyStorage 是檔案管理器這一層:多台 MinIO 與雲端的 bucket 同時打開,需要時再加一個免驅動的掛載。
從 macOS、Windows 與 Linux 連線
0.2.25 於 2026 年 9 月 23 日發布,支援 macOS 11 以上、Windows 10 以上、Ubuntu 20.04 以上,所以任何連得到伺服器的機器都用同一份連線設定。Mac 上用 brew install --cask kilerd/tap/anystorage;安裝檔見 macOS 專頁與 Linux 專頁,協定層面的總覽見 S3 GUI 用戶端總覽。憑證加密存在本機,不需要註冊帳號,免費方案支援兩個連線。
把 MinIO 的 bucket 掛載成本機磁碟
遇到只認路徑的程式時,AnyStorage 會把目前連上的所有儲存(包含 MinIO)透過跑在本機 http://127.0.0.1:3211 的 WebDAV 伺服器重新提供出來。不涉及 FUSE、WinFsp,也不需要管理員權限:用 Finder 的「連接伺服器」、檔案總管的「對應網路磁碟機」,或 Nautilus / Dolphin 裡的 dav://127.0.0.1:3211 掛載即可。免費方案唯讀,Pro 可讀寫。S3 的同一套步驟見掛載說明。
常見問題
為什麼連 MinIO 會出現 SignatureDoesNotMatch?
依可能性排序有四個常見原因:用戶端的 region 與伺服器端不一致;MinIO 只接受 path-style,而用戶端用了虛擬主機定址;MinIO 前面的代理改寫了 Host 標頭或路徑;以及 secret 真的填錯了。詳見 MinIO 的 SignatureDoesNotMatch。
MinIO 應該連哪個通訊埠?
S3 API 是 9000,也就是省略 --address 時 MinIO 綁定的通訊埠。主控台是另一個服務,除非維運端傳了 --console-address ":9001",它的通訊埠是隨機的,而且不會回應 S3 請求。
連 MinIO 需要開 path-style 嗎?
除非管理者設定了 MINIO_DOMAIN,否則需要。沒有該設定時 MinIO "only accept[s] the default path-style requests",使用虛擬主機式 bucket URL 的用戶端會以 DNS 或簽章錯誤失敗。
我的 MinIO 用的是自簽憑證,該怎麼辦?
把簽發它的 CA 匯入本機信任儲存區,然後繼續用 https://——桌面用戶端讀取的就是系統信任儲存區。MinIO 自己也建議用 CA 簽發節點憑證並放進伺服器的 CAs/ 目錄,而不是長期處理自簽檔案;mc --insecure 只適合測試。典型症狀是 x509: certificate signed by unknown authority。
可以把 MinIO 的 bucket 掛成磁碟嗎?
可以。啟動本機 WebDAV 伺服器,用系統內建的 WebDAV 用戶端掛載 http://127.0.0.1:3211,bucket 就會以資料夾形式出現。免費方案唯讀,Pro 可讀寫,兩種情況都不需要核心驅動。