將閒置的 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 或其他電腦,不妨試試這個方法,賦予它新的使命。