Come creare un'installazione di Home Assistant recuperabile con i container

Eva Wong è la redattrice tecnica e appassionata di tecnologia di ZimaSpace. Geek da sempre, appassionata di homelab e software open source, è specializzata nel tradurre concetti tecnici complessi in guide pratiche. Eva crede che l’hosting autonomo debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, aiuta la community a comprendere meglio le configurazioni hardware, dalla costruzione del primo NAS alla padronanza dei container Docker.

Un'installazione di Home Assistant in container ripristinabile considera l'immagine del container come sostituibile e lo stato, la configurazione, i segreti, le mappature dei dispositivi, il comportamento di rete e la procedura di ripristino come il vero sistema.

L'obiettivo non è semplicemente fare in modo che Docker riavvii Home Assistant. L'obiettivo è ricostruire il servizio su un host pulito dopo un aggiornamento non riuscito, la perdita di un disco o la sostituzione dell'host, e ripristinare gli stessi utenti, integrazioni, automazioni, dispositivi radio, stato del database e identità di rete entro un tempo definito.

Mantieni lo stato persistente fuori dall'immagine del container

Monta l'intera directory di configurazione di Home Assistant nell'archivio persistente dell'host ed esegui il backup di tutto ciò che contiene, comprese le directory nascoste. Le migrazioni segnalate dalla community falliscono spesso quando gli operatori copiano i file YAML visibili ma tralasciano .storage, che contiene le entità gestite dall'interfaccia, le integrazioni e altri dati di stato. Un errore di migrazione del container mostra come l'espansione dei caratteri jolly nella shell possa escludere silenziosamente quei file nascosti.

Mantieni il file Compose, il modello delle variabili d'ambiente, il fuso orario, la modalità di rete, le mappature dei dispositivi, i percorsi dei bind mount e le eventuali autorizzazioni di gruppo richieste in note dell'infrastruttura versionate. Non incorporare lo stato specifico della casa in un'immagine personalizzata, a meno che tu non disponga anche di una procedura di compilazione riproducibile e di una copia di ripristino separata.

La topologia completa del server Home Assistant di ZimaSpace offre uno schema più ampio: mantieni ridotto il percorso di controllo, separa lo stato persistente dall'archiviazione dei dati voluminosi e conserva il ripristino fuori dal dominio di guasto attivo prima di aggiungere dipendenze da altri servizi.

Esegui backup coerenti, non solo frequenti

Un backup è utile solo se i suoi file rappresentano un momento coerente. Per una semplice installazione locale di SQLite, fermare il servizio durante una finestra di manutenzione e copiare il volume di configurazione persistente è una procedura facile da gestire. Per un database esterno, esegui il backup con un metodo che garantisca la coerenza del database e annota a quale backup della configurazione di Home Assistant deve essere associato.

Un recente flusso di lavoro per il backup dei volumi Docker sottolinea l’importanza di ripristinare la copia, anziché presumere che un comando di archiviazione completato correttamente garantisca la possibilità di recupero. Conserva almeno una generazione fuori dall’host Docker, così un SSD guasto, un errore del file system o una pulizia accidentale non possano eliminare sia il servizio sia il backup.

Registra l’età del backup, la versione dell’applicazione, la versione del database, le dimensioni, il checksum, la posizione della chiave di crittografia e i passaggi per il ripristino su un host pulito. Conservare i backup senza metadati per il ripristino crea una pila di archivi, non un sistema di ripristino.

Modella le dipendenze e la disponibilità in Compose

Quando Home Assistant dipende da MQTT, da un database esterno, da un proxy o da un altro servizio locale, l’ordine di avvio dei container non equivale alla disponibilità dei servizi. Un processo può essere in esecuzione mentre il suo socket, lo schema o l’endpoint di integrità non sono ancora disponibili. Una guida alla disponibilità in Compose mostra come i controlli di integrità e le condizioni delle dipendenze riducono le corse all’avvio.

Assegna a ogni dipendenza un proprio segnale di integrità e un comportamento in caso di errore. Home Assistant dovrebbe riprovare a connettersi a un database in fase di avvio, ma un database che rimane ripetutamente non integro dovrebbe essere segnalato come guasto, anziché essere nascosto dietro riavvii continui. Usa i criteri di riavvio per ripristinare il servizio dopo la chiusura dei processi; usa i controlli di integrità e il monitoraggio per stabilire se il servizio è effettivamente pronto.

Quando possibile, mantieni i servizi facoltativi fuori dalla catena di avvio critica. Un renderer di dashboard, uno strumento multimediale o un esportatore di metriche difettoso non dovrebbe tenere offline il controller di automazione.

Limita le modifiche e conserva una coppia per il rollback

Prima di un aggiornamento, annota il tag dell’immagine Home Assistant corrente, la definizione Compose, la versione del database, il backup della configurazione e le versioni di eventuali servizi complementari coinvolti nell’avvio. Modifica un solo livello alla volta. Se un aggiornamento non riesce, ripristinare solo l’immagine del container potrebbe essere rischioso, dopo che le migrazioni della configurazione o del database hanno modificato lo stato persistente.

Usa un ripristino in ambiente di staging o una directory di ripristino clonata per provare la versione di destinazione prima di una migrazione importante dell’host o del database. Conserva insieme l’immagine precedente, nota come funzionante, e lo snapshot dello stato creato immediatamente prima dell’aggiornamento. Elimina questa coppia solo dopo che la nuova versione ha superato i test di automazione, cronologia, radio, dashboard, notifiche e riavvio.

Un più recente articolo sulla progettazione di Home Assistant Docker Compose considera la rete, lo storage persistente e i backup come decisioni esplicite del deployment. Questo è il modello corretto per il rollback: conserva lo stato e la definizione del deployment necessari a un container sostitutivo, non il filesystem del container stesso, che è sacrificabile.

Ricrea l'ambiente su un host pulito prima di dichiarare ripristinabile il deployment

Scegli una macchina di riserva, una VM o una directory di test isolata ed esegui il ripristino senza leggere file dal filesystem del container attivo. Installa il runtime dei container, posiziona la definizione Compose, ripristina lo stato persistente, ricrea i segreti, collega le radio usando percorsi stabili dei dispositivi, avvia le dipendenze necessarie e avvia Home Assistant.

Controlla la proprietà dei file e le autorizzazioni prima di supporre che il backup sia danneggiato. Le differenze nelle autorizzazioni dopo la migrazione possono mostrare una schermata di configurazione iniziale, anche quando i dati sono presenti. Un caso di ripristino di una migrazione Docker mostra come le autorizzazioni e lo stato nascosto possano impedire indipendentemente che l'installazione ripristinata venga visualizzata.

  1. Accedi con l'account amministratore esistente.
  2. Verifica integrazioni, entità, automazioni, dashboard e storico.
  3. Verifica la gestione di Zigbee, Z-Wave, Thread, Bluetooth o di altre radio.
  4. Disconnetti Internet ed esegui un'automazione locale critica.
  5. Riavvia l'host e tutte le dipendenze necessarie.
  6. Misura il tempo totale di ripristino, dall'host vuoto al controllo operativo della casa.

Definisci un contratto di ripristino per ogni dipendenza containerizzata

Componente Oggetto persistente Verifica del ripristino
Home Assistant Stato completo di /config Vengono ripristinati l'account esistente e le automazioni
Database Backup coerente del database Le query dello storico e le scritture del Recorder vanno a buon fine
MQTT/broker Configurazione, credenziali, stato conservato se necessario I dispositivi si riconnettono e pubblicano dati
Radio Identità del dispositivo, chiavi di rete, mappatura Il coordinatore si riconnette senza dover essere nuovamente associato
Rete/proxy Porte, nomi, certificati, percorsi I client locali e remoti previsti si riconnettono

Un deployment ripristinabile ha una definizione versionata, uno stato archiviato fuori dall'host, dipendenze pronte, una coppia di rollback e un ripristino programmato su un host pulito. Superati questi test, i container diventano ciò che dovrebbero essere: unità runtime sostituibili, anziché animali domestici insostituibili.

Configurazione NAS e server

Altre letture

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.