기차 안에서 Home Assistant 대시보드를 열고 싶습니다. 그런데 공유기가 허락하지 않습니다. 통신사가 캐리어급 NAT 뒤에 두었거나, 포트 포워딩은 가능하지만 전등 하나 켜자고 집 네트워크 전체를 인터넷에 노출하고 싶지 않은 상황입니다. 작은 VPS 하나로 두 문제를 모두 해결할 수 있습니다. 집이 WireGuard로 VPS에 바깥 방향으로 연결하고, 외부에 드러나는 얼굴은 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 호스트, Raspberry Pi 또는 공유기)가 터널을 계속 열어 둡니다. https://ha.example.com에 접속하면 Caddy가 요청을 터널을 통해 10.8.0.2:8123으로 넘깁니다.
필요한 것
- 전용 IP 요금제. VPS는 들어오는 443 포트와 UDP 51820을 받아야 합니다. 월 $8인 **Nano-IP**면 넉넉합니다. 몇 킬로바이트의 대시보드 트래픽을 가볍게 옮깁니다. NAT 요금제는 개인 SSH 포트 외의 들어오는 연결을 받지 않습니다(NAT 작동 방식).
- VPS IP를 가리키는 A 레코드가 있는 도메인.
- LAN에서 Home Assistant에 닿을 수 있는 집의 WireGuard 클라이언트.
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을 LAN의 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의 비밀번호와 2단계 로그인은 켜 두세요. 프록시는 인증 계층이 아닙니다.
Home Assistant 팀의 유료 공식 클라우드 서비스는 같은 일을 유지 관리 없이 해 주고 프로젝트 후원도 됩니다. 서버를 전혀 운영하고 싶지 않다면 아주 좋은 선택입니다. VPS 방식이 유리한 경우는 이미 셀프 호스팅을 하고 있거나, 자신의 도메인을 쓰고 싶거나, 나중에 다른 집 서비스도 같은 터널 뒤에 두고 싶을 때입니다.
관련 가이드
- VPS에 WireGuard VPN 구축하기: WireGuard 전체 가이드
- HTTPS를 적용한 Nginx 리버스 프록시: Caddy보다 Nginx를 선호한다면
- 새 VPS 보안 설정: 인터넷에 노출되는 모든 서버에서 가장 먼저 할 일
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.