# Backup-Automation - Datei-Index ## 📁 Projektstruktur ### Dokumentation - **README.md** - Hauptdokumentation, Setup, Troubleshooting - **GETTING_STARTED.md** - Schnelleinstieg, Schritt fĂŒr Schritt - **ARCHITECTURE.md** - Detaillierte Architektur & Datenfluss - **SETUP_CHECKLIST.md** - VollstĂ€ndige Setup-Checkliste - **FILES_INDEX.md** - Dieser Index ### Kestra Workflows - **kestra/workflows/backup-provision.yaml** - Hauptworkflow - Netbox Abfrage - Ansible Playbook Trigger - Status Reporting ### Ansible Playbooks & Roles - **ansible/playbooks/install-borg-client.yaml** - Installation auf Clients - **ansible/playbooks/configure-backup-server.yaml** - Server-Setup - **ansible/roles/borg-client/** - Role fĂŒr Client-Installation - **ansible/roles/backup-server/** - Role fĂŒr Server-Setup ### Ansible Templates (.j2) - **borg-backup.sh.j2** - Hauptbackup-Script - Pre-Backup Hooks - Borg Execution - Pruning & Retention - **pre-backup-docker.sh.j2** - Docker-spezifische Pre-Backup - MySQL/PostgreSQL Dumps - Named Volume Export - Compose-File Backup - **borg-backup.service.j2** - Systemd Service - **borg-backup.timer.j2** - Systemd Timer (tĂ€gliche AusfĂŒhrung) - **backup-status-reporter.sh.j2** - Status Report - **rclone.conf.j2** - Rclone S3 Konfiguration - **rclone-sync.service.j2** - Systemd Service fĂŒr S3-Sync - **rclone-sync.timer.j2** - Systemd Timer fĂŒr S3-Sync ### Bash-Scripts (zum AusfĂŒhren auf Hosts) - **scripts/borg-backup-wrapper.sh** - Wrapper mit Error-Handling - **scripts/docker-volume-dump.sh** - Docker Volume Export - **scripts/backup-status-reporter.sh** - Status Report - **scripts/restore-from-borg.sh** - Restore-Helfer ### Konfigurationen - **.gitignore** - Git Ignore Patterns - Secrets, Keys - TemporĂ€re Dateien - IDE/OS-Dateien --- ## 📊 GrĂ¶ĂŸe & KomplexitĂ€t | Komponente | GrĂ¶ĂŸe | KomplexitĂ€t | |-----------|-------|------------| | Kestra Workflow | ~400 Zeilen | Mittel | | Ansible Playbook Client | ~200 Zeilen | Mittel | | Ansible Playbook Server | ~250 Zeilen | Mittel | | Borg Backup Script | ~200 Zeilen | Mittel | | Docker Pre-Backup | ~150 Zeilen | Mittel | | Rclone Config | ~30 Zeilen | Einfach | | Dokumentation | ~3000 Zeilen | -- | --- ## 🔄 DatenabhĂ€ngigkeiten ``` backup-provision.yaml (Kestra) ├── Nutzt: NETBOX_TOKEN (Secret) ├── Triggert: install-borg-client.yaml (Ansible) │ ├── Nutzt: borg-backup.sh.j2 │ ├── Nutzt: pre-backup-docker.sh.j2 │ ├── Nutzt: borg-backup.service.j2 │ └── Nutzt: borg-backup.timer.j2 │ └── Auf Backup-Server: ├── configure-backup-server.yaml (Ansible) ├── Nutzt: rclone-sync.service.j2 ├── Nutzt: rclone-sync.timer.j2 └── Nutzt: rclone.conf.j2 ``` --- ## 🚀 Erste Verwendung 1. **README.md** lesen - Überblick 2. **GETTING_STARTED.md** folgen - Step-by-Step 3. **SETUP_CHECKLIST.md** durcharbeiten - Validierung 4. **ARCHITECTURE.md** - Tieferes VerstĂ€ndnis --- ## 📝 Anpassungen ### Pro Host anpassen: - Template-Variablen in Ansible `group_vars/` / `host_vars/` - Beispiele: Backup-Pfade, Exclude-Listen, Timeouts ### Pro Server anpassen: - `rclone.conf.j2` - S3 Credentials, Region - `borg-backup.timer.j2` - Backup-Zeit (aktuell 03:00) - `rclone-sync.timer.j2` - Sync-Zeit (aktuell 04:00) ### Kestra anpassen: - `backup-provision.yaml` - Netbox Abfrage-Parameter - Schedule Ă€ndern (aktuell tĂ€gliche 02:00) - Error Handling / Notifications --- ## 🔐 Sicherheit ### Secrets (NICHT ins Git!) - Netbox API Token → Kestra Secrets - Hetzner S3 Keys → Ansible Vault / Kestra Secrets - SSH Private Keys → `/root/.ssh/` (Host-lokal) ### SSH Key Management - Ed25519 Keys generieren pro Host - Public Keys → Backup-Server `authorized_keys` - Mit `restrict,command=...` limitation --- ## 📚 Referenzen - **Borg Backup**: https://borgbackup.readthedocs.io - **Kestra**: https://kestra.io/docs - **Ansible**: https://docs.ansible.com - **Rclone**: https://rclone.org/s3/ - **Hetzner S3**: https://www.hetzner.com/cloud/storage/object-storage --- **Stand**: 2026-09-09 **Version**: 1.0 **Maintainer**: Jonny @ MBO-Tech-IT