본문 바로가기
Hardware/Home Assistant

라즈베리파이OS 설치 후 도커 + Home Assistant Supervised 설치방법 (data파일은 SSD로)

by lovey25 2021. 2. 10.

배경

라즈베리파이 OS가 설치되어 있다는 가정하에서 시작합니다. 라즈베리파이 OS 설치에 대해서는 이전 포스팅을 참고해 주세요.

Home Assistant(HA)를 설치하는 방법에는 여러 가지가 있습니다. HA를 처음 접했을 때는 종류별로 뭐가 다른지 구분도 못하겠고 리눅스라는 운영체제가 생소해서 설명을 읽어봐도 잘 모르겠고 그랬는데 요것만 알면 됩니다. HA는 핵심 기능만 담고 있는 Core버전과 모든 기능이 사용 가능한 Supervised 버전이 있습니다. 그리고 설치방법에 따라서는 HASS OS라고 하는 운영체제를 포함하는 HA완전체를 설치하는 방법(가장 쉽고 안정적인 방법)이 있고 OS는 라즈베리파이 OS나 데비안처럼 다른 OS를 사용하고 그 위에 HA를 직접 설치하거나 도커라는 가상 환경위에 설치하는 방법이 있습니다. 

제가 예전에 HA 수동 설치와 관련한 포스팅을 올린 적이 있는데 이 방법은 라즈베리파이 OS가 설치된 상태에서 HA Core를 직접 설치하는 방법이었습니다. 이 방법은 단점이 있는데 Supervizor 관련 기능이 빠져있기 때문에 Addon을 설치/관리할 수가 없습니다. 

Supervisor기능을 사용하기 위해서는 HASS OS를 사용하거나 HA supervised라는 도커 버전을 설치하는 방법이 있는데 이번에는 후자를 설명하는 포스팅이 되겠습니다.

추가로, 여기서 설명하는 설치 방법이 일반적인 그것들과는 다른 한 가지 차이점이 있습니다. 바로 data파일은 SSD에 설치한다는 건데요. 그 이유는 SD카드의 수명을 조금이라도 더 오래 사용하고 동영상 같이 용량이 큰 파일도 저장공간 걱정 없이 저장해서 사용하기 위함입니다. 처음부터 라즈베리파이 OS 설치를 SSD에 하고 SD카드를 아얘 사용하지 않도록 하면 되지 뭘 이렇게 어렵게 하냐라고 생각하실 텐데요. 지금 제가 사용하는 하드웨어 환경이 SSD부팅이 곤란한 상황이라서 그렇습니다. HA 공식 홈페이지 설명을 보면 HA의 data라는 폴더가 파일 입출력이 대부분 발생하는 위치라고 설명하고 있습니다. 물론 다른 위치에서도 HA 기본 기능 및 백업 등 동작을 위해서 입출력이 발생하긴 하지만 빈도가 크지 않다고 합니다. 그래서 data 폴더를 SSD에 있는 위치로 바꿔서 설치를 하면 대다수의 입출력 동작은 SSD에서 일어날 수 있도록 할 수 있는 거죠. (도커의 기본 위치를 SSD로 변경해서 "data, share" 등 폴더는 SD카드에 설치됨)

설치 준비

설치방법은 아래 링크 참고하였습니다.

 

home-assistant/supervised-installer

Installer for a generic Linux system. Contribute to home-assistant/supervised-installer development by creating an account on GitHub.

github.com

라즈베리파이를 켜고 직접 키보드, 모니터를 달아서 접근하거나 ssh 터미널로 접속을 합니다.

먼저 도커를 설치해줍니다. 그리고 "포테이너"라는 웹에서 도커를 관리할 수 있는 프로그램(?)도 설치합니다.

[root 권한으로 필요한 패키지를 설치합니다.]
pi@raspberrypi :~ $ sudo -i
root@raspberrypi :~# apt update
root@raspberrypi :~# apt install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
 
[ModemManager라는 서비스를 중지하라는데 이유는 잘...]
root@raspberrypi :~# systemctl disable ModemManager
root@raspberrypi :~# systemctl stop ModemManager
 
[도커를 설치합니다.]
root@raspberrypi :~# curl -fsSL get.docker.com | sh
 
[포테이너가 자동 시작되도록 설치합니다.]
root@raspberrypi :~# docker run -d --name portainer --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

여기까지 하면 도커 환경 구축이 완료되는 건데요. 저는 이렇게 했더니 라즈베리파이가 리부팅될 때마다 매번 접속되는 IP주소가 달라지는 문제가 발생했습니다. 아마 도커 설치 과정에서 필요한 ModemManager가 설치되면서 랜덤으로 맥주소를 바꿔주는 기능이 켜진 것 같고 중간에 ModemManager를 비활성화하라는 명령이 제 경우에는 잘 안 먹힌 것 같았습니다.

맥주고에 따라서 IP주소가 계속 바뀌게 되면 서버 관리가 불편하기 때문에 이 부분 먼저 해결하고 넘어갑니다.

랜덤 맥 주소 비활성화

"/etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf" 파일을 하나 생성하고 아래와 같은 내용을 추가해 줍니다.

[connection]
wifi.mac-address-randomization=1

[device]
wifi.scan-rand-mac-address=no

이 상태로 리부팅해보시면 이제 더 이상 IP주소가 바뀌는 문제는 없을 겁니다.

SSD 연결

이제 마지막으로 SSD를 라즈베리파이에 연결해 줍니다.

저는 라즈베리파이가 부팅이 되면 자동으로 연결된 외장하드를 찾아서 "/home/pi/externalSSD" 폴더에 마운트 되도록 설정했습니다. SSD 마운트에 대한 내용은 아래 포스팅을 참고해주세요.

 

QUAD Sata HAT, SSD 자동 마운트

라즈베리파이에서 외장 SSD를 사용하는 경우 SSD 드라이브를 부팅 시 자동으로 마운트 시키는 방법입니다. 먼저 라즈베리파이 SSD를 연결했다면 SSD 드라이브를 잘 인식하고 있는지 확인합니다. "su

kwonkyo.tistory.com

Home Assistant/supervised 설치

드디어 본론입니다. HA설치를 시작해 보겠습니다.

pi@raspberrypi :~ $ sudo -i
root@raspberrypi :~ # curl -O "https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh"
root@raspberrypi :~ # bash installer.sh --machine raspberrypi4 --data-share /home/pi/externalSSD/share

먼저 sudo -i 명령으로 root 권한으로 전환합니다. 그리고 curl -sL 명령으로 HA 설치 스크립트인 "installer.sh"를 다운로드합니다.

마지막으로 설치 스크립트를 실행시켜 주면 되는데 아래 명령어 옵션을 참고해서 스크립트를 실행합니다.

저는 라즈베리파이 4를 사용했기 때문에 "--machine"에 "raspberrypi4"로 지정했고 "--data-share"는 SSD가 마운트 된 위치로 지정했습니다. default값 최상위 폴더가 "$PREFIX"라고 되어 있어서 밑에 있는 "--prefix" 옵션 옵션만 사용하면 될 줄 알았는데 그런 식으로 되는 건 아니더라고요.

스크립트 실행이 끝나면 HA 접속 주소가 마지막에 표시됩니다. 몇 분 정도 기다렸다가 이 주소로 접속해 보면 HA가 잘 설치된 것을 볼 수 있습니다.

위 사진 오른쪽에서 확인할 수 있듯 HA의 사용자 data들이 지정한 SSD 폴더에 설치된 것을 볼 수 있습니다. 폴더 이름을 "share"로 했더니 안에 또 share가 있어서 이상하네요. 나중에 다시 설치할 일이 있으면 다른 이름으로 해야겠습니다.

 

끝!

728x90

댓글0