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.
- Zaloguj się na istniejące konto administratora.
- Sprawdź integracje, encje, automatyzacje, panele i historię.
- Potwierdź, że kontrola nad radiem Zigbee, Z-Wave, Thread, Bluetooth lub innym pozostaje zachowana.
- Odłącz internet i uruchom krytyczną automatyzację lokalną.
- Uruchom ponownie hosta i wszystkie wymagane zależności.
- 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

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.



