v0.15.5: Disaster recovery — Hub-based infra backup, auto-mount, restore UI

Complete DR implementation (TASK2.md Phases 1-4):
- Hub infra-backup push/pull endpoints (controller.yaml, disk layout, stacks)
- Fresh-deployment detection pulls config from Hub, auto-mounts drives by UUID
- Full-page restore UI with drive status, app table, sequential restore
- docker-setup.sh shows DR instructions when customer_id is configured

New files: disk_layout.go, restore_scan.go, restore_app_linux.go,
restore_drives_linux.go, infra_backup.go, infra_pull.go,
handler_restore.go, restore.html

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-19 13:16:46 +01:00
parent 5d993b66a2
commit 6713df2186
21 changed files with 3324 additions and 9 deletions
+17
View File
@@ -305,6 +305,23 @@ func (s *Server) templateFuncMap() template.FuncMap {
}
return id
},
// statusText maps DR restore status codes to Hungarian labels.
"statusText": func(status string) string {
switch status {
case "pending":
return "Várakozik"
case "restoring":
return "Visszaállítás..."
case "done":
return "Kész"
case "failed":
return "Sikertelen"
case "skipped":
return "Kihagyva"
default:
return status
}
},
// pageMatch returns true if currentPage is in the pages slice.
// Used to filter page-specific alerts in layout.html.
"pageMatch": func(pages []string, currentPage string) bool {