Przenieś Home Assistant z pojedynczego kontenera do niezawodnego stosu usług, najpierw zachowując działający stan Home Assistant, a następnie rozdzielając dane trwałe, usługi towarzyszące, ścieżki sieciowe, zależności przy uruchamianiu i kopie zapasowe na jasno określone role. Celem nie jest tworzenie większej liczby kontenerów, lecz ograniczenie ryzyka, że awaria jednej usługi unieruchomi cały inteligentny dom.
Przeprowadzaj migrację etapami. Nie ruszaj oryginalnego kontenera ani jego danych, dopóki nowy stos się nie uruchomi, nie przejdzie testów sterowania lokalnego, nie przetrwa restartu hosta i nie uda się go odtworzyć z kopii zapasowej. Niezawodny stos to taki, którego działanie potrafisz przeanalizować w razie awarii, a nie taki, który ma najdłuższy plik Compose.
Zamroź działający kontener i zinwentaryzuj wszystkie zależności
Zanim zmienisz topologię, zanotuj dokładną wersję obrazu Home Assistant, ścieżkę konfiguracji, zmienne środowiskowe, tryb sieci, mapowania urządzeń USB, podmontowane ścieżki i porty hosta. Następnie wypisz wszystkie zależności Home Assistant znajdujące się poza kontenerem: broker MQTT, bazę danych, Zigbee2MQTT, odwrotne proxy, VPN, DNS, certyfikaty, kopie zapasowe i wszelkie udziały sieciowe. To będzie mapa migracji.
Oznacz każdą zależność jako źródło prawdy, usługę możliwą do odtworzenia albo infrastrukturę zewnętrzną. Konfiguracja i dane bazy Home Assistant są źródłem prawdy. Pobrany obraz kontenera można odtworzyć. DNS i routing mogą należeć do infrastruktury zewnętrznej. Taki podział zapobiega częstemu błędowi: tworzeniu kopii zapasowej definicji kontenera z pominięciem danych lub usług niezbędnych do jego działania.
Oddziel dane trwałe od kontenerów, które można wymienić
Każdej usłudze przechowującej dane przypisz osobną, trwałą ścieżkę lub nazwany wolumen, którego właściciela i zasady tworzenia kopii zapasowych znasz. Konfiguracja Home Assistant, stan MQTT (jeśli jest zachowywany), pliki bazy danych, certyfikaty i sekrety używane przez automatyzacje nie powinny znajdować się wyłącznie w zapisywalnej warstwie kontenera. Obrazy i kontenery powinny dać się wymienić bez utraty danych domowych.
Odzyskiwanie wolumenów wymaga również uwzględnienia specyfiki aplikacji. Artykuł Przenośny schemat tworzenia kopii zapasowych i przywracania wolumenów Dockera wyjaśnia, dlaczego kopiowanie surowych katalogów używanych w czasie działania nie jest tym samym co przenośna kopia zapasowa. W przypadku baz danych należy uzgodnić metodę tworzenia kopii zapasowej z bazą, zamiast zakładać, że kopia plików wykonana podczas aktywnego zapisu będzie spójna.
Świadomie skonfiguruj kontrole stanu, zasady ponownego uruchamiania i zależności przy uruchamianiu
Zasada ponownego uruchamiania odpowiada na pytanie: „Co środowisko uruchomieniowe powinno zrobić po zamknięciu tego procesu?”. Kontrola stanu odpowiada na pytanie: „Czy usługa jest rzeczywiście gotowa do użycia?”. To dwa różne pytania. Kontener bazy danych może działać, a mimo to wciąż odtwarzać dzienniki; broker MQTT może mieć uruchomiony proces, ale jeszcze nie akceptować połączeń w sposób oczekiwany przez Home Assistant.
Stosuj kontrole stanu w usługach, które mają określony warunek gotowości, a kolejność uruchamiania zależności ustalaj tylko wtedy, gdy dana usługa naprawdę tego wymaga. Niezależny artykuł Dlaczego zasady ponownego uruchamiania i stan usługi to różne sygnały wyjaśnia, dlaczego automatyczne ponowne uruchamianie nie potwierdza gotowości. Inny artykuł, Wzorzec gotowości w Compose dla usług zależnych, jest przydatny, gdy trzeba uzależnić uruchomienie usługi od rzeczywistego stanu zdrowia innej usługi, a nie od stałego czasu oczekiwania.
Ograniczaj domeny awarii za pomocą sieci, zasobów i kolejności konserwacji
Nie pozwól, by skanowanie multimediów, migracja bazy danych ani eksperymentalny kontener wykorzystywały każdy cykl procesora, całą dostępną pamięć RAM lub całe miejsce na dysku SSD z aplikacją, gdy Home Assistant ma pozostać responsywny. Określ konkretne wymagania dotyczące zasobów dla obciążających sąsiednich usług, w miarę możliwości przechowuj tymczasowe pamięci podręczne z dala od krytycznych danych i utrzymuj ścieżkę sterowania Home Assistant w stabilnej sieci lokalnej.
Ustal też osobną kolejność aktualizacji. Zmieniaj po jednej warstwie naraz: host, środowisko uruchomieniowe kontenerów, Home Assistant, baza danych, a następnie opcjonalne usługi towarzyszące. Jeśli wszystko zostanie zaktualizowane podczas jednego okna serwisowego, a stos przestanie działać, nie będzie można ustalić, która warstwa spowodowała regresję. Topologia Home Assistant oddzielająca role mocy obliczeniowej, pamięci masowej i kopii zapasowych w ZimaSpace przedstawia szerszy podział ról związanych z mocą obliczeniową, pamięcią masową, siecią i odzyskiwaniem danych.
Przełącz się dopiero po pomyślnym przejściu testów restartu i odtwarzania
Uruchom nowy stos z kopią konfiguracji lub w ramach kontrolowanego odtwarzania. Przetestuj jeden lokalny panel, jedną lokalną automatyzację, jedną ścieżkę Zigbee lub Thread, MQTT, jeśli jest używane, dostęp do historii i bazy danych, powiadomienia oraz dostęp zdalny, jeśli przewiduje go projekt. Następnie uruchom ponownie cały host, a nie tylko kontenery, i sprawdź, czy kolejność uruchamiania oraz mapowania urządzeń nadal działają bez ręcznej interwencji.
Na koniec sprawdź, czy odzyskiwanie działa. Odtwórz dane na czystym, tymczasowym środowisku docelowym albo przynajmniej odtwórz komponenty przechowujące stan w osobnej przestrzeni testowej. Kopia zapasowa płaszczyzny zarządzania może wprowadzać w błąd, jeśli nie obejmuje wolumenów usług; ten powód, dla którego kopia zapasowa płaszczyzny zarządzania może nie obejmować danych usług pokazuje, dlaczego definicje stosu i dane aplikacji wymagają osobnych zabezpieczeń na wypadek odzyskiwania.
- Utwórz migawkę lub kopię zapasową działającego stanu pojedynczego kontenera.
- Określ zależności i podziel komponenty na przechowujące stan oraz takie, które można odtworzyć.
- Utwórz jawne ścieżki trwałego przechowywania danych i definicje usług.
- Dodawaj zasady monitorowania stanu, ponownego uruchamiania i zarządzania zasobami tylko wtedy, gdy rozwiązują konkretny problem.
- Przetestuj sterowanie lokalne, urządzenia radiowe, bazę danych, dostęp zdalny, pełny restart i odtwarzanie.
- Usuń stary kontener dopiero wtedy, gdy nowy stos przejdzie wszystkie testy.
Odporny punkt końcowy to nie „więcej usług”. To stos, w którym Home Assistant można odtworzyć bez utraty stanu, zależności są przywracane w znanej kolejności, intensywnie obciążone usługi nie zagładzają płaszczyzny sterowania, a nieudaną aktualizację można odizolować, zamiast zamieniać ją w zagadkę dotyczącą całego domu.
Konfiguracja NAS-a i serwera
Więcej do przeczytania

Czy serwer w akademiku może działać na tyle cicho, by nie przeszkadzać podczas snu, nauki i rozmów wideo?
Tak — serwer w akademiku może działać dyskretnie, jeśli sprzęt zużywa mało energii, drgania dysków są kontrolowane, wymagające zadania zaplanowane, a hałas sprawdzony w...

Studenckie domowe laboratorium, które można przenieść z akademika do pierwszego mieszkania
Zapewnij mobilność studenckiego homelabu, oddzielając usługi od sieci przypisanej do konkretnego pokoju, ograniczając liczbę urządzeń, tworząc kopie zapasowe stanu i ćwicząc sprawne przenoszenie.

Jak udostępnić jeden domowy serwer współlokatorom bez współdzielenia kont ani prywatnych plików
Przydziel każdemu współlokatorowi indywidualną tożsamość i prywatną przestrzeń dyskową oraz tylko te role współdzielone, których potrzebuje; oddziel administrację, kopie zapasowe i proces odejścia użytkownika.



