自架服務要開給誰用
在家裡架了一個服務,接下來的問題是「誰連得到」。 很多人一想到「開給別人用」就直接跳到買網域 + Cloudflare,但中間其實有好幾階, 每一階多一點門檻、也多一點責任。
四個階梯
| 對象 | 方案 | 你要付出什麼 |
|---|---|---|
| 自己的所有裝置 | VPN 私網(Tailscale / WireGuard) | 每台裝置裝一次,之後完全無感 |
| 願意裝 VPN 的家人朋友 | VPN 的分享功能(Tailscale Share) | 邀請他們加入你的 tailnet,他們裝個 app |
| 不想裝 VPN 的特定人 | Tailscale Funnel | 一條 CLI 指令,暴露成 https://<主機>.<tailnet>.ts.net,內建 HTTPS |
| 真正完全公開 | Cloudflare Tunnel / VPS | 要網域、要自己做身分驗證、要管濫用 |
順序是有意義的:由內往外,一階一階加。每往外一階,「誰能碰到你的服務」這件事就少一分你的控制。
大多數人真正需要的其實停在第一或第二階——「開給別人用」常常只是「開給我家人用」。
先分清楚:你到底在保護什麼
跳到方案之前,先把服務拆成兩種東西,因為它們的門禁需求完全不同。
以一個「把社群內容轉成 RSS」的自架服務為例:
- 產出的 feed 本身:放在公開的靜態託管上,誰拿到網址都能訂閱——它本來就是公開的
- 管理用的 Web UI:控制「誰可以新增訂閱來源」——這才是需要門禁的地方
搞混這兩者,會做出「把整個服務鎖死」或「把管理介面也一起公開」這兩種錯誤。先問哪一塊真的需要保護,通常需要保護的比你想的少,但那一小塊必須守好。
「開給別人」的兩種情境,複雜度差很多
情境一:每個人用自己的資料(多租戶)
每個使用者有自己的清單、自己的設定、自己的產出。
這不是「擴充」,這是另一個產品:
- 要帳號系統、要資料庫
- 服務不能再跑在你家裡(別人不可能等你開機)
- 很多需要登入態的資料來源(社群平台的 cookie / token),根本沒有可行的多人方案
一旦聽到「那能不能讓每個人自己訂自己的」,你要意識到成本是一個數量級的跳躍,不是多寫兩個功能。
情境二:大家共用你的那份設定
單純很多,但風險換了一種形式:
- 你的登入憑證(cookie / token)被別人的行為連帶影響——例如觸發平台的反爬偵測,被鎖的是你的帳號
- 設定檔被塞進奇怪的內容
- 你的公開產出被污染
這個情境如果只開給信任的家人朋友,用 VPN 的分享功能是最乾淨的:他們透過 VPN 連回你家,你完全不暴露公網,共用同一套介面,風險可控。
什麼時候才真的需要走到最外階
值得走到「完全公開」的理由其實只有幾個:
- 需要被搜尋引擎索引
- 使用者是你不認識也無法事先邀請的陌生人
- 你打算把它當產品經營
如果都不是,停在 VPN 那一階,你會省下網域費、憑證管理、身分驗證、以及被掃描濫用之後的所有麻煩。
公開之後就回不去了
服務一旦有公網位址,你就自動獲得了一份新工作:處理自動化掃描、機器人流量、還有各種你沒想過的攻擊面。這份工作沒有下班時間。在按下那個按鈕之前,先確定你真的需要陌生人連得到。
相關
- 從外面連回家裡的內網服務 —— 只給自己用的那一階怎麼做
- Cloudflare Pages 設定 Branch Preview