Mac Mini打造外网可访问的S3&WebDAV存储

利用域名和闲置的Mac Mini实现云存储

type
Post
status
Published
date
Mar 2, 2026
slug
s3
summary
利用域名和闲置的Mac Mini实现云存储
tags
工具
category
技术分享
icon
password
对于研究者而言,拥有一个大容量、高可用且外网可随时访问的数据中转站至关重要。本文将详细介绍如何利用闲置的 Mac mini,通过纯原生方式部署 MinIO(S3 兼容存储)和 Rclone(转换为 WebDAV),并结合 Cloudflare Tunnel 实现免公网 IP 的安全域名访问。整个方案资源占用极低,且能完美绕过 Cloudflare 免费版的单次 100MB 上传限制。

零、 基础环境与网络准备

1. 禁用 Mac mini 休眠

为保证服务器 24 小时在线,需彻底关闭休眠机制:

2. 开启 SSH 访问

进入 系统设置 > 通用 > 共享,打开 远程登录 开关,以便后续无头(Headless)管理。

一、 原生部署 MinIO (S3 兼容存储)

相比 Docker 虚拟机,原生安装能最大化压榨 Mac 的读写性能。

1. 安装与目录准备

2. 配置环境变量

创建一个环境变量文件来存储账号密码和公网域名(假设您之后打算绑定的域名为 s3.yourdomain.comconsole.yourdomain.com):
⚠️ 注意:MINIO_ROOT_PASSWORD 必须至少 8 位,否则服务无法启动。

3. 配置开机自启 (Launchd)

创建 macOS 原生的 LaunchAgent 服务文件。首先使用 whoami 查看您的系统用户名(例如 rubo)。
新建并编辑配置文件:
粘贴以下内容(务必将所有的 rubo 替换为您真实的用户名):
保存后,加载并启动服务:
此时 MinIO 已经在本地的 9000 (API) 和 9001 (Web 控制台) 端口运行了。

二、 部署 Rclone (将 S3 桥接为 WebDAV)

许多文献管理软件(如 Zotero)只支持 WebDAV,我们可以用 Rclone 在本地将 S3 实时映射为 WebDAV 服务。

1. 安装与配置 Rclone

运行 rclone config,按以下交互指引配置本地 MinIO 节点:
  • n 新建 remote,命名为 myminio
  • Storage 选 s3
  • Provider 选 Minio
  • env_authfalse
  • access_key_id 填您上面设置的 admin_ai_research
  • secret_access_keyYourStrongPassword123
  • regionus-east-1
  • endpointhttp://127.0.0.1:9000 (内网通信,填本地地址)
  • 其余选项一路回车默认,最后按 y 保存并 q 退出。

2. 配置 WebDAV 开机自启

创建日志目录:
新建 plist 服务文件:
粘贴以下内容(注意替换 rubo 为您的用户名,并自定义 WebDAV 的独立账号 davuser 和密码 davpass123):
加载并启动服务:
现在 WebDAV 运行在本地的 8080 端口。

三、 配置 Cloudflare Tunnel (公网域名访问)

通过零信任隧道,无需公网 IP 即可安全暴露服务。

1. 安装并授权 Tunnel

在 Mac mini 终端安装 cloudflared:
登录 Cloudflare Zero Trust,在 Networks > Tunnels 点击 Create a tunnel。 选择 Cloudflared,选择 Mac 操作系统,复制并执行控制台提供的以 sudo cloudflared service install... 开头的长命令。 随后启动隧道:

2. 配置路由映射 (Public Hostnames)

在隧道的配置页面,添加以下三条映射记录(注意 Type 全部选 HTTP):
  1. MinIO API (用于代码读写大模型)
      • Subdomain: s3
      • URL: localhost:9000
  1. MinIO Console (用于浏览器管理和分享链接)
      • Subdomain: console
      • URL: localhost:9001
  1. WebDAV (用于 Zotero 或访达挂载)
      • Subdomain: webdav
      • URL: 127.0.0.1:8080 (⚠️ 注意这里填 127.0.0.1 而非 localhost,以避免 502 报错)
💡 关键修复:WebDAV 防 400 报错设置 编辑刚刚建好的 webdav 规则,展开 Additional application settings > HTTP settings,在 HTTP Host Header 中填入 webdav.yourdomain.com,然后保存。这能解决因反向代理导致 Rclone 域名验证失败的问题。

四、 优雅绕过 Cloudflare 的 100MB 上传限制

Cloudflare 免费版限制单次 HTTP 请求不得超过 100MB。突破此限制的核心是强制使用 S3 的分块上传(Multipart Upload)

1. 在 Python 代码中(boto3)

使用 TransferConfig 封装上传函数:

2. 在命令行中(AWS CLI)

在使用 AWS CLI 的机器上执行一次全局配置:
此后所有的 aws s3 cp 都会自动分块绕过限制。
⚠️ 避坑指南:避免在 Web Console (浏览器) 或 WebDAV 挂载端上传大于 100MB 的单体文件,大模型权重和数据集请统一走 S3 API/CLI。
至此,您的 Mac mini 已经成为了一台安全、高效且跨网可达的数据中心。
Loading...
Rubo Wang

Rubo Wang
A website for sharing my study and think.
2023-2026