Jak zbudować możliwą do odtworzenia instalację Home Assistant w kontenerach

Eva Wong jest redaktorką techniczną i rezydentką majsterkowania w ZimaSpace. Jest geekiem od zawsze, z pasją do domowych laboratoriów i oprogramowania open source, a jej specjalnością jest przekładanie złożonych zagadnień technicznych na przystępne, praktyczne poradniki. Eva wierzy, że samodzielne hostowanie powinno sprawiać radość, a nie onieśmielać. Dzięki swoim samouczkom pomaga społeczności oswoić konfigurację sprzętu, od budowy pierwszego serwera NAS po opanowanie kontenerów Docker.

Wdrażając kontener Home Assistant z myślą o możliwości odzyskania, traktuj obraz kontenera jako coś, co można odrzucić, a stan, konfigurację, sekrety, mapowania urządzeń, działanie sieci i procedurę przywracania jako właściwy system.

Celem nie jest samo ponowne uruchamianie Home Assistant przez Dockera. Chodzi o odbudowanie usługi na czystym hoście po nieudanej aktualizacji, utracie dysku lub wymianie hosta i przywrócenie tych samych użytkowników, integracji, automatyzacji, urządzeń radiowych, stanu bazy danych i tożsamości sieciowej w określonym czasie.

Przechowuj trwały stan poza obrazem kontenera

Zamontuj cały katalog konfiguracji Home Assistant w trwałej pamięci hosta i twórz kopie zapasowe wszystkiego, co się w nim znajduje, w tym ukrytych katalogów. Migracje opisywane przez społeczność wielokrotnie kończą się niepowodzeniem, gdy operatorzy kopiują widoczne pliki YAML, ale pomijają .storage, w którym przechowywane są encje zarządzane z poziomu interfejsu, integracje i inne dane stanu. Jeden z opisów nieudanej migracji kontenera pokazuje, jak rozwijanie wzorców powłoki może po cichu pomijać te pliki ukryte.

Zapisz plik Compose, szablon zmiennych środowiskowych, strefę czasową, tryb sieci, mapowania urządzeń, ścieżki podpięć bind-mount i wszelkie wymagane uprawnienia grup w wersjonowanych notatkach dotyczących infrastruktury. Nie umieszczaj unikatowego stanu gospodarstwa domowego w niestandardowym obrazie, chyba że masz też odtwarzalny proces kompilacji i osobną kopię zapasową.

Kompletna topologia serwera Home Assistant ZimaSpace przedstawia szerszy wzorzec: ogranicz ścieżkę sterowania do minimum, oddziel trwały stan od pamięci masowej na duże ilości danych, a odzyskiwanie umieść poza aktywną domeną awarii, zanim dodasz zależności od kolejnych usług.

Twórz spójne kopie zapasowe stanu, nie tylko częste

Kopia zapasowa jest przydatna tylko wtedy, gdy zawarte w niej pliki odzwierciedlają spójny stan z jednego momentu. W prostej lokalnej instalacji SQLite łatwo zaplanować zatrzymanie usługi i skopiowanie trwałego woluminu konfiguracji w oknie serwisowym. W przypadku zewnętrznej bazy danych wykonaj kopię zapasową metodą zapewniającą spójność bazy i zanotuj, z którą kopią zapasową konfiguracji Home Assistant jest powiązana.

Niedawno opisany proces tworzenia kopii zapasowej woluminu Docker podkreśla, że należy przetestować przywracanie kopii, zamiast zakładać, że pomyślne wykonanie polecenia archiwizacji gwarantuje możliwość odzyskania danych. Przechowuj co najmniej jedną kopię poza hostem Docker, aby awaria dysku SSD, systemu plików lub przypadkowe usunięcie nie mogły skasować jednocześnie usługi i kopii zapasowej.

Zapisuj wiek kopii zapasowej, wersję aplikacji, wersję bazy danych, rozmiar, sumę kontrolną, lokalizację klucza szyfrującego oraz kroki przywracania na czystym hoście. Przechowywanie kopii bez metadanych dotyczących przywracania tworzy stertę archiwów zamiast systemu odzyskiwania.

Modeluj zależności i gotowość w Compose

Gdy Home Assistant zależy od MQTT, zewnętrznej bazy danych, serwera proxy lub innej lokalnej usługi, kolejność uruchamiania kontenerów nie oznacza gotowości usług. Proces może działać, mimo że jego gniazdo, schemat lub punkt końcowy kontroli stanu są nadal niedostępne. Przewodnik po gotowości w Compose pokazuje, jak kontrole stanu i warunki zależności ograniczają problemy z wyścigiem podczas uruchamiania.

Każda zależność powinna mieć własny sygnał stanu i sposób obsługi awarii. Home Assistant powinien ponawiać próby połączenia z uruchamiającą się bazą danych, ale baza, której stan jest wielokrotnie nieprawidłowy, powinna być widoczna jako usterka, a nie ukryta za niekończącymi się restartami. Używaj zasad ponownego uruchamiania, aby odzyskiwać działanie po zakończeniu procesu; używaj kontroli stanu i monitorowania, aby ustalić, czy usługa jest rzeczywiście gotowa.

W miarę możliwości trzymaj usługi opcjonalne poza krytycznym łańcuchem uruchamiania. Uszkodzony moduł renderujący pulpit, narzędzie multimedialne lub eksporter metryk nie powinien powodować niedostępności kontrolera automatyzacji.

Wyznacz granice zmian i zachowaj parę na potrzeby przywrócenia

Przed aktualizacją zapisz bieżący tag obrazu Home Assistant, definicję Compose, wersję bazy danych, kopię zapasową konfiguracji oraz wersje wszystkich usług towarzyszących uczestniczących w uruchamianiu systemu. Zmieniaj tylko jedną warstwę naraz. Jeśli aktualizacja się nie powiedzie, przywrócenie poprzedniej wersji samego obrazu kontenera może być ryzykowne, jeśli migracje konfiguracji lub bazy danych zmieniły już trwały stan.

Użyj środowiska testowego lub sklonowanego katalogu odzyskiwania, aby przetestować docelową wersję przed poważną migracją hosta lub bazy danych. Zachowaj poprzedni, sprawdzony obraz oraz migawkę stanu utworzoną bezpośrednio przed aktualizacją jako parę. Usuń tę parę dopiero po tym, jak nowa wersja przejdzie test automatyzacji, historii, urządzeń radiowych, pulpitów, powiadomień i ponownego uruchomienia.

Nowszy artykuł o projekcie Home Assistant Docker Compose traktuje sieć, trwałą pamięć masową i kopie zapasowe jako jawne decyzje dotyczące wdrożenia. To właściwy model wycofywania zmian: zachowuj stan i definicję wdrożenia potrzebne kontenerowi zastępczemu, a nie sam system plików kontenera, który można odtworzyć.

Odtwórz wdrożenie na czystym hoście, zanim uznasz je za odzyskiwalne

Wybierz zapasową maszynę, maszynę wirtualną lub odizolowany katalog testowy i przeprowadź odzyskiwanie bez odczytywania plików z systemu plików działającego kontenera. Zainstaluj środowisko uruchomieniowe kontenerów, umieść definicję Compose, przywróć trwały stan, odtwórz sekrety, podłącz urządzenia radiowe przy użyciu stabilnych ścieżek urządzeń, uruchom wymagane zależności, a następnie uruchom Home Assistant.

Sprawdź właściciela plików i uprawnienia, zanim uznasz, że kopia zapasowa jest nieprawidłowa. Różnice w uprawnieniach po migracji mogą spowodować wyświetlenie ekranu pierwszej konfiguracji, nawet jeśli dane istnieją. Przypadek odzyskiwania po migracji Docker pokazuje, jak uprawnienia i ukryty stan mogą niezależnie uniemożliwić wyświetlenie przywróconej instalacji.

  1. Zaloguj się na istniejące konto administratora.
  2. Sprawdź integracje, encje, automatyzacje, panele i historię.
  3. Potwierdź, że kontrola nad radiem Zigbee, Z-Wave, Thread, Bluetooth lub innym pozostaje zachowana.
  4. Odłącz internet i uruchom krytyczną automatyzację lokalną.
  5. Uruchom ponownie hosta i wszystkie wymagane zależności.
  6. Zmierz całkowity czas odtworzenia od pustego hosta do działającego sterowania domem.

Używaj kontraktu odzyskiwania dla każdej zależności uruchamianej w kontenerze

Komponent Trwały obiekt Dowód odzyskiwalności
Home Assistant Pełny stan /config Przywrócone zostają istniejące konto i automatyzacje
Baza danych Spójna kopia zapasowa bazy danych Zapytania o historię i zapisy w Recorder działają poprawnie
MQTT/broker Konfiguracja, dane uwierzytelniające, zachowany stan, jeśli jest wymagany Urządzenia łączą się ponownie i publikują dane
Radiowe Tożsamość urządzenia, klucze sieciowe, mapowanie Koordynator łączy się ponownie bez ponownego parowania
Sieć/proxy Porty, nazwy, certyfikaty, trasy Lokalni i docelowi klienci zdalni łączą się ponownie

Odzyskiwalne wdrożenie ma wersjonowaną definicję, stan przechowywany poza hostem, gotowe zależności, parę umożliwiającą wycofanie zmian oraz przeprowadzony na czystym hoście test odtworzenia z pomiarem czasu. Gdy te testy zakończą się pomyślnie, kontenery stają się tym, czym powinny być: wymiennymi jednostkami środowiska uruchomieniowego, a nie niezastąpionymi pupilami.

Konfiguracja NAS-a i serwera

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.