Comment versionner Home Assistant avec Git pour annuler une erreur rapidement
J’ai Home Assistant dans une VM sur Proxmox. Donc, sur le papier, je suis déjà tranquille : j’ai configuré Proxmox pour avoir des backups réguliers de toutes mes machines virtuelles et containers LXC.
Mais dans la pratique, quand on bidouille Home Assistant, on touche souvent plein de fichiers YAML. Une automation par ici, un script par-là, un template capteur, un package custom… et parfois on casse quelque chose.
Le backup complet est utile en cas de gros incident, mais pour “annuler juste cette modif de fichier”, c’est un peu l’équivalent de sortir un char d’assaut. C’est exactement là où Git devient très pratique : versionner finement la configuration, commit par commit, et revenir en arrière sans avoir à rollback la totalité de la VM via un backup.
Backup VM et versionning fichier : ce n’est pas le même besoin
Le backup Proxmox protège bien l’infrastructure : panne, corruption, catastrophe, migration. D’ailleurs, je parle du backup de Proxmox, mais ce serait la même chose pour quelqu’un qui ferait ses backups via Home Assistant directement.
Git, lui, protège le quotidien :
- “J’ai modifié
sensors.yaml, maintenant plus rien ne se déclenche.” - “Mon nouveau template Jinja passe, mais le résultat est faux.”
- “J’ai testé une config vite fait, je veux revenir à l’état d’hier.”
Dans ces cas-là, restaurer une sauvegarde complète est disproportionné. Avec Git, on peut juste comparer, annuler ou restaurer les fichiers concernés.
Les deux se complètent très bien : backup global + historique précis des changements.
Quoi versionner dans Home Assistant (et quoi ignorer)
De mon côté, je versionne surtout les fichiers de configuration “métier” :
configuration.yamlautomations.yamlscripts.yamlscenes.yaml- le dossier
packagescustoms - le dossier
templatescustoms
Et j’exclus le reste quand ce n’est pas utile à versionner :
- secrets
- bases de données
- logs
- fichiers temporaires/cache
C’est le moment où il faut être un peu plus rigoureux pour éviter des problèmes futurs. L’idée est simple : garder un repo propre, lisible, utile pour revenir en arrière rapidement.
Deux règles simples :
- Ne jamais versionner les secrets (
secrets.yaml, tokens, credentials, etc.). - Exclure les fichiers volumineux ou très verbeux (DB, logs, temporaires).
De toute manière, avant chaque commit, je vérifie les fichiers qui vont être versionnés. S’il y en a un nouveau qui passe au travers de mon gitignore, je modifie mes règles pour l’exclure.
Mise en place : workflow simple et efficace
Je reste volontairement sur un setup simple, sans sur-ingénierie.
Ajouter l’addon Studio Code Server
Sur Home Assistant, j’installe l’addon Studio Code Server. Il apporte un environnement pratique pour éditer les fichiers de config (c’est mieux que File Editor), et en plus, il permet d’avoir accès à Git et au terminal.
Générer une clé SSH depuis Home Assistant
Depuis le terminal de l’addon, je génère une clé SSH dédiée à ce besoin. L’objectif : permettre à Home Assistant de pull et push vers GitHub sans mot de passe.
Créer le repository GitHub
Je crée un repo, a priori privé. Ensuite, dans les settings du repo, j’ajoute la clé publique de Home Assistant dans Deploy keys.
Pourquoi une deploy key plutôt qu’une clé perso classique ? Parce que ça limite l’accès à ce seul repo. C’est plus propre et plus sécurisé que d’ouvrir l’accès à tout mon compte. Technique du moindre privilège !
Initialiser Git dans le dossier de configuration
Dans le dossier de config Home Assistant (souvent /config), j’initialise le repo et je lie le remote :
git init
git remote add origin git@github.com:UTILISATEUR/NOM_DU_REPO.git
git fetch origin
git checkout -b main origin/main || git checkout -b main
git add .
git commit -m "Add: initial configuration"
git push -u origin main
Le checkout avec fallback permet de gérer les deux cas :
- repo déjà initialisé avec un commit (README, .gitignore, etc.)
- repo vide
Utilisation au quotidien
Maintenant que tout ça est en place, mon flux est très simple :
- Je modifie une automation ou un script.
- Je teste dans Home Assistant.
- Si c’est bon :
git add,git commit,git push. - Si ça casse : je regarde le diff, je corrige, je discard.
Je passe d’un mode “je croise les doigts” à un mode “je peux expérimenter sans peur”. Et c’est souvent là que ça change tout : on ose mieux itérer, parce qu’on sait revenir proprement.
Bref
Si tu as déjà des backups Proxmox, tu as une très bonne base. Mais pour le quotidien Home Assistant, Git apporte une finesse que le backup VM ne donne pas. Pas besoin d’une grosse usine : un repo, une clé SSH, un .gitignore et des commits réguliers.
La vraie question devient ensuite “comment faire évoluer sereinement sa maison dans le temps ?” plutôt que de perdre du temps à retrouver des configurations qui marchaient avant :)