Home-Assistant : Comment faire une sauvegarde efficace !

Sauvegarder son système home Assistant est indispensable pour se prémunir de drames. Idéalement, il faut le faire sur 3 supports, 2 machines dont 1 distante. C'est le sujet de cet article.
Home-Assistant : Comment faire une sauvegarde efficace !

Sommaire

Comme tout système informatique ou assimilé, il est crucial de faire des sauvegardes de son installation Home-Assistant. En effet, même avec le matériel de la meilleure qualité qui soit, la panne est toujours possible et donc il est préférable d'éviter que cela finisse en drame.

⚠️
Note : ce tutoriel s'applique au cas le plus courant d'installation de Home-Assistant : HAOS. Pour les autres configurations d'installation, une approche différente devra être envisagée pour une sauvegarde complète de l'écosystème Home-Assistant.

Deux opérations complémentaires sont décrites dans l'article :

  • Réaliser la sauvegarde à proprement parler, qui n'est autre qu'une archive de toute l'installation, en utilisant les fonctions existantes de HA, ou avec l'aide d'une intégration dédiée à cette fonction.
  • Transférer la sauvegarde dans un système distant afin de se prémunir d'une défaillance locale du stockage qui entrainerait la perte du système et des sauvegardes. On réalisera cette partie à l'aide d'un add-on.
👍
Petit rappel
Pour avoir un système de sauvegarde efficace, il est impératif de respecter la fameuse règle du 3-2-1 : 3 copies des données avec l'original, une copie locale sur une autre machine, et une copie distante.
Le système présenté ici permet de réaliser cette configuration facilement et automatiquement.

La sauvegarde locale

Méthode simple (standard HA)

La méthode utilise les outils standards de HA : il n'y a rien à installer.

On va tout simplement créer une automation qui appellera l'action système du superviseur Home-Assistant pour faire une sauvegarde. Cela permettra de réaliser une sauvegarde automatique quotidienne par exemple.

Pour cela, on va aller dans les Paramètres -> Automatisations et scènes -> Créer une nouvelle automatisation.

On va donc créer un déclencheur horaire pour, par exemple, lancer la sauvegarde tous les jours au petit matin et en action mettre l'action Sauvegarde ce qui va nous donner quelque chose comme ça (ici tous les matins à 3h du matin).

Si on le souhaite, on peut donner un nom personnalisé aux sauvegardes, mais, pour cet exemple le nom par défaut composé de la date/heure de la sauvegarde ira très bien. Un mot de passe peut être défini aussi si nécessaire. On cochera l'option "Compressé" pour optimiser la place et les temps de transfert des sauvegardes. L'emplacement est disponible s'il y a plus d'un volume dans votre installation HA. Pour finir, il est possible d'exclure la base de données afin de limiter la taille de la sauvegarde si vous avez beaucoup de capteurs et/ou que vous gardez les données sur une longue période.

Pour plus de sécurité, vous pouvez maintenant, une fois sauvegardé l'automation, la lancer une fois pour s'assurer qu'elle fonctionne bien. Une fois lancé, quelques minutes plus tard, en se rendant dans Paramètres -> Systèmes -> Sauvegarde, vous devriez voir apparaitre un fichier correspondant à la sauvegarde lancée manuellement par l'automation.

Vous pouvez également, au lieu d'utiliser l'action Sauvegarde complète, utiliser la Sauvegarde partielle. Elle permet à ce moment-là de faire des sauvegardes plus sélectives en incluant/excluant certaines choses, et aussi de pouvoir sauvegarder des dossiers spécifiques en plus de ceux standards de HA.

Conclusion : méthode simple et rien à installer, mais, par contre, on devra de temps en temps effacer manuellement les plus anciennes sauvegardes sous peine de saturer son espace de stockage et faire planter son système.

Méthode avancée (Auto-backup)

Comme on l'a vu dans la méthode simple, le système de sauvegarde intégré au superviseur de Home-Assistant fait très bien son travail, mais il ne s'occupe pas de gérer les sauvegardes elle-même et donc de faire le nettoyage de temps en temps.

Cependant, il existe une intégration personnalisée plus souple et qui comble les manques de Home-Assistant. Auto-Backup va utiliser le système de backup de HA avec les options qui nous manquaient précédemment. On peut installer ce composant soit via HACS, soit manuellement en copiant les fichiers dans le dossier custom_components. Une fois redémarré HA, il suffit d'ajouter l'intégration via le menu Intégrations de HA.
Cela va ajouter une action nommée Auto Backup, un capteur qui donne l'état du processus de sauvegarde (permet de détecter si la sauvegarde ne s'est pas faite), et 2 blueprints: un pour gérer les sauvegardes et un pour gérer des alertes concernant les sauvegardes.

Nous allons dans l'immédiat nous intéresser au premier Blueprint nommé Automatic Backups.

Ce blueprint donne accès à toutes les options d'Auto Backup. On va les voir rapidement en détail :

  • Name template : permet de personnaliser le nom du fichier de la sauvegarde selon des règles un peu complexes. Par défaut, le modèle proposé indique dans le nom le type de sauvegarde et la date de la sauvegarde. Vous pouvez laisser le code par défaut ou tout supprimer et dans ce cas le nom du fichier sera simplement la date de la sauvegarde.
  • Time of day : comme le nom l'indique, l'heure à laquelle faire la sauvegarde, en général dans la nuit.
  • Backup password : vous permet de définir un mot de passe pour l'archive de la sauvegarde (à n'utiliser que si vous enregistrez le mode de passe dans un gestionnaire de mot de passe ;) ).
  • Enable Hourly/Daily/Monthly/Yearly Backups : permet de facilement créer une sauvegarde horaire, quotidienne, mensuelle, annuelle avec des règles de conservations prédéfinies.
  • Backup Action / Condition : permet de faire des configurations plus complexes pour les sauvegardes, mais très rarement utilisé. Pour ceux intéressés, cela est documenté ici : Auto-Backup Advanced Examples.

Une fois validé ce blueprint, l'automation correspondante sera automatiquement créée et les sauvegardes seront alors automatiquement exécutées selon la/les périodicités définies et avec les critères choisis.

Notifications (avec Auto-backup)

Tant que nous sommes dans les Blueprint, nous allons maintenant nous intéresser au deuxième blueprint qui fait partie de l'intégration Auto Backup.

Ce blueprint va permettre d'envoyer des notifications pour les évènements générés par les sauvegardes. En effet, il est crucial d'être averti si les sauvegardes ne se font plus, mais cela peut aussi servir pour indiquer la bonne réalisation de la sauvegarde.

  • Events : permet de choisir le ou les évènements qui vont provoquer une notification : Start (début), Successful (Réussi), Purged (Purge des sauvegardes), et le plus important Failed (raté).
  • Send to Home Assistant : permet de créer une notification qui apparaitre dans l'interface Lovelace.
  • Mobile Devices : idem, mais vers les appareils mobiles qui sont connectés à HA.
  • Only after / before : permet de configurer des périodes silencieuses où vous ne recevrez pas de notifications.

Désormais, nous serons automatiquement avertis pour les événements choisis. Il nous reste plus qu'à envoyer nos sauvegardes vers un système de stockage déporté, afin d'y avoir toujours accès en cas de défaillance du stockage local.

Transfert vers un système distant

Maintenant, nous allons installer un add-on qui nous permettra d'envoyer les sauvegardes vers n'importe quel système de stockage en ligne (des plus basiques en FTP, SCP aux plus élaborés comme Nextcloud, WebDAV, AWS...). Cet add-on, qui est basé sur rclone, est un outil universel de transferts de fichiers, et probablement connu d'un certain nombre d'entre vous déjà.

On va installer cet add-on via Paramètres -> Modules Complémentaires -> Boutique des modules complémentaires puis les 3 petits points en haut à droite -> Dépôts et là, on va copier/coller cette adresse :

https://github.com/jcwillox/hassio-rclone-backup

Une fois validé, on rafraichit la page et là l'add-on Rclone va apparaitre et il suffit de l'installer via le bouton adéquat. Une fois installé, il va falloir créer un fichier de configuration pour rclone, pour lui permettre de se connecter au système de stockage en ligne que l'on souhaite utiliser.

La solution la plus simple pour faire le fichier de configuration va être de télécharger le programme rclone sur votre ordinateur. Le logiciel est disponible sur toutes les plateformes les plus courantes, y compris pour Mac, sur RClone téléchargements

Une fois téléchargé rclone, il va suffire de l'exécuter sur votre machine par la commande suivante :

rclone config

Rclone va alors vous guider pas à pas pour configurer l'accès à un système de stockage. La liste des systèmes de stockage supportés est disponible ici :

Overview of cloud storage systems
Overview of cloud storage systems

Attention, certains systèmes de stockage comme NextCloud, Owncloud par exemple, utilisent le protocole WebDAV. Beaucoup de systèmes de stockage utilisent également le protocole AWS même si ce n'est pas Amazon...

Il suffit de suivre les indications du logiciel pour configurer votre système de stockage pour Rclone. Selon les cas, vous aurez juste à fournir les identifiants d'accès au système de stockage. Parfois, il vous demandera de vous identifier sur le système de stockage pour générer un jeton d'identification. Une fois le processus terminé avec succès, Rclone enregistre en local un fichier nommé rclone.conf. On va copier ce fichier dans le dossier config de HA (soit en utilisant l'add-on Samba, soit via le gestionnaire de fichiers de HA).

Une fois ce fichier copié, on peut alors démarrer l'add-on Rclone qui devrait démarrer sans problème. Une fois démarré, vous pouvez vous rendre dans l'onglet "Rclone Backup" dans HA. L'onglet Explorer permet de parcourir le stockage distant que vous avez configuré. On y verra apparaitre progressivement les sauvegardes transférées.

Il ne nous reste plus qu'à configurer Rclone pour l'envoi des fichiers selon des règles choisies. L'onglet Configuration de l'add-on contient par défaut une configuration que l'on va pouvoir modifier pour coller à nos besoins.

Je vais partir de l'exemple ci-dessous et commenter les diverses options.

- name: Sync Backup daily
  schedule: 00 4 * * *
  command: sync
  sources:
    - /backup
  destination: NC:/Auto
  include: []
  exclude: []
  flags: {}
  • name : nom que vous voulez donner à ce calendrier de transfert des sauvegardes.
  • schedule : il s'agit ici d'encoder les horaires de sauvegarde à la méthode "cron". Le format est mm (minute) hh (heure) jj (jour) MM (mois) JJJ (jour de la semaine). Ici dans notre exemple, rclone se déclenchera tous les jours à 4h du matin.
  • command : ici, on peut choisir de faire une sauvegarde ou une synchro. Si on indique sync, rclone va garder une copie identique du dossier de sauvegarde dans HA dans le stockage en ligne que vous avez indiqué. Si on indique copy, rclone copiera les nouveaux fichiers présents dans le dossier de sauvegarde de HA vers votre stockage en ligne, mais ne supprimera jamais aucun fichier dans votre stockage en ligne, ce qui constituera une vraie sauvegarde.
⚠️
Attention : avec l'option copy, il est impératif de supprimer régulièrement les sauvegardes inutiles dans le stockage en ligne sous peine de le saturer plus ou moins rapidement.
  • sources : permet de sauvegarder d'autres dossiers en plus de celui des sauvegardes (/backup) par défaut. Autant de dossiers que souhaité peuvent être listés.
  • destination : on indique ici la ou les destinations vers lesquelles les sauvegardes devront être transférées. Une syntaxe spécifique doit être utilisée ici : le nom du stockage vers lequel on veut envoyer les sauvegardes telles que défini dans le fichier de configuration rclone.conf suivi de l'éventuel chemin d'accès dans le stockage distant où on veut stocker les fichiers, sinon "/".
  • include / exclude: permet d'ajouter des éléments spécifiques à sauvegarder en plus de la sauvegarde classique de HA tel qu'un répertoire créé dans HA ou des fichiers.

Vous pouvez maintenant sauvegarder la configuration et démarrer l'add-on Rclone. N'oubliez pas de cocher Lancer au démarrage, Chien de Garde, et Afficher dans la barre latérale pour être sûr que l'add-on soit toujours actif.

Une fois démarré, il faudra attendre l'heure prévue d'exécution de rclone pour pouvoir vérifier si tout se passe bien. Quand une sauvegarde démarrera, vous devriez retrouver quelque chose de similaire à ça (rclone met à jour le statut des transferts en cours toutes les minutes) :

[2024-10-05] [04:00:00] [INFO]: running "Sync Backup daily"; /backup -> NC:/Auto
[2024-10-05] [04:00:00] [INFO]: renamed 5 backups
2024/10/05 04:01:01 INFO  : 
Transferred:   	  234.559 MiB / 334.561 MiB, 70%, 3.499 MiB/s, ETA 28s
Checks:                 4 / 4, 100%
Transferred:            0 / 1, 0%
Elapsed time:       1m0.8s
Transferring:
 *                      Saturday_Oct_05_2024.tar: 70% /334.561Mi, 3.499Mi/s, 28s

2024/10/05 04:01:36 INFO  : Saturday_Oct_05_2024.tar: Copied (new)
2024/10/05 04:01:41 INFO  : Monday_Sep_30_2024.tar: Deleted
2024/10/05 04:01:41 INFO  : Sunday_Sep_29_2024.tar: Deleted
2024/10/05 04:01:41 INFO  : 
Transferred:   	  334.561 MiB / 334.561 MiB, 100%, 1.733 MiB/s, ETA 0s
Checks:                 6 / 6, 100%
Deleted:                2 (files), 0 (dirs), 1.266 GiB (freed)
Transferred:            1 / 1, 100%
Elapsed time:      1m41.4s

[2024-10-05] [04:01:41] [INFO]: unrenamed 5 backups
[2024-10-05] [04:01:41] [INFO]: finished in 1m41s
[2024-10-06] [04:00:00] [INFO]: running "Sync Backup daily"; /backup -> NC:/Auto
[2024-10-06] [04:00:00] [INFO]: renamed 6 backups
2024/10/06 04:01:01 INFO  : 
Transferred:   	  210.715 MiB / 374.033 MiB, 56%, 3.048 MiB/s, ETA 53s
Checks:                 5 / 5, 100%
Transferred:            0 / 1, 0%
Elapsed time:       1m0.8s
Transferring:
 *                        Sunday_Oct_06_2024.tar: 56% /374.033Mi, 3.048Mi/s, 53s

Une fois les transferts et les éventuelles suppressions de fichiers faites (si vous avez choisi l'option sync), cela devrait apparaitre comme cela :

2024/10/06 04:01:59 INFO  : Sunday_Oct_06_2024.tar: Copied (new)
2024/10/06 04:01:59 INFO  : 
Transferred:   	  374.033 MiB / 374.033 MiB, 100%, 2.402 MiB/s, ETA 0s
Checks:                 5 / 5, 100%
Transferred:            1 / 1, 100%
Elapsed time:      1m59.0s

[2024-10-06] [04:01:59] [INFO]: unrenamed 6 backups
[2024-10-06] [04:01:59] [INFO]: finished in 1m59s

Votre système est désormais sauvegardé automatiquement et la sauvegarde est mise en lieu sûr. De cette façon, même si le pire devait arriver à votre système HA, il suffira de télécharger la dernière sauvegarde et la restaurer dans un système HA vierge pour retrouver rapidement votre système opérationnel !

Cet article est également publié sur mon blog: https://www.domedia.net/?p=1449&lang=fr