Initial commit: Disaster recovery CLI tool

A Go-based CLI tool for recovering servers from backups to new cloud VMs.

Features:
- Multi-cloud support: Exoscale, Cloudscale, Hetzner Cloud
- Backup sources: Local filesystem, Hetzner Storage Box
- 6-stage restore pipeline with /etc whitelist protection
- DNS migration with safety checks and auto-rollback
- Dry-run by default, requires --yes to execute
- Cloud-init for SSH key injection

Packages:
- cmd/recover-server: CLI commands (recover, migrate-dns, list, cleanup)
- internal/providers: Cloud provider implementations
- internal/backup: Backup source implementations
- internal/restore: 6-stage restore pipeline
- internal/dns: Exoscale DNS management
- internal/ui: Prompts, progress, dry-run display
- internal/config: Environment and host configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Olaf Berberich
2025-12-08 00:31:27 +00:00
commit 29a2886402
26 changed files with 3826 additions and 0 deletions

16
.env.example Normal file
View File

@@ -0,0 +1,16 @@
# Exoscale credentials
EXOSCALE_API_KEY=your-exoscale-api-key
EXOSCALE_API_SECRET=your-exoscale-api-secret
# Cloudscale.ch credentials
CLOUDSCALE_API_TOKEN=your-cloudscale-token
# Hetzner Cloud credentials
HETZNER_API_KEY=your-hetzner-api-key
# Hetzner Storage Box (for backups)
HETZNER_STORAGEBOX_USER=u480813
HETZNER_STORAGEBOX_HOST=u480813.your-storagebox.de
# Local backup path
LOCAL_BACKUP_PATH=/srv/backups