用 Cloudflare Tunnel 把家裡的 Mac mini 變成正式伺服器

你有沒有算過,手上那些「想讓別人連得到」的小服務,一年要花你多少錢?一台最入門的 VPS 一個月幾百塊台幣跑不掉,服務一多還得升級規格。但回頭看看家裡——那台換代下來的 Mac mini 是不是正在角落吃灰?它的效能其實比入門 VPS 強得多,差的只是「外面的人連不進來」。
Cloudflare Tunnel 就是補上這塊拼圖的工具:它讓你把本地端的機器直接當作對外伺服器使用,不用承租實體機器、不用申請固定 IP、不用在路由器上開 port。我自己就是這樣把家裡的機器接上線的,這篇就帶你從零建置一遍。

Cloudflare Tunnel 是什麼?為什麼這麼香?
傳統把家用機器變伺服器的做法,是去路由器設 port forwarding、再想辦法處理浮動 IP(DDNS 之類的),等於把家裡的網路門戶直接打開,光想就有點毛。
Cloudflare Tunnel 的邏輯完全相反:你在機器上跑一個叫 cloudflared 的小程式,由它主動向 Cloudflare 建立一條加密的對外連線。使用者瀏覽你的網址時,流量先到 Cloudflare,再沿著這條隧道送回你家機器。整個過程:
- 不用開任何 port——連線方向是「由內向外」,路由器、防火牆完全不用動。
- 不用固定 IP——機器在家裡、咖啡廳、辦公室都行,
cloudflared連得上網就好。 - 家中 IP 完全隱藏——對外只看得到 Cloudflare 的節點,沒人知道伺服器其實在你家書房。
- HTTPS 自動搞定——憑證由 Cloudflare 處理,你本地跑純 HTTP 就好。
- 免費——Tunnel 本身在免費方案就能用,數量也夠你揮霍。
而對我來說最划算的一點是:一台機器可以同時開很多個服務。一條 Tunnel 能綁多個子網域,分別指到本機不同的 port——app1.你的網域 指到 localhost:3000、app2.你的網域 指到 localhost:8080⋯⋯家裡只要有一台多餘的機器,等於擁有一整排伺服器。
前置需求
開工前先確認兩件事:
- 一個 Cloudflare 帳號,而且你的網域已經託管在 Cloudflare(DNS 由 Cloudflare 管理)。Tunnel 要把子網域指到你的機器,DNS 必須在它手上才辦得到。
- 一台可以常開的機器。Mac mini 是這個用途的夢幻機種:安靜、省電、效能過剩;當然 Linux 小主機、樹莓派、甚至舊筆電都行。
步驟一:在 Zero Trust 後台建立 Tunnel
Tunnel 的管理介面不在一般的 Cloudflare dashboard,而是在 Zero Trust 後台(第一次進入會要你取個 team name,免費方案選 Free 即可):
- 登入 one.dash.cloudflare.com
- 左側選單進入 Networks → Tunnels
- 點 Create a tunnel,connector 類型選 Cloudflared
- 幫 Tunnel 取個名字(建議用機器名稱,例如
mac-mini-home,之後列表一看就知道是哪台機器)

取完名字按下一步,會看到安裝指令的畫面——先留著這個分頁,馬上要用。
步驟二:在機器上安裝 cloudflared
以 Mac 為例,用 Homebrew 裝最快:
brew install cloudflared裝完回到剛剛的後台分頁,它已經幫你產好一行帶 token 的安裝指令,直接複製貼到終端機執行:
sudo cloudflared service install <你的-tunnel-token>這行做了兩件事:把 cloudflared 註冊成系統服務(開機自動啟動,不用自己掛著終端機跑),並用 token 把這台機器跟你剛建立的 Tunnel 綁定。
執行完回到後台,畫面下方的 connector 狀態變成 Connected,就代表隧道已經打通了。

步驟三:把子網域指到本機服務(Public Hostname)
隧道通了,接著告訴 Cloudflare「哪個網址要送進這條隧道、送到本機的哪個 port」。在 Tunnel 設定的 Public Hostname 頁籤點 Add a public hostname:
| 欄位 | 範例值 | 說明 |
|---|---|---|
| Subdomain | app | 想用的子網域 |
| Domain | example.com | 你託管在 Cloudflare 的網域 |
| Type | HTTP | 本機服務的協定(本機跑 HTTP 就選 HTTP) |
| URL | localhost:3000 | 服務在本機監聽的位置 |
存檔的瞬間,Cloudflare 會自動幫你建好對應的 DNS 記錄,不用自己去 DNS 頁面加。這時候在本機把服務跑起來:
# 隨便舉例:你的 Node.js 服務跑在 3000 port
node server.js打開 https://app.example.com——你家機器上的服務已經掛著正式網域、帶著有效的 HTTPS 憑證,對全世界服務了。第一次成功時真的會有點感動:全程沒碰路由器、沒填信用卡。

一台機器,開一整排服務
這是我覺得 Tunnel 最超值的地方。同一條 Tunnel 可以一直 Add a public hostname,每條規則對應一個本機 port:
| 子網域 | 本機服務 |
|---|---|
blog.example.com | localhost:3000(部落格) |
api.example.com | localhost:8080(API 服務) |
n8n.example.com | localhost:5678(自動化流程) |
機器扛得住,服務就能一直加。如果家裡有第二台機器,再建一條新 Tunnel 綁過去就好——後台列表會清楚列出每條 Tunnel 跟它的狀態,哪台機器斷線了一眼就看得出來。
自架前你該知道的幾件事
把家用機器推上線之前,幾個我自己整理的注意事項:
- 別讓機器睡著。Mac 記得到「系統設定 → 能源」關閉自動睡眠(或勾「防止自動進入睡眠」);筆電要留意闔蓋睡眠的行為。機器一睡,隧道就斷。
- 服務是真的暴露在公網上。網址猜得到就連得到,後台管理介面(像 n8n、資料庫管理工具)建議再套一層 Cloudflare Access——同樣在 Zero Trust 後台設定,可以限制只有特定 Email 登入後才看得到頁面,免費方案就有。
- 它不是檔案下載站方案。Cloudflare 的服務條款不希望你拿免費代理流量去做大量影音串流或檔案散布,正常的網站、API、side project 完全沒問題。
- 家用網路的上傳頻寬是上限。台灣常見的非對稱光纖(下載快上傳慢),上傳頻寬才是訪客的下載速度,流量大的服務要心裡有數。
結語
回頭看整個流程:建 Tunnel、裝 cloudflared、綁子網域,三步就把一台閒置的 Mac mini 變成正式伺服器,而且之後每多一個 side project,只是多加一條 hostname 規則的事。
對於還在「每個月付 VPS 月租但其實流量很小」的朋友,真心建議試試這套組合——機器是現成的、Tunnel 是免費的,省下來的月租拿去喝咖啡不香嗎?
有問題歡迎留言,我們下篇見!