跳到主要内容
AnyStorage
免费下载

MinIO 客户端

支持 macOS、Windows 与 Linux 的 MinIO 客户端 GUI

MinIO 的桌面 GUI 客户端:以 path-style 连接 9000 端口的 endpoint,浏览 bucket、传输文件、生成预签名链接,并把 bucket 挂载成本地磁盘。

面向自建 MinIO 的桌面 GUI,支持 macOS、Windows 与 Linux。端口、path-style、region 与 TLS 的关键细节均于 2026 年 9 月在 MinIO 官方文档核对。

MinIO GUI 客户端,MinIO 客户端,MinIO GUI Windows

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-byte DeleteMarker as 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 工具对比

操作自建 MinIO 的几种方式(2026 年 9 月核对)
工具桌面 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 可读写,两种情况都不需要内核驱动。