136 lines
6.6 KiB
Markdown
136 lines
6.6 KiB
Markdown
---
|
|
title: HA Time Machine
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, backups, home-assistant, python, mit, niche]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Backups, https://github.com/saihgupr/HomeAssistantTimeMachine]
|
|
---
|
|
|
|
# 💾 HA Time Machine
|
|
|
|
> **La « Time Machine » pour vos configurations Home Assistant** : versions, diff et restauration de vos fichiers YAML depuis une interface web simple.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | (GitHub) |
|
|
| **GitHub** | [saihgupr/HomeAssistantTimeMachine](https://github.com/saihgupr/HomeAssistantTimeMachine) |
|
|
| **License** | MIT |
|
|
| **Langage** | Python |
|
|
| **Étoiles GitHub** | 703 ⭐ |
|
|
| **Dernière MAJ** | 2026-06-07 |
|
|
| **Catégorie** | [[cat-backups|Backups]] |
|
|
|
|
## 📝 Description
|
|
|
|
**HA Time Machine** est un **outil de versioning dédié à Home Assistant**. Il observe en continu le dossier de configuration (`/config`) de votre instance HA — fichiers YAML, automations, scripts, Lovelace, secrets — et en garde un **historique versionné consultable** depuis une interface web légère.
|
|
|
|
Concrètement, le projet joue le même rôle que la « Time Machine » macOS, mais appliquée au répertoire `config` de Home Assistant :
|
|
|
|
- ✅ **Snapshots automatiques** planifiés du dossier `/config`
|
|
- ✅ **Interface web** claire listant chaque version (date, auteur, taille)
|
|
- ✅ **Diff visuel** entre deux versions (ajouts / suppressions / modifications)
|
|
- ✅ **Restauration en un clic** d'un fichier unique ou d'un dossier complet
|
|
- ✅ **Compatible** `configuration.yaml`, `automations.yaml`, `scripts.yaml`, `ui-lovelace.yaml`, `.storage/`
|
|
- ✅ **Léger** : Python + SQLite, déploiement Docker en une commande
|
|
- ✅ **Multi-instances** : un seul HA Time Machine peut historiser plusieurs HA distants (via volume monté)
|
|
|
|
**Public cible** : utilisateurs **Home Assistant** qui veulent un **historique fin** de leurs fichiers YAML, sans monter une stack Git complète ni un Borg juste pour quelques Mo de configuration. C'est l'outil parfait entre « copier-coller manuel » et « VCS complet ».
|
|
|
|
## 🚀 Installation
|
|
|
|
### Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
ha-time-machine:
|
|
image: ghcr.io/saihgupr/homeassistanttimemachine:latest
|
|
container_name: ha-time-machine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8124:8000" # Web UI
|
|
volumes:
|
|
- ha_config:/config:ro # Dossier HA à versionner (read-only)
|
|
- hatm_data:/data # Historique + base SQLite
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- HA_CONFIG_PATH=/config
|
|
- INTERVAL=300 # Snapshot toutes les 5 min
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.hatm.rule=Host(`hatm.example.com`)"
|
|
- "traefik.http.routers.hatm.entrypoints=websecure"
|
|
- "traefik.http.routers.hatm.tls.certresolver=letsencrypt"
|
|
|
|
volumes:
|
|
ha_config:
|
|
external: true
|
|
name: homeassistant_config
|
|
hatm_data:
|
|
```
|
|
|
|
> 💡 Le volume `ha_config` est monté **en lecture seule** (`ro`) pour ne jamais qu'un bug de l'outil n'écrase votre configuration.
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Récupérer le chemin de votre config HA** : `/usr/share/hassio/homeassistant/` en mode HA OS / Supervised, ou un bind mount si vous tournez HA en conteneur à côté.
|
|
2. **Monter ce dossier** (read-only) dans `ha-time-machine` comme volume.
|
|
3. **Démarrer le conteneur** : `docker compose up -d`.
|
|
4. **Accéder à l'UI** : `http://IP:8124` (ou via Traefik sur `hatm.example.com`).
|
|
5. **Vérifier le premier snapshot** : un point de restauration doit apparaître dans la timeline en moins de 5 min (intervalle par défaut).
|
|
6. **Tester une restauration** sur un fichier anodin (`scripts.yaml` après l'avoir sauvegardé) pour valider le workflow.
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
- [[app-restic]] / [[app-borg]] — Backups génériques plus lourds (chiffrement, déduplication, remote), surdimensionnés pour quelques Mo de YAML.
|
|
- [[app-kopia]] — Alternative moderne à Restic/Borg avec UI.
|
|
- **Git + cron** — `git init` dans le dossier config + commit auto, solution DIY sans UI.
|
|
- **Home Assistant Google Drive Backup** (addon) — Backup complet, pas du versioning fin.
|
|
- **Home Assistant built-in snapshots** — Snapshots complets du superviseur, granularité au fichier.
|
|
|
|
### Comparaison HA Time Machine vs autres
|
|
|
|
| Critère | HA Time Machine | Git + cron | Restic | HA Snapshot |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| Cible | YAML HA | Tout | Tout | HA complet |
|
|
| Granularité | Fichier | Commit | Bloc | Snapshot |
|
|
| UI web | ✅ | ❌ | ❌ (sauf Kopia) | ✅ (HA) |
|
|
| Diff visuel | ✅ | Via GitLab | ❌ | ❌ |
|
|
| Restauration 1 fichier | ✅ | `git checkout` | `restore` | ❌ |
|
|
| Chiffrement | ❌ | ❌ | ✅ (AES) | ✅ |
|
|
| Lourd / léger | Léger | Moyen | Moyen | Lourd |
|
|
|
|
**Verdict** : HA Time Machine est **l'outil idéal** pour les utilisateurs HA qui veulent **un historique fin de leur YAML** avec une UI simple. Pour un backup complet, combinez avec les snapshots natifs de HA ou un Restic sur le dossier `/config`.
|
|
|
|
### Propriétaires
|
|
- **Dropbox + versioning** — possible mais hors self-hosted.
|
|
- **Time Machine sur NAS** — pour le NUC qui héberge HA, pas spécifique aux configs.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- **Règle 3-2-1** : le volume `hatm_data` ne compte que pour **1 copie locale** ; exportez régulièrement la base SQLite (et un tar du dossier) vers un [[app-restic]] / [[app-borg]] distant, ou un S3 compatible.
|
|
- **Pas de chiffrement intégré** : l'historique YAML est stocké en clair sur disque. Si votre serveur est compromis, les credentials présents dans `secrets.yaml` le sont aussi — gardez `secrets.yaml` en dehors si possible, ou chiffrez le volume `hatm_data` au niveau OS (LUKS / ZFS).
|
|
- **Test de restauration** : restaurez volontairement un fichier de conf tous les mois pour valider que l'UI fonctionne (ça ne remplace pas un vrai DR runbook, voir [[strategie-backup-321]]).
|
|
- **Lecture seule** : le volume `ha_config` est monté `ro` pour empêcher toute corruption en cas de bug applicatif.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub saihgupr/HomeAssistantTimeMachine](https://github.com/saihgupr/HomeAssistantTimeMachine)
|
|
- [Communauté Home Assistant Community Forum](https://community.home-assistant.io/)
|
|
|
|
## Pages Liées
|
|
- [[cat-backups]] — Catégorie Backups
|
|
- [[strategie-backup-321]] — Règle 3-2-1
|
|
- [[app-restic]] — Backup générique chiffré
|
|
- [[app-borg]] — Alternative à Restic
|
|
- [[app-kopia]] — UI moderne pour backups
|
|
- [[app-portainer]] — Pour gérer vos conteneurs
|
|
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
|