서론
Home Assistant를 보다 완벽하게 사용하기 위해선 내부 네트워크에서 구동 중인 Home Assistant를 외부에서 HTTPS으로 접속 가능하도록 설정하는 것이 필수입니다. 본 내용은 Home Assistant를 이전 단계의 설명(https://megastorage.tistory.com/531)대로 설치했고, 아래의 구조대로 서버가 설정되어 있다는 환경을 기준으로 설명합니다.
현재 네트워크 구조
저의 서버 구조는 위 사진과 같습니다. 외부 세상에서 집에 있는 서버로 접속 시 ESXi의 프록시 서버 VM을 필히 거치게 되어 있습니다. 왜냐하면 서브 도메인 주소를 이용한 '리버스(역방향) 프록시' 설정 때문입니다. 그리고 프록시 서버에서 모든 서브 도메인에 대해 Let's Encrypt 인증서 및 자동 갱신 설정을 해놓아서 매우 깔끔한 상태이기 때문입니다.
서브 도메인 주소로 접속 시 프록시 서버에서 어디로 갈지 안내를 하고, 마지막 종착역으로 이동하게 됩니다. 예를 들어서 nas.server.io 라고 접속할 시 맨 위의 NAS 가상 머신으로 접속하고, windows.server.io 라고 접속할 시 두번째에 있는 Windows 가상 머신으로 접속하는 것입니다.
따라서 본 내용은 아래의 환경 조건이어야 동일하게 따라할 수 있습니다.
- ESXi 8 사용
- 프록시 서버 VM이 구동 중일 것
- 공유기의 포트 포워딩 설정에서 80 및 443 포트는 항상 프록시 서버로 향할 것
- 프록시 서버에서 Let's Encrypt 인증서 및 자동 갱신 설정이 되어 있을 것
- 도메인 주소(예시 : www.naver.com)를 사용하고 있을 것
- 도메인 서비스 제공 업체에서 서브 도메인 설정이 가능할 것
- 도메인 서비스 제공 업체가 CloudFlare 일 것 (서브 도메인 등록 과정 때문임)
CloudFlare에서 서브 도메인 등록
우선 CloudFlare에 로그인 합니다. ( https://cloudflare.com ) 그리고 좌측의 메뉴에서 '도메인 등록'의 '도메인 관리'를 클릭한 후 본인의 도메인 주소 옆에 있는 '관리'를 클릭합니다.
우측의 '빠른 동작'에 있는 "DNS 구성 업데이트"를 클릭합니다.
서브 도메인 추가하려면 '레코드'를 추가 해야 합니다. '레코드 추가' 버튼을 클릭합니다.
유형은 "A", 이름에는 서브 도메인으로 설정할 값을 넣습니다. 저는 홈 어시스턴트의 약자인 ha라고 지정했습니다. IPv4 주소는 서버가 위치한 곳의 외부 IP 주소입니다. 입력을 다 했다면 "저장" 버튼을 클릭합니다.
"ha"라는 서브 도메인 주소가 성공적으로 추가 되었습니다.
프록시 서버 설정
제가 만들어 둔 프록시 서버는 우분투 서버 기반입니다. mobaxterm SSH 프로그램으로 프록시 서버로 접속했습니다. 그리고 nginx 설정을 변경할 것입니다.
sudo nano /etc/nginx/sites-available/default
server {
if ($host = ha.yourserver.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name ha.yourserver.com;
return 301 https://ha.yourserver.com$request_uri;
}
server {
listen 443 ssl;
server_name ha.yourserver.com;
ssl_certificate /etc/letsencrypt/live/ha.yourserver.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ha.yourserver.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass https://192.168.0.253:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 웹소켓 관련 헤더 추가
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
"ha.yourserver.com" 라고 되어 있는 부분을 본인의 도메인 주소로 변경하시면 됩니다. 수정된 내용을 "/etc/nginx/sites-available/default" 문서 맨 하단에 추가 후 저장합니다.
웹소켓 관련 헤더가 추가되었습니다. 없어도 로그인 화면까지 접속은 되나, 로그인 후 "Unable to connect to Home Assistant." 라는 에러 메시지가 뜨고 60초마다 로그인을 반복합니다. 이 때 웹소켓 관련 헤더를 추가하면 됩니다.
그리고 문법이 올바른지 검사를 수행해야 합니다.
sudo nginx -t
위와 같이 문법 및 테스트 모두 성공이어야 합니다. 그리고 nginx를 재시작 해야 하므로 아래의 명령어를 입력합니다.
sudo systemctl restart nginx
Let's Encrypt 인증서 설정
인증서 발급을 위한 certbot 설치가 되어 있어야 합니다. 만약 없다면 아래의 명령어로 certbot을 설치합니다.
sudo apt install certbot python3-certbot-nginx
그리고 인증서 발급을 진행합니다. 아래의 yourserver.com 부분을 본인의 도메인 주소로 변경합니다.
sudo certbot --nginx -d ha.yourserver.com
위와 같이 HTTPS 활성화 성공 화면이 나타나야 합니다.
File editor 설치 및 configuration.yaml 수정
좌측 하단의 '설정' 버튼 클릭 후 '애드온' 메뉴로 이동합니다.
우측 하단의 파란색 버튼으로 되어 있는 '애드온 스토어'를 클릭합니다. 그러면 File editor를 찾을 수 있습니다. (Official add-ons에 있음) 설치합니다.
설치가 완료되었다면 "웹 UI 열기" 버튼을 클릭합니다.
좌측 상단의 폴더 모양을 누르면 파일 목록이 나타납니다. 여기서 "configuration.yaml"을 선택합니다.
configuration.yaml 에서 아래의 내용을 추가합니다.
http:
use_x_forwarded_for: true
trusted_proxies:
- 프록시 아이피 주소
저의 프록시 서버 내부 아이피 주소는 192.168.0.200 이므로, 이미지처럼 적혀있습니다. 저장 버튼을 누릅니다.
Home Assistant 재부팅
좌측 하단의 설정 버튼 클릭 후 '시스템'을 선택합니다. 우측 상단에 있는 전원 버튼 모양을 클릭하면 "Home Assistant 재시작" 이라는 메뉴가 뜨게 됩니다. 재시작 버튼을 누릅니다.
HTTPS 접속 성공
메인 페이지에 접속해봤습니다. 드디어!!! 접속 성공입니다. 사용자 이름과 암호를 입력해서 로그인을 진행합니다.
로그인 했을 때 위와 같이 메인 화면이 잘 떠야 합니다. 연결 실패 메시지가 뜨는 경우엔 '웹소켓' 설정에 문제가 있는 것이므로 다시 한 번 확인해봅니다.
Home Assistant 앱 HTTPS 접속 확인
Home Assistant 앱을 실행한 후 하단의 "주소 수동 입력" 버튼을 선택합니다. 그리고 https://를 포함한 도메인 주소를 입력 후 연결합니다.
주소를 정확히 입력했다면 좌측과 같은 로그인 화면이 나타날 것입니다. 사용자 이름과 암호를 정상적으로 입력했다면 우측과 같이 메인 화면이 보일 것입니다. 당연하지만 셀룰러 상태에서도 잘 됩니다.
마무리
지금까지 Home Assistant를 HTTPS로 연결하고 외부망에서 깔끔하게 접속하기 위한 설정 방법을 보셨습니다. 이 글을 보신 분들 모두 다 성공하셨길 바라며... 이만 끝마치도록 하겠습니다. 감사합니다. :)
'★3. 삼런이의 [테크니컬]' 카테고리의 다른 글
[카드] 네이버 페이 머니 카드 - 3개월 사용기 (해외결제 최강 체크카드) (1) | 2024.09.22 |
---|---|
[IoT] Home Assistant 서버 구축 - SmartThings 연동 (0) | 2024.08.05 |
[IoT] Home Assistant 서버 구축 - HA OS 설치 (feat. ESXi) (0) | 2024.08.04 |
[카드] 네이버페이 머니카드 혜택 총정리 및 발급 후기 (초간단 30초 발급 신청) (3) | 2024.06.20 |
[AI] Meta Llama 3 설치 및 Open WebUI 실행까지 (Windows) (4) | 2024.04.28 |