自架服務要開給誰用

在家裡架了一個服務,接下來的問題是「誰連得到」。 很多人一想到「開給別人用」就直接跳到買網域 + 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 那一階,你會省下網域費、憑證管理、身分驗證、以及被掃描濫用之後的所有麻煩

公開之後就回不去了

服務一旦有公網位址,你就自動獲得了一份新工作:處理自動化掃描、機器人流量、還有各種你沒想過的攻擊面。這份工作沒有下班時間。在按下那個按鈕之前,先確定你真的需要陌生人連得到。


相關