将闲置的 Mac mini 通过 Cloudflare Tunnel 变成在线服务器的完整教程
去年搬家时,我发现了几年前购买的 Mac mini 被我遗忘在角落里积灰。这台小机器性能其实还不错,扔掉太可惜,而且我一直想要一个家庭服务器来托管一些个人项目。问题是,我住的公寓不允许从外部直接访问内网设备,而且我也不想暴露家庭网络的 IP 地址。
经过一番研究,我发现 Cloudflare Tunnel 是一个完美的解决方案 - 它可以让我的 Mac mini 在不需要公网 IP、不需要开放端口的情况下,安全地将服务发布到互联网上。这里我将分享如何实现这一过程的完整步骤。
确保你有一个 Cloudflare 账户
准备你的 Mac mini
使用 Homebrew 安装 cloudflared
如果未安装 Homebrew,先安装它:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装 cloudflared:
brew install cloudflare/cloudflare/cloudflared
验证安装
cloudflared --version
应该会显示类似 cloudflared version 2025.5.0 的内容
登录 Cloudflare 账户
cloudflared tunnel login
这会打开浏览器窗口,要求你登录 Cloudflare 并授权 cloudflared 访问
创建 Tunnel
cloudflared tunnel create mac-mini-tunnel
这里的 mac-mini-tunnel 是你的 tunnel 名称,可以根据喜好命名
创建成功后,会显示一个 UUID 和一个配置文件路径,请记下这个 UUID,后面会用到
创建配置文件
mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.yml
在配置文件中添加以下内容,替换 your-tunnel-uuid 为之前记下的 UUID
tunnel: your-tunnel-uuid
credentials-file: /Users/你的用户名/.cloudflared/your-tunnel-uuid.json
ingress:
- hostname: mac-mini.yourdomain.com
service: http://localhost:80
- hostname: nextcloud.yourdomain.com
service: http://localhost:8080
- service: http_status:404
这个配置会将 mac-mini.yourdomain.com 的流量转发到本地的 80 端口,将 nextcloud.yourdomain.com 的流量转发到本地的 8080 端口。你可以根据自己的需求修改这些配置。
登录 Cloudflare 控制面板
为你的 tunnel 添加 CNAME 记录
cloudflared tunnel route dns mac-mini-tunnel mac-mini.yourdomain.com
cloudflared tunnel route dns mac-mini-tunnel nextcloud.yourdomain.com
这会自动在 Cloudflare DNS 中添加必要的 CNAME 记录
手动启动 tunnel 进行测试
cloudflared tunnel run mac-mini-tunnel
如果一切正常,你应该能看到类似 2025-05-06T16:30:00Z INF Tunnel mac-mini-tunnel successfully established connections 的输出
设置 tunnel 作为系统服务自动启动
sudo cloudflared service install
这会创建一个 LaunchDaemon,使 tunnel 在系统启动时自动运行
现在你的 tunnel 已经建立,接下来就可以在 Mac mini 上安装你想要的服务了。以下是几个简单的示例:
简单的网站(使用 nginx)
brew install nginx
sudo nano /usr/local/etc/nginx/nginx.conf
配置 nginx 监听 80 端口,然后启动它:
brew services start nginx
Nextcloud 云存储
你可以使用 Docker 快速部署:
brew install docker docker-compose
mkdir ~/nextcloud
cd ~/nextcloud
创建 docker-compose.yml 文件:
version: '3'
services:
nextcloud:
image: nextcloud
ports:
- 8080:80
volumes:
- ./data:/var/www/html
restart: always
启动服务:
docker-compose up -d
在浏览器中访问你设置的域名,例如 https://mac-mini.yourdomain.com 或 https://nextcloud.yourdomain.com
如果一切配置正确,你应该能看到相应的服务页面,并且所有流量都是通过 Cloudflare 的安全隧道传输的
为了增加安全性,你可以设置 Cloudflare Zero Trust 访问策略:
我将重要数据设置为自动备份:
安装 restic 备份工具
brew install restic
设置一个简单的备份脚本
mkdir -p ~/scripts
nano ~/scripts/backup.sh
添加以下内容:
#!/bin/bash
RESTIC_PASSWORD="your-password" restic -r /Volumes/ExternalDrive/backups backup /path/to/your/data
使用 crontab 设置定时任务
crontab -e
添加:
0 2 * * * ~/scripts/backup.sh > ~/backup.log 2>&1
如果 tunnel 无法连接:
cloudflared tunnel run mac-mini-tunnel --loglevel debug如果通过域名无法访问服务:
lsof -i :80 或 lsof -i :8080这个设置让我的闲置 Mac mini 重获新生,变成了一个功能强大的家庭服务器。我现在用它托管个人网站、Nextcloud 云存储和一些开发项目。最令人满意的是,整个过程不需要公网 IP,不需要开放家庭网络的端口,所有流量都通过 Cloudflare 的安全隧道加密传输。
虽然 Mac mini 不是传统意义上的服务器,但对于个人使用来说,它安静、低功耗、性能足够,是一个非常理想的选择。加上 Cloudflare Tunnel 提供的安全性和便利性,这个组合简直是完美!
如果你也有闲置的 Mac mini 或其他计算机,不妨尝试这个方法,给它一个新的使命。