−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS

VPS để truy cập Home Assistant từ xa

Truy cập Home Assistant ở bất cứ đâu mà không cần mở cổng tại nhà: một VPS nhỏ chạy WireGuard và HTTPS, còn nhà bạn chủ động kết nối tới nó. Cách thiết lập, chi phí, giới hạn.

Bạn muốn mở bảng điều khiển Home Assistant khi đang ngồi trên tàu. Router nói không: nhà mạng đặt bạn sau carrier-grade NAT, hoặc có thể mở cổng nhưng bạn không muốn phơi cả mạng gia đình ra internet chỉ để bật một bóng đèn. Một VPS nhỏ giải quyết cả hai. Ngôi nhà của bạn kết nối ra ngoài tới nó qua WireGuard, và VPS là bộ mặt công khai duy nhất: với tên miền thật, chứng chỉ thật và không có gì trong nhà lắng nghe thế giới bên ngoài.

Cách thiết lập hoạt động

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

VPS chạy hai thứ: một máy chủ WireGuard và Caddy làm reverse proxy. Ở nhà, một máy khách WireGuard (trên máy chạy Home Assistant, một Raspberry Pi hoặc router) giữ đường hầm luôn mở. Khi bạn truy cập https://ha.example.com, Caddy chuyển yêu cầu qua đường hầm tới 10.8.0.2:8123.

Bạn cần gì

1. Máy chủ WireGuard trên VPS

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. Phía ngôi nhà

Trên bất kỳ máy Linux nào ở nhà (hoặc trong add-on máy khách WireGuard của Home Assistant), hãy tạo peer. Keepalive rất quan trọng: nó giữ đường hầm mở xuyên qua NAT của router gia đình.

[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

Nếu máy khách WireGuard chạy trên máy khác với Home Assistant, hãy chuyển tiếp 10.8.0.2:8123 tới máy HA trong mạng nội bộ; hoặc đơn giản hơn, chạy máy khách ngay trên máy HA.

3. HTTPS với Caddy

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

Caddy tự động lấy chứng chỉ và xử lý kết nối WebSocket mà ứng dụng Home Assistant dựa vào.

4. Bảo Home Assistant tin tưởng proxy

Nếu thiếu bước này, HA sẽ từ chối các yêu cầu đi qua proxy. Trong configuration.yaml:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.8.0.1

Khởi động lại Home Assistant, mở https://ha.example.com và đặt URL đó làm địa chỉ bên ngoài trong ứng dụng di động.

Những đánh đổi, nói thật

HTTPS kết thúc tại VPS, nên máy chủ đó thấy lưu lượng bảng điều khiển ở dạng văn bản rõ trước khi đi vào đường hầm. Máy chủ là của bạn, và đó chính là mục đích, nhưng hãy coi nó như một phần của mạng gia đình: chỉ dùng khóa SSH, bật cập nhật, không chạy gì khác trên đó. Luôn bật mật khẩu Home Assistant và đăng nhập hai lớp; proxy không phải là một lớp xác thực.

Dịch vụ đám mây chính thức trả phí của đội ngũ Home Assistant làm cùng việc này mà không cần bảo trì và còn tài trợ cho dự án. Nếu bạn hoàn toàn không muốn vận hành máy chủ, đó là một câu trả lời rất tốt. Con đường VPS thắng thế khi bạn đã tự lưu trữ, muốn dùng tên miền riêng, hoặc sau này muốn đặt các dịch vụ khác trong nhà phía sau cùng đường hầm.

Hướng dẫn liên quan

Sẵn sàng triển khai? Thanh toán bằng crypto, không KYC — trực tuyến trong khoảng một phút.

Triển khai ngay →

FAQ

Vì sao nên dùng VPS thay vì mở cổng trên router?

Nhiều đường truyền gia đình nằm sau carrier-grade NAT (CGNAT), nên không có cổng nào để chuyển tiếp. Ngay cả khi có, việc phơi IP nhà và router ra internet là một rủi ro không cần thiết. Với VPS, chính ngôi nhà mở kết nối WireGuard đi ra, và thứ duy nhất đối diện internet là một máy chủ nhỏ mà bạn có thể dựng lại trong vài phút.

Tôi cần gói nào?

Nano-IP ($8/tháng) là quá đủ: nó chỉ chuyển tiếp lưu lượng và kết thúc HTTPS. Bạn cần gói có IP riêng, vì VPS phải nhận HTTPS đi vào và một cổng UDP cho WireGuard; gói NAT không nhận kết nối đi vào ngoài cổng SSH của bạn.

VPS có thấy lưu lượng Home Assistant của tôi không?

HTTPS kết thúc tại VPS, nên máy chủ bạn kiểm soát sẽ thấy các yêu cầu đã giải mã trước khi gửi chúng qua đường hầm. Đó là mô hình tin cậy giống mọi reverse proxy; khác biệt là máy đó thuộc về bạn. Dù thế nào, hãy luôn bật đăng nhập và xác thực hai lớp của chính Home Assistant.

Nó có làm tăng độ trễ không?

Thêm một chặng. Từ một ngôi nhà ở châu Âu tới VPS ở Đức hoặc Phần Lan thường mất 10–40 ms khứ hồi: không thể nhận ra với bảng điều khiển, công tắc và ảnh chụp camera. Chỉ với video trực tiếp bạn mới có thể cảm thấy.

Điều gì xảy ra nếu VPS ngừng hoạt động?

Truy cập từ xa dừng lại; các tự động hóa trong nhà vẫn chạy, vì bản thân Home Assistant chưa bao giờ phụ thuộc vào VPS. Trong nhà mọi thứ vẫn hoạt động như trước qua địa chỉ nội bộ.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.