−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

用於遠端存取 Home Assistant 的 VPS

無需在家裡開放埠,隨時隨地存取 Home Assistant:一台小 VPS 執行 WireGuard 和 HTTPS,由您家主動連線過去。搭建方法、成本與侷限。

您想在火車上開啟 Home Assistant 的儀表板。路由器卻不答應:電信業者把您放在了電信業者級 NAT 之後,或者埠轉發雖然可行,但您不想為了開一盞燈就把整個家庭網路掛到網際網路上。一台小 VPS 就能同時解決這兩個問題。您家透過 WireGuard 主動向外連線到它,而 VPS 是唯一的公開門面:有真正的網域、真正的憑證,家裡沒有任何東西在監聽外部世界。

這套方案如何運作

phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
                       ▲
              home box dials out on UDP 51820

VPS 上執行兩樣東西:一個 WireGuard 伺服器,以及作為反向代理的 Caddy。在家裡,一個 WireGuard 用戶端(執行在 Home Assistant 主機、樹莓派或路由器上)保持通道常開。當您存取 https://ha.example.com 時,Caddy 會把請求透過通道轉給 10.8.0.2:8123。

您需要準備

  • 一個帶獨立 IP 的方案。 VPS 必須接受對內的 443 埠和 UDP 51820。每月 $8 的 Nano-IP 綽綽有餘:它只搬運幾千位元組的儀表板流量,毫不費力。NAT 方案除了您的專屬 SSH 埠外不接受任何對內連線(我們的 NAT 如何工作)。
  • 一個網域,其 A 記錄指向 VPS 的 IP。
  • 家裡的一個 WireGuard 用戶端,能在區域網記憶體取到 Home Assistant。

1. VPS 上的 WireGuard 伺服器

apt update && apt install -y wireguard caddy
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
chmod 600 /etc/wireguard/server.key

cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)

[Peer]
# the home side
PublicKey = HOME_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
EOF

systemctl enable --now wg-quick@wg0
ufw allow 51820/udp && ufw allow 80,443/tcp

2. 家裡這一端

在家中任意一台 Linux 機器上(或在 Home Assistant 的 WireGuard 用戶端載入項中)建立對端。keepalive 很重要:它能讓通道穿過家用路由器的 NAT 保持開啟。

[Interface]
Address = 10.8.0.2/24
PrivateKey = HOME_PRIVATE_KEY

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = ha-vps.example.com:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25

如果 WireGuard 用戶端執行在與 Home Assistant 不同的機器上,就把 10.8.0.2:8123 轉發到區域網中的 HA 主機;更簡單的做法是直接在 HA 主機上執行用戶端。

3. 用 Caddy 提供 HTTPS

cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
    reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy

Caddy 會自動申請憑證,並處理 Home Assistant 應用依賴的 WebSocket 連線。

4. 讓 Home Assistant 信任代理

缺少這一步,HA 會拒絕經過代理的請求。在 configuration.yaml 中加入:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.8.0.1

重新啟動 Home Assistant,開啟 https://ha.example.com,並在手機應用中把這個 URL 設為外部位址。

坦誠說說取捨

HTTPS 在 VPS 上終止,所以這台伺服器在流量進入通道前能看到明文的儀表板內容。伺服器是您的,這正是關鍵,但請把它當作家庭網路的一部分來對待:只用 SSH 金鑰登入、開啟自動更新、不跑任何其他東西。請保持 Home Assistant 的密碼和兩步登入開啟;代理並不是一個認證層。

Home Assistant 團隊的官方付費雲服務能以零維護完成同樣的事,還能資助這個專案。如果您完全不想維運伺服器,那是一個非常好的選擇。當您已經在自建服務、想用自己的網域,或者以後想把家裡的其他服務也放到同一條通道後面時,VPS 方案才更勝一籌。

相關指南

準備好部署了嗎?以加密貨幣付款,免 KYC——大約一分鐘上線。

立即部署 →

常見問題

為什麼用 VPS,而不是在路由器上做埠轉發?

很多家庭頻寬位於電信業者級 NAT(CGNAT)之後,根本沒有埠可轉發。即便有,把家裡的 IP 和路由器暴露在網際網路上也是不必要的風險。用 VPS 的話,由家裡主動建立 WireGuard 對外連線,唯一面向網際網路的是一台幾分鐘就能重建的小伺服器。

我需要哪個方案?

Nano-IP(每月 $8)綽綽有餘:它只負責轉發流量和終止 HTTPS。您需要帶獨立 IP 的方案,因為 VPS 必須接收對內 HTTPS 和一個 WireGuard 的 UDP 埠;NAT 方案除了您的 SSH 埠外不接受任何對內連線。

VPS 能看到我的 Home Assistant 流量嗎?

HTTPS 在 VPS 上終止,所以您控制的伺服器在把請求送進通道之前能看到解密後的內容。這和任何反向代理的信任模型相同,區別在於這台機器是您的。無論如何,都請保持 Home Assistant 自身的登入和兩步驗證處於開啟狀態。

會增加延遲嗎?

多一跳而已。從歐洲的家到位於歐盟的 VPS,往返通常為 10–40 ms,對儀表板、開關和攝像頭截圖來說幾乎感覺不到。只有即時影片流才可能察覺。

如果 VPS 當機會怎樣?

遠端存取會中斷,但家裡的自動化照常執行,因為 Home Assistant 本身從不依賴 VPS。在家裡,一切仍可透過本機位址照常使用。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。