【極客指南】用 Mac Mini M4 + Coolify + Supabase 自託管,打造超強效、全自動的 Next.js 開發閉環

在雲端服務(Vercel, Supabase Cloud)越來越貴、免費額度不斷縮水的時代,利用本地硬體進行「自託管(Self-Hosting)」已經成為獨立開發者(Indie Hacker)與極客們的顯學。
最近入手了地表最強小鋼砲 Mac Mini M4,我決定用它來搭建一套地表最強的本地 PsaS(Platform as a Service)平台。本文將詳細拆解如何利用 Coolify 作為部署大腦、Claude Code 作為 AI 開發助手、Supabase 作為後端資料庫,並結合 pfSense 與 Cloudflare Tunnel 的架構抉擇,打造一套地表最強的開發閉環。

:hammer_and_wrench: 核心架構圖景

我們的目標是建立一個自動化流程:

Claude Code(AI 寫 Code) :right_arrow: GitHub(代碼託管) :right_arrow: Coolify(自動監聽、構建與部署) :right_arrow: Mac Mini M4(本地容器化運行 Next.js & Supabase)


一、硬體與系統調教:讓 Mac Mini M4 成為合格的伺服器

Mac Mini M4 的效能跑這些服務絕對是「殺雞用牛刀」,但 macOS 本質上不是伺服器系統,在上工前必須進行以下調教:

  1. 防止因斷電失聯:進入「系統設定」>「能源節約」,務必開啟**「斷電後自動啟動」**。
  2. 拒絕休眠:伺服器不能睡覺。可以使用內建指令 caffeinate,或安裝知名小工具 Amphetamine,確保 Mac 24 小時保持清醒。
  3. 架構與虛擬化優化:M4 晶片是 ARM64 架構。在 macOS 上運行 Docker,強烈建議放棄笨重的 Docker Desktop,改用 OrbStack。OrbStack 啟動速度極快、記憶體佔用極低,且對 M 系列晶片的 Rosetta 2 轉譯支援極佳。

二、Coolify 與 Supabase Self-Host 的恩怨情仇

Coolify 是目前開源界最火紅的 Vercel / Heroku 替代品。它內建了「一鍵部署 Supabase」的 Service 範本,但自託管 Supabase 有幾點「大坑」你必須知道:

  • Docker 資源配額:Supabase 自託管是由多個容器(PostgreSQL, GoTrue, PostgREST, Storage 等)組成的微服務群。請務必在 OrbStack/Docker 中,至少分配 4GB 以上的獨立記憶體給 Supabase 運行,否則極易集體卡死。
  • 自託管的功能閹割:免費的代價是手動。自託管版本缺乏雲端版的完整管理後台 UI(部分功能需進資料庫下 SQL 處理),且沒有內建的日誌分析(Log Analytics),第三方 OAuth 登入設定也較為繁瑣。
  • 環境變數安全:搭配 Claude Code 進行 AI 自動化開發時,切記不要讓 AI 把 Supabase 的 service_role_key 或資料庫密碼寫死在專案代碼中。應統一在 Coolify 的 Environment Variables 後台進行注入。

三、外網暴露的關鍵抉擇:pfSense 還是 Cloudflare Tunnel?

既然服務跑在家裡的 Mac Mini 上,外網的用戶(或是 Webhook)該如何存取我們的 Next.js 應用與 Supabase?如果你的網路環境裡有一台專門的 pfSense 防火牆,你有兩個非常經典的路線抉擇:

方案 A:pfSense (HAProxy + ACME) 自行代理

  • 怎麼做:在 pfSense 上開啟 80/443 連接埠映射(Port Forwarding),利用 HAProxy 做反向代理與流量分發,並用 ACME 插件自動更新 Let’s Encrypt SSL 憑證。
  • 優點:數據 100% 掌握在自己手上(完全隱私)。沒有任何上傳檔案大小限制(非常適合 Supabase Storage 需要大檔案傳輸的場景)。
  • 缺點:必須擁有實體公網 IP(固定或浮動 DDNS皆可)。公網 IP 直接暴露在網際網路上,容易成為掃描器和 DDoS 攻擊的目標。

方案 B:Cloudflare Tunnel (cloudflared)

  • 怎麼做:在 Mac Mini 上運行 Cloudflare Tunnel 守護進程,主動向 Cloudflare 建立一條加密通道,外網流量全部由 Cloudflare 轉發。
  • 優點:** pfSense 不需要開啟任何連接埠**,安全性拉滿!就算處在社區寬頻(大內網 CGNAT)沒有公網 IP 也能用。自帶全球 CDN 讓 Next.js 靜態資源跑得飛快。
  • 缺點:所有流量都會被 Cloudflare 解密審查。免費版有 100MB 單次上傳限制。此外,Supabase 的實時功能(Realtime)高度依賴 Websocket,Cloudflare 免費版對長連線有一些潛在限制。

:light_bulb: 我的架構結論:

  • 如果你的 App 屬於內部工具、個人專案,或是會處理大量大檔案上傳,且你有公網 IP :right_arrow: 果斷選擇 pfSense 自行代理。
  • 如果你的 App 要面向公眾市場(生產環境),擔心被攻擊,且需要 CDN 加速 :right_arrow: 選擇 Cloudflare Tunnel。

四、極速開發流:Claude Code + Next.js + Coolify

最後,談談開發體驗。Claude Code CLI 的加入讓整個生態系變得無比瘋狂。
在本地開發 Next.js 時,我只需要在終端機對 Claude 下指令:

“幫我寫一個結合 Supabase Auth 的登入頁面,並串接使用者資料表。”

Claude Code 會自動在本地修改 Next.js 專案代碼。當我測試滿意後,將代碼 git push 到 GitHub。這時,Coolify 會透過 Webhook 立刻捕捉到代碼更新,自動在 Mac Mini M4 上啟動 Docker 構建(Build)流程。如果是 SSR(伺服器渲染)應用,Coolify 會打包成 Node.js 容器運行;如果是 SSG(靜態導出),則會自動用內建的 Nginx 高效部署。

結語

Mac Mini M4 的超強晶片加上開源的 Coolify,讓我們只花了一台硬體的錢,就在家裡搭建出了一個不輸給 Vercel + Supabase 雲端組合的「全功能開發基地」。
有了這套架構,無論是驗證 Side Project、還是幫客戶開發中小型應用,你都擁有了極高的自主權與近乎為零的後續訂閱成本。準備好一起加入 Self-Hosting 的行列了嗎?

:speech_balloon: 互動反饋

你目前也是自託管愛好者嗎?你在 macOS 上跑 Docker 遇過哪些坑?歡迎在下方留言與我討論!