# Maestro Hosting — Decision Memo Author: Backyard (Infrastruktur) · Stand: 2026-05-07 · Status: Recon-Empfehlung, READ-ONLY User-Frage (2026-05-08): „lohnt sich maestro für uns oder reicht self hosted auf hetzner neue server mit backyard checken" Dieses Doc ist die Antwort. Kurzfassung in einem Satz: **Maestro Cloud (Starter ~10 EUR/Monat oder Free-Tier zuerst) nehmen — Self-Host auf Hetzner lohnt sich für unsere Team-Größe + Stack nicht, vor allem weil iOS auf Linux prinzipiell nicht testbar ist und unser CX23-Server bereits ausgelastet ist.** --- ## 1. Hard-Constraint: iOS lässt sich auf Linux nicht testen Apple-Lizenz-Restriction: **iOS-Simulator läuft ausschließlich auf macOS.** Hetzner liefert (im EU-Standard-Tier) keine Mac-Hardware. Linux-VMs auf Hetzner können nur Android-Emulators hosten. Das heißt: - **Self-Host auf einem Hetzner-Linux-Server kann maximal die Android-Hälfte unserer E2E-Suite abdecken.** - iOS-Tests müssten parallel auf einem anderen Pfad laufen: - (a) lokaler Mac-Build (User-Hardware) — nicht CI-fähig - (b) Mac-mini bei MacStadium o.ä. — ~60-120 EUR/Monat - (c) GitHub-Actions macOS-Runner — ~0.08 USD/Min, pay-per-use - (d) Maestro-Cloud nur für iOS, self-host für Android — Hybrid Jede dieser Optionen treibt entweder Kosten oder Wartungs-Komplexität. **Konsequenz:** „Self-Hosted-Maestro auf Hetzner" ist immer ein Hybrid-Setup, nie eine vollständige Lösung. Wer „self-hosted" sagt, meint praktisch entweder *nur Android* oder *Hybrid mit zweitem Pfad für iOS*. --- ## 2. Performance-Risk auf existierendem CX23 Der dedicated rebreak-server ist eine **CX23: 2 vCPU x86, 4 GB RAM, 40 GB SSD, 2 GB swap** (siehe `reference_rebreak_server.md`). Aktuelle Last: - `rebreak-staging` (Nuxt-Server, Nitro) - `rebreak-imap-staging`, `rebreak-idle-staging` (Mo's IMAP-Stack) - `rebreak-webhook` (Auto-Deploy-Listener) - `pnpm build` während Deploy (peakt RAM) Ein Android-Emulator braucht **2-4 GB RAM** + 1-2 vCPU für akzeptable Boot-Zeit und stabile Test-Runs (bei `-no-window -no-audio -gpu swiftshader_indirect` am unteren Ende). Das **kollidiert direkt** mit dem Build-Peak. OOM-Risk auf 4 GB RAM ist real und wird in `feedback_deploy_workflow.md` schon ohne Maestro notiert. **Heißt:** wir KÖNNEN den CX23 nicht zusätzlich mit Android-Emulator beladen, ohne Production-Risiko. Wir bräuchten zwingend einen **zweiten dedicated CI-Server** (mindestens CX22 ~5 EUR/Monat netto, eher CX32 mit 8 GB RAM ~9-11 EUR/Monat um Reserve zu haben, weil Emulator + Maestro-CLI + Test-Runner + ggf. paralleles Android-Build sich gerne überlappen). Damit ist der „self-hosted ist gratis"-Mythos schon entzaubert: wir reden realistisch über **zusätzlich ~10 EUR/Monat Hetzner-Server** plus mehrere Stunden Setup plus laufende Wartung. --- ## 3. Cost-Comparison Annahmen: ~10 Test-Runs/Monat (TestFlight-Sprint-Phase, später ggf. mehr), je Run ~5 Minuten Maestro-Time pro Plattform, iOS+Android parallel. | Variante | Direkte Kosten/Monat | Direkte Kosten/Jahr | Setup-Aufwand | Laufende Wartung | |----------|----------------------|---------------------|---------------|------------------| | **(A) Maestro Cloud Starter** | ~10 EUR (laut Ahmed-Quote, plus Free-Tier-Monatsminuten) | ~120 EUR | 30-60 min (CLI install + cloud-token) | quasi 0 — Maestro betreibt Devices | | **(B) Self-Host Android-only auf Hetzner (neuer CX22/32)** | 5-11 EUR (+ Strom-Pool inklusive) | 60-130 EUR | 4-8 h (Server provision + Android-SDK + Emulator-image + KVM-acceleration check + Maestro-CLI + Webhook/Trigger) | ~30 min/Monat (image-updates, Emulator-state-Drift) | | **(B+) Self-Host Android + GitHub-Actions-iOS** | 5-11 EUR Hetzner + ~4 EUR GitHub macOS-Minutes (10×5 min) | 110-180 EUR | 6-10 h (zwei Pfade synchron halten) | ~1 h/Monat (zwei Pipelines pflegen) | | **(C) Pure self-host iOS + Android (eigener Mac-mini bei MacStadium)** | 60-120 EUR Mac + 5-11 EUR Hetzner | 780-1570 EUR | 8-16 h | ~2 h/Monat (zwei Hosts) | | **(D) GitHub Actions Matrix-Build (macOS-runner für beide)** | ~8 EUR (10×5 min iOS + Android Linux gratis) | ~100 EUR | 2-3 h Workflow-yml | ~30 min/Monat | **Beobachtung:** Die nominellen Kosten von (A), (B), (B+) und (D) liegen alle im Bereich 60-180 EUR/Jahr. Der echte Tradeoff sind **Setup-Aufwand und Wartungs-Komplexität**, nicht Cash. --- ## 4. Aufwand-Schätzung pro Variante ### (A) Maestro Cloud - **Setup:** Account anlegen, `MAESTRO_CLOUD_API_KEY` als GitHub-Secret, ein einziger CLI-Aufruf in der Action. **30-60 Min.** - **Wartung:** Maestro pflegt Device-Pool, Updates, OS-Versionen. **Nahe 0.** - **Risk:** External Vendor — wenn Maestro down, blockiert PR-Test. Akzeptabel weil Tests nicht Production-blocking sind, nur PR-Gate. ### (B) Self-Host Android-only - **Setup:** Hetzner-Server provisionieren (CX22/32), Ubuntu, Android-SDK + cmdline-tools + emulator-image installieren, KVM/HAXM-Acceleration testen (auf Hetzner-Cloud bedingt verfügbar — `/dev/kvm` muss exposed sein, je nach Hetzner-Tier OK), Maestro-CLI installieren, Webhook-Endpoint bauen oder GitHub-Actions self-hosted-runner registrieren. **4-8 h.** - **Wartung:** Android-System-Image-Updates (alle 2-3 Monate), Emulator-state kann korrupt werden, Maestro-CLI-Updates, Disk-cleanup für AVD-snapshots. **~30 Min/Monat im stabilen Zustand, gelegentlich mehrere Stunden bei Bruch.** - **Risk:** Wenn Server down, Test-Pipeline down. Plus: ein zweiter Server vergrößert die Hetzner-Sprawl, gegen die wir gerade in `project_rebreak_dedicated_hetzner.md` fokussiert haben. ### (B+) Hybrid Self-Host Android + Cloud-iOS oder GH-Actions-iOS - **Setup:** wie (B) **plus** zweiter Pfad für iOS. **6-10 h.** - **Wartung:** Zwei Pipelines, zwei Auth-Token-Pflege, zwei verschiedene Reporting-Outputs. **~1 h/Monat.** - **Risk:** Pipeline-Drift — Android-Test-Setup divergiert von iOS-Test-Setup, Bugs werden auf einer Plattform gefangen, auf der anderen nicht. ### (C) Pure Self-Host inkl. Mac - **Setup:** Mac-mini-Provider auswählen (MacStadium, Scaleway-Apple-M1, Mac in Cloud), Maestro auf macOS installieren, iOS-Sim einrichten, plus Hetzner für Android. **8-16 h.** - **Wartung:** Zwei OS, zwei Toolchains, Apple-Xcode-Updates. **~2 h/Monat.** - **Risk:** Hoch. Aufwand steht in keinem Verhältnis zum Output für unsere Team-Größe (User + ein paar Sub-Agents). ### (D) GitHub Actions Matrix - **Setup:** Eine `.yml` mit zwei Jobs (`maestro-ios` auf macos-latest, `maestro-android` auf ubuntu-latest mit `reactivecircus/android-emulator-runner`). **2-3 h.** - **Wartung:** Action-Updates, ggf. Cache-Invalidierung. **~30 Min/Monat.** - **Risk:** macOS-Minutes können bei vielen Test-Runs schnell teuer werden (z.B. 100 Runs/Monat × 5 Min = 40 USD). Bei aktueller Run-Frequenz aber OK. --- ## 5. Empfehlung — Lieblings-Pfad ### Lieblings-Pfad: **Maestro Cloud Starter (Variante A)** **Begründung:** 1. **iOS-Hard-Constraint** löst sich elegant — Cloud betreibt Apple-Devices. 2. **Setup-Aufwand minimal** — eine Stunde max, keine Hetzner-Sprawl. 3. **Hetzner-Strategie respektiert** — der CX23 bleibt fokussiert auf `rebreak-staging`/`rebreak-prod`-Workload, kein OOM-Risk durch Emulator-Last. 4. **Ahmed-Empfehlung deckt sich** — `TESTING_STATE.md §5.2` nennt Maestro mit Cloud-Run als bevorzugten Pfad genau aus diesem Grund. 5. **Cash-Risk niedrig** — 120 EUR/Jahr ist Rauschen verglichen mit DiGA-Pen-Test (5-15k EUR), Apple-Developer-Program (99 USD) etc. 6. **Reversibilität hoch** — wenn Cloud-Limits gesprengt werden, lässt sich später auf (B+) oder (D) wechseln. Maestro-yml-Flows sind portable. **Plan-Form:** - Anfang: **Free-Tier prüfen** (Maestro hat ein gratis Kontingent für kleine Teams — verifizieren beim Account-Anlegen). Wenn Free-Tier ausreicht für unsere ~10 Runs/Monat, kostet's 0. - Wenn Free-Tier nicht reicht: Starter-Plan (~10 EUR/Monat laut Ahmed-Quote). - Maestro-CLI lokal für Dev-Iteration, Cloud für CI-Gate auf `main`. ### Plan B: **GitHub Actions Matrix (Variante D)** Wenn Maestro Cloud aus irgendeinem Grund nicht passt (z.B. EU-Datenschutz-Bedenken weil Test-Recordings auf US-Servern liegen, oder Pricing-Änderung): - GitHub-Actions-Matrix mit `macos-latest` für iOS und `ubuntu-latest` + `reactivecircus/android-emulator-runner` für Android. - Test-Runs nur auf `main`-Push und `workflow_dispatch`, nicht auf jedem PR → hält macOS-Minutes-Verbrauch klein. - Aufwand: 2-3 h Setup, ~30 Min/Monat Wartung, ~100 EUR/Jahr. ### Anti-Empfehlung: **Self-Host auf Hetzner (B oder B+)** Würde ich nur empfehlen wenn: - DSGVO/DiGA-Audit verlangt explizit, dass Test-Pipelines auf EU-eigener Infrastruktur laufen (unwahrscheinlich, weil Test-Recordings keine Produktiv-User-Daten enthalten). - Wir mehr als ~50 Test-Runs/Tag haben (sind wir nicht). - Wir bereits dedicated CI-Infrastruktur betreiben (haben wir nicht — der rebreak-server ist Production). In allen anderen Fällen ist Self-Host für unsere Größe **Over-Engineering** und kollidiert mit der Hetzner-Konsolidierungs-Linie aus den letzten Backyard-Sessions. --- ## 6. Setup-Estimate für die Empfehlung (Pfad A) | Schritt | Owner | Aufwand | |---------|-------|---------| | Maestro-Cloud-Account anlegen + Free-Tier-Limits checken | User | 15 Min | | `MAESTRO_CLOUD_API_KEY` GitHub-Secret hinterlegen | User | 5 Min | | `.github/workflows/rebreak-test.yml` Job `maestro-cloud` schreiben (`maestro cloud --apiKey $MAESTRO_CLOUD_API_KEY .maestro/`) | Ahmed/Backyard | 30 Min | | Erster Test-Run gegen Staging-Build von TestFlight-IPA | Ahmed | 30 Min | | Smoke-Flow `auth/sign-in.yaml` entstehen lassen + via Cloud verifizieren | Ahmed | bereits in TESTING_STATE Roadmap (1 h) | | **Total bis erste grüne Cloud-Run** | | **~2 h** zusätzlich zur Maestro-Flow-Entwicklung selbst | Vergleich Self-Host: 4-8 h Setup + Wartungs-Last + zweiter Hetzner-Server. Cloud gewinnt deutlich. --- ## 7. Offene Punkte (User-Decision) 1. **Maestro-Cloud-Pricing-Verifikation:** „~10 EUR/Monat" ist Schätzung aus Ahmed's Notiz. User sollte beim Account-Anlegen den aktuellen Starter-Plan-Preis und das Free-Tier-Kontingent verifizieren. Backyard hat bewusst nicht selbst den Maestro-Pricing-Endpoint gefetcht (kein Web-Tool im Recon-Scope). 2. **Cloud-Datenschutz vs DSGVO:** Maestro-Cloud-Server-Region prüfen (US vs EU). Test-Flows enthalten keine echten User-Daten, sondern Test-Account-Daten — Risk niedrig, aber Hans-Müller (DSFA) sollte das im Datenfluss-Diagramm notieren. 3. **Wenn (D) als Plan B aktiv wird:** Run-Frequenz kapeln (max 1× pro PR auf main, nicht auf jedem Branch-Push), sonst eskalieren macOS-Minutes. --- ## 8. TL;DR für User - **Maestro Cloud Starter (~10 EUR/Monat, ggf. Free-Tier am Anfang) nehmen.** - iOS lässt sich nicht auf Linux testen — Self-Host auf Hetzner ist immer Hybrid und kostet mehr Stunden als es spart. - Unser CX23 ist schon nah an OOM bei Build-Peaks; Android-Emulator dazu wäre Production-Risk. - Plan B falls Cloud nicht passt: GitHub-Actions-Matrix mit macOS-runner für iOS, ubuntu-runner für Android. ~100 EUR/Jahr, kein eigener Server. - Setup für Pfad A: ~2 h gesamt bis zur ersten grünen Cloud-Run. Ende. — Backyard