Backups & Schema-Migrations
Inhalt
Mesh persistiert seine ganze Konfiguration in einer einzigen JSON-Datei und schützt sie automatisch vor Schema-Änderungen.
Wo liegt die Konfiguration?
Im Container: /data/config.json — das wird über das Volume-Mount auf den Host durchgereicht.
Standard auf Unraid: /mnt/user/appdata/itsweber-mesh/config.json.
Schema-Migrations-Chain
Mesh hat eine Migration-Chain (apps/web/src/server/config/migrations.ts). Beim Container-Start läuft runMigrations:
- Liest aktuelle Config-Version aus dem JSON
- Wenn Version <
CURRENT_VERSION: Migration für jeden Schritt durchlaufen - Bei Erfolg: persistierte Config hat neue Version
- Bei Fehler: Container startet nicht — Logs zeigen genau welcher Schritt
Aktuelle Version: v17 (Stand 2026-04-29).
Automatisches Backup VOR jedem Bump
Vor jedem Schema-Bump legt der Store ein Backup an:
/data/config.json.pre-vN
Beispiele aus dem Live-System:
config.json
config.json.pre-v15
config.json.pre-v16
config.json.pre-v17
Bestehende Backups werden nie überschrieben — wenn pre-v17 schon existiert (z. B. weil der Container schonmal von 16→17 migriert hat), wird ein neuer Bump das Backup nicht ersetzen.
Manuelle Backups
Empfohlen: täglicher rsync auf einen anderen Host:
rsync -av --delete /mnt/user/appdata/itsweber-mesh/ backup-host:/path/to/mesh-backup/
Oder alle paar Tage einen Snapshot des kompletten appdata-Pfads — das ist Unraid-Standard via Appdata-Backup-Plugin.
Restore
docker stop itsweber-mesh
cp config.json.pre-v17 config.json
docker start itsweber-mesh
Beim Start läuft die Migration nochmal — wenn das die selbe Version war, ist es ein No-op.
Was bei einem korrupten Backup tun?
Mesh kann auf einer leeren /data starten — der First-Run-Wizard läuft dann durch und legt eine fresh Config an. Ist also kein Datenverlust möglich, nur Konfigurations-Verlust.
Wenn die config.json zu sehr beschädigt ist:
mv config.json config.json.broken
docker restart itsweber-mesh
Schema-Versionen-Historie
| Version | Wann | Inhalt (Highlights) |
|---|---|---|
| 1 | v0.1 | Initial |
| 8 | v0.4 | Multi-Board-Support |
| 10 | v1.0 | Header-Search, OIDC |
| 13 | v1.2 | Editierbare Help-Items, Editor-Rolle |
| 14 | v1.4.2 | Command-Overview-Banner, Quick-Actions |
| 15 | v1.4.3 | Grid 12×80 → 24×20 |
| 16 | v1.4.6 | Z2M Auto-Discovery |
| 17 | v1.5.0 | Routen-basierte Nav, services[].pinnedToHome |
Vollständige Liste: apps/web/src/server/config/migrations.ts.
Pre-Release-Validation
Bei Major-Schema-Bumps testen wir:
- Live-Config kopieren in eine isolierte Test-Instanz
- Container mit neuem Image starten → Migration läuft
- UI manuell durchklicken → keine 500er, keine fehlenden Daten
Erst dann wird :latest aktualisiert.