Home Assistant

HA 설정 버전 관리 (DevOps): 'Git'과 'GitHub'를 연동하여 실수 시 과거 시점으로 롤백하기

katakana 2026. 1. 4. 20:11

1. 스냅샷(Snapshot) vs 버전 관리(Git)

HA의 기본 백업(Google Drive Backup 등)은 시스템 전체를 사진 찍듯 저장합니다.

  • 장점: 시스템이 완전히 망가졌을 때 복구하기 좋습니다.
  • 단점: "어제 수정한 automations.yaml의 35번째 줄만 되돌리고 싶어" 같은 정밀한 작업은 불가능합니다.

Git은 다릅니다.

  • 추적: 누가, 언제, 어떤 파일의, 몇 번째 줄을, 어떻게 고쳤는지 기록합니다.
  • 비교: 어제 코드와 오늘 코드를 좌우로 나란히 놓고 비교(Diff)할 수 있습니다.
  • 롤백: 원하는 시점(Commit)으로 파일을 즉시 되돌릴 수 있습니다.

2. [준비물] VS Code Server

Git은 명령어로 쓰는 게 정석이지만, 초보자에게는 어렵습니다. HA의 필수 애드온인 VS Code Server가 있으면 클릭만으로 Git을 다룰 수 있습니다.

  1. [설정] > [애드온]에서 "Studio Code Server" (VS Code)를 설치하고 실행합니다.
  2. 사이드바 메뉴에 [VS Code]를 추가하여 접속합니다.

3. [1단계] 보안 설정: .gitignore (가장 중요!)

GitHub에 내 설정을 올릴 때, 비밀번호나 API 키가 적힌 secrets.yaml까지 올라가면 해킹당합니다. 이를 방지하기 위해 "이 파일은 무시해"라고 알려주는 목록을 만듭니다.

  1. VS Code에서 최상위 폴더(/config)에 새 파일 **.gitignore**를 만듭니다. (점.으로 시작해야 합니다.)
  2. 다음 내용을 복사해서 붙여넣습니다.
Plaintext
 
# .gitignore 파일 내용

# 비밀번호 파일 (절대 올리지 말 것!)
secrets.yaml
secrets.yaml.default

# 데이터베이스 및 로그
home-assistant_v2.db
home-assistant_v2.db-wal
home-assistant_v2.db-shm
home-assistant.log

# 백업 및 임시 파일
backups/
.storage/
tts/
tmp/
.DS_Store

이 설정 덕분에 secrets.yaml은 Git의 추적 대상에서 제외되어 안전하게 보호됩니다.

4. [2단계] 로컬 저장소 초기화 (Initialize)

이제 내 HA 서버를 'Git 저장소'로 만듭니다.

  1. VS Code 좌측 메뉴 중 세 번째 아이콘 **[소스 제어(Source Control)]**를 클릭합니다. (가지 모양 아이콘)
  2. [Initialize Repository] 버튼을 누릅니다.
  3. /config 폴더 내의 모든 파일(약 20~30개)이 초록색 U (Untracked) 표시와 함께 목록에 뜹니다.
  4. 첫 커밋(Save):
    • 변경 사항 위에 마우스를 올리고 + 버튼(Stage All Changes)을 누릅니다.
    • 위쪽 입력창에 메시지를 적습니다: "Initial Commit (첫 설정 저장)"
    • [Commit] 버튼(체크 표시)을 누릅니다.

이제 현재 상태가 '박제'되었습니다. 앞으로 파일을 수정할 때마다 이 과정을 반복하면 됩니다.

5. [3단계] GitHub 원격 저장소 연결

내 서버가 고장 나면 로컬 Git 기록도 날아갑니다. 클라우드(GitHub)에 안전하게 복제해 둡시다.

  1. GitHub 가입 및 리포지토리 생성:
    • GitHub.com에 로그인하여 [New Repository]를 누릅니다.
    • 저장소 이름: my-home-assistant-config
    • 공개 범위: Private (비공개) 권장. (.gitignore를 했더라도 설정 파일은 개인 정보이므로 비공개가 안전합니다.)
    • [Create repository]를 누릅니다.
  2. HA와 연결:
    • 생성된 GitHub 페이지에 나오는 주소(https://github.com/아이디/리포지토리.git)를 복사합니다.
    • HA의 VS Code에서 터미널(Ctrl+`)을 엽니다.
    • 다음 명령어를 입력합니다.
    • Bash
       
      git remote add origin https://github.com/여러분의아이디/저장소이름.git
      git branch -M main
      git push -u origin main
      
    • GitHub 아이디와 토큰(비밀번호 대신 Personal Access Token 사용)을 물어보면 입력합니다.

이제 여러분의 설정 파일은 전 세계 어디서든 볼 수 있고, HA 서버가 불타 없어져도 복구할 수 있습니다.

6. [실습] 타임머신 타기 (변경 취소)

실수로 automations.yaml 내용을 지워버렸다고 가정해 봅시다.

  1. VS Code의 [소스 제어] 탭을 봅니다.
  2. automations.yaml 파일 옆에 M (Modified) 표시가 떠 있습니다.
  3. 파일을 클릭하면 [변경 내용 보기(Diff)] 화면이 열립니다.
    • 왼쪽: 수정 전 (원본)
    • 오른쪽: 수정 후 (망가진 파일)
    • 빨간색으로 삭제된 코드가 보입니다.
  4. 복구: 파일 이름 옆의 [변경 내용 취소(Discard Changes, 휘어진 화살표)] 아이콘을 누릅니다.
  5. 파일이 즉시 마지막 커밋 상태로 원상 복구됩니다. (마법 같습니다!)

7. [자동화] "매일 밤 자동 백업"

매번 수동으로 커밋/푸시(Push) 하는 것은 귀찮습니다. 쉘 커맨드(Shell Command)로 자동화해 봅시다.

  1. configuration.yaml에 쉘 커맨드 추가:(주의: 자동 Push를 위해서는 SSH Key 설정이나 자격 증명 저장이 선행되어야 합니다. 초보자는 git commit까지만 자동화하고 push는 가끔 수동으로 하는 것을 추천합니다.)
  2. YAML
     
    shell_command:
      git_backup: "cd /config && git add . && git commit -m 'Auto Backup: $(date)' && git push origin main"
    
  3. 자동화 생성:
    • 트리거: 매일 새벽 4시.
    • 액션: shell_command.git_backup 실행.

8. 결론: "망가지는 것을 두려워하지 마세요"

초보자는 "이거 건드렸다가 고장 나면 어떡하지?" 하는 두려움 때문에 성장을 멈춥니다. 하지만 Git을 장착한 엔지니어는 두려움이 없습니다. "고장 나면 Revert 하면 되지 뭐."

여러분의 모든 시도와 수정 내역이 기록되고 보호받는 환경. 이것이 바로 프로들이 일하는 방식인 **DevOps(Development + Operations)**입니다.

자, 이제 시스템 관리는 완벽해졌습니다. 딱딱한 코드와 설정 이야기는 잠시 접어두고, 다시 눈이 즐거운 시각화의 세계로 가볼까요? 27편의 2D 평면도는 훌륭했지만, 이제는 3D의 시대입니다.

다음 61편에서는, 무료 인테리어 디자인 툴인 **'Sweet Home 3D'**로 우리 집을 모델링하고, 이를 HA 대시보드에 띄워서 전등을 켜면 3D 모델 속 전등도 같이 켜지는 '인터랙티브 3D 대시보드 (floor3d-card)' 구축법을 알아보겠습니다.