搭建自己第一個homelab,感覺可能會幾令人唔知所措嘅,尤其係當你要面對大多數教程都刻意跳過嘅網絡挑戰嗰陣。經過數月嘅反覆試錯同創造性解題,呢套設置逐漸發展成咗一整套自行託管基礎設施,跑住一個作品集網站、托管家人嘅網站,甚至仲支撐緊遊戲伺服器,而呢一切都嚟自一部唔起眼嘅Dell OptiPlex 7070 Micro。呢度係由零到完全自行託管嘅完整故事,包括路上遇到嘅各種障礙,以及佢哋係點樣被解決嘅。
起點:點解揀自行託管而唔係雲
同好多開發者一樣,起點係顯而易見嘅選擇:雲托管。但當你要同時跑多個項目,又想自由咁做各種實驗嗰陣,嗰每月5到20美元嘅帳單好快就會累積起嚟。更重要嘅係,幾個具體嘅需求令自行託管變得好有吸引力:
- 托管一個個人作品集網站
- 需要一部Minecraft伺服器同家人一齊玩遊戲
- 想完全掌控基礎設施
- 對其中涉及嘅技術挑戰感到好奇
Dell OptiPlex 7070 Micro成咗起點。佢體積細、能耗低,而且性能足以跑多個服務,非常適合搭喺睡房入面嘅伺服器方案。
挑戰一:突破CGNAT地獄
呢正正係大多數homelab教程力不從心嘅地方:佢哋假設你有一個公網IP位址。但實際上,大多數家用網絡都喺運營商級NAT(CGNAT)後面,唔用變通方法嘅話,由屋企托管服務幾乎係唔可能嘅。
安裝好Ubuntu Server、準備好基礎配置之後,呢堵牆即刻就出現咗。域名已經透過Cloudflare買好咗,本地一切都設定妥當,但外部世界卻冇辦法觸達伺服器。
混合方案:VPS + Tailscale
解決方案涉及一種喺別處唔太有文件記載嘅組合:
第一步:VPS代理設定。 用一部每月5美元嘅DigitalOcean VPS,唔係用嚟托管服務,而係作為一個代理網關。咁樣就攞到咗一個可以接收互聯網流量嘅公網IP位址。
第二步:Tailscale網絡橋接。 喺VPS同家用伺服器上都安裝咗Tailscale。Tailscale嘅advertise-routes功能令網絡內嘅裝置可以訪問特定路由,但仍然有個問題:點樣將HTTP流量由VPS路由去家用伺服器上嘅特定端口?
第三步:Nginx Proxy Manager嘅魔法。 呢個就係Nginx Proxy Manager成為關鍵轉折點嘅地方。佢跑喺VPS上,可以接收入嚟嘅流量,再經Tailscale網絡代理去家用伺服器嘅特定端口。成套方案睇落係咁樣嘅:
Internet -> Cloudflare -> VPS (Nginx Proxy Manager) -> Tailscale Network -> Home Server
呢套架構解決咗幾個問題:
- 唔受VPS儲存限制,可以托管無限多個網站
- SSL證書自動處理
- 對家用伺服器嘅資源擁有完全控制權
- 無論跑幾多服務,VPS成本都保持不變
挑戰二:遊戲伺服器與UDP流量
Nginx代理方案對網頁流量非常好用,但Minecraft伺服器用嘅係UDP,同HTTP代理唔太夾。Tailscale嘅域名喺經過其基礎設施代理時,同樣都冇辦法處理UDP。
於是playit.gg登場咗,一個專門為遊戲伺服器設計嘅隧道服務。佢建立嘅隧道能完美處理UDP流量,而且設定起嚟都好直接。遊戲方案變成咗:
- Minecraft伺服器跑喺家用伺服器上
- 用playit.gg隧道做外部訪問
- 家人透過Tailscale網絡連接以攞到最佳性能
呢種混合方案兼顧咗兩方面嘅優點:可靠嘅網頁托管同流暢嘅遊戲體驗。
擴展規模:多個站點同服務
基礎設施到位之後,擴展亦隨之而嚟。目前正在運行嘅有:
- 一個個人作品集
- 一位家人嘅網站(clofelmaecampugan.com)
- 一個家庭網誌網站(doc-agnes.com)
- 一部供家人遊戲嘅Minecraft伺服器
每個站點都跑喺自己獨立嘅容器或虛擬環境入面,透過Nginx Proxy Manager面板隔離並管理。
演進:擺脫VPS,實現純粹嘅自行託管
幾個月之後,VPS開始感覺好似係為一件本可以喺本地跑嘅事洗錢搵咗個昂貴嘅中間人。轉折點出現喺向PLDT(當地ISP)申請公網IP位址嘅時候。
動態IP嘅挑戰
攞到公網IP只係第一步。家用網絡通常配嘅係會定期變化嘅動態IP,每次變化都會打斷你嘅服務。
最初嘅解決方案:DDNS。 傳統嘅動態DNS服務用得,但用起嚟幾笨拙,IP變化發生時偶爾仲會有延遲。
目前嘅解決方案:MikroTik + 自訂自動化。 一部MikroTik路由器令一套更穩健嘅系統成為可能:
- MikroTik DDNS:負責主要嘅IP變化偵測
- 自訂IP監控腳本:跑喺伺服器上負責偵測變化
- 自動子域名更新:偵測到IP變化時,腳本會自動更新Cloudflare嘅DNS記錄
- Tailscale整合:更新Tailscale設定以維持網絡連接
呢套方案已經穩定運行咗好幾個月,IP變化期間零停機。
擴展homelab:Unraid與徹底去Google化
第一部伺服器嘅成功帶嚟咗擴展。第二部運行Unraid嘅機器被搭建起嚟,專門用於:
- 檔案儲存與備份
- Immich(自行託管嘅Google Photos替代品)
- 媒體串流播放
- 額外服務托管
去Google化之旅
由Google Photos遷移去Immich出乎意料咁順利。Immich提供:
- 手機自動上傳相片
- 人臉識別與AI輔助整理
- 家庭共享相簿
- 對數據嘅完全掌控
遷移只花咗一個週末,而家相片同影片有咗無限嘅儲存空間,而且唔使每月俾訂閱費。
真實成本與取捨
講吓數字,因為呢個好重要:
每月成本:
- 電費增加:約500比索(大概9美元)
- 域名註冊:每年約800比索(每年14美元)
- 再唔使俾VPS費用:每年慳返60美元
前期投入:
- Dell OptiPlex 7070 Micro:約15000比索
- MikroTik路由器:約3000比索
- Unraid伺服器組件:約25000比索
電費嘅增加係真實且持續存在嘅。啱啱好同一個月人工加咗500比索,呢個算係完美嘅時機,定係宇宙級嘅諷刺,你自己判斷啦。
學到嘅教訓與技術心得
效果不錯嘅地方:
- Tailscale喺內部網絡上嘅可靠性
- Nginx Proxy Manager喺反向代理上嘅簡單易用
- MikroTik強大嘅DDNS能力
- 基於容器嘅服務隔離
可以做得唔一樣嘅地方:
- 一開始就用更強力嘅路由器
- 更早規劃電力消耗
- 一開始就搭好監控同告警
- 更徹底咁記錄設定文件
意外嘅收穫:
- 對網絡概念嘅深刻理解
- 排查複雜系統問題嘅信心
- 對數字基礎設施嘅完全掌控
- 每個新服務都帶嚟學習機會
目前嘅架構概覽
而家嘅方案大概係咁樣嘅:
Internet
|
v
Cloudflare (DNS/CDN)
|
v
MikroTik Router
|
v
Home Network
|
+-- OptiPlex (Web services)
|
+-- Unraid Server (Storage/Media)
|
+-- Tailscale Network (Internal access)
正在運行嘅服務:
- 網頁托管:多個WordPress站點同靜態站點
- 檔案儲存:Immich、Nextcloud
- 遊戲:Minecraft伺服器
- 監控:在線率監控、系統指標
- 開發:Git倉庫、CI/CD流水線
自行託管值唔值得?
就呢套配置嚟講,絕對值得,但都有一啲但書。
如果符合以下情況,可以考慮自行託管:
- 你享受學習同排查問題嘅過程
- 你想完全掌控自己嘅數據
- 你運營住多個服務或網站
- 你有可靠嘅網絡同電力
- 你唔介意自己做系統管理員
如果符合以下情況,不妨繼續用雲托管:
- 你想要零維護負擔
- 你需要企業級嘅正常運行時間保證
- 你運營住業務關鍵型服務
- 你經常出差,需要遠程管理
接下嚟做咩?
homelab之旅仲喺度繼續,計劃中嘅有:
- 用於容器編排嘅Kubernetes叢集
- 向雲端儲存自動備份
- 家庭自動化整合
- 更高效嘅硬件升級
學習永不停止,每一個挑戰都會帶嚟關於系統管理、網絡同基礎設施管理嘅新見解。
最後嘅感想
搭建homelab教識我關於網絡、系統管理同解決問題嘅嘢,比任何教程或課程都多。係,電費確實漲咗;係,偶爾都會喺奇怪嘅時段收到「網站掛咗」嘅訊息。但獲得嘅知識以及對數字基礎設施嘅完全掌控,令呢一切都值得。
如果你喺考慮類似嘅旅程,建議由細處開始,記錄好一切,唔好驚去嘗試。最有價值嘅學習往往發生喺事情出問題、你要去搞清楚點樣整返好嘅時候。
運營自己嘅基礎設施,唔止係為咗慳錢,更係為咗理解驅動住我哋數字世界嘅呢啲系統,並擁有自己動手構建、打破、再重建佢哋嘅能力。