−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。

你需要准备

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。在家里,一切仍可通过本地地址照常使用。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。