# MDM-Productization Roadmap **Stand:** 2026-05-10 (nach Phase F: persönliches Self-Binding für Chahine erfolgreich) ## Vision ReBreak bietet als optionales Add-On (3€/mo on top auf Pro/Legend) ein vollständiges MDM-Lock-Setup für motivierte Recovery-User. Voraussetzung: Mac + USB + Bereitschaft zum factory-reset. ## Ziel-Audience Schmaler aber motivierter Markt: - Recovery-Community-Members nach 100000 Verzweiflungen - DiGA-Patienten in aktiver Relapse-Prevention mit Therapie-Begleitung - Users die "alles andere probiert haben" und maximalen Lock wollen User-Insight (Chahine, 2026-05-10): "wenn keine nachfrage da ist haben wir nicht viel verloren — server steht eh." ## Was schon steht (Phase F done) - NanoMDM-Server auf rebreak-mdm (178.105.101.137) - Apple-Push-Cert via mdmcert.download - AdGuard Home DoH @ dns.rebreak.org mit ReBreak-Blocklist - DNS-MDM-Profile non-removable (supervised-only) - Backend-Endpoint `/api/url-filter/blocklist.txt` als single source of truth ## Productization-Phase G (~1-2 Wochen dev) ### G.1 Enrollment-Profile-Generator Backend-Endpoint `POST /api/mdm/enroll-profile` (Pro/Legend gated): - Generiert per-user device-identity-cert (signed by NanoMDM CA) - Wrapped als PKCS12 - Build .mobileconfig mit MDM-payload pointing zu `https://mdm.rebreak.org/mdm` - DNS-payload pointing zu `https://dns.rebreak.org/dns-query` - Returns als download Heute manuell gemacht in `/opt/nanomdm/enrollment/` — automatisieren. ### G.2 User-Device-Link in DB NanoMDM speichert devices in eigener DB (table `devices`). Brauchen mapping zu rebreak users: - Neue table `rebreak.mdm_enrollments(user_id, device_id, enrolled_at, status)` - Backend-API: `GET /api/mdm/my-status` returns enrollment-status für UI ### G.3 Lyra-Onboarding-Flow In-App "Stärkster Schutz" Button (Pro/Legend): 1. Lyra-conversation: "Bist du sicher? Bedeutet factory-reset deines iPhones..." 2. Risiko-Aufklärung: Apps + lokale Daten (außer iCloud-Backup) verloren 3. **7-Tage-Cooldown** wie andere Schutze — User muss 7 Tage drüber schlafen 4. Nach Cooldown: Step-by-step Anleitung 5. Web-link öffnet `mdm.rebreak.org/onboarding/` 6. Apple Configurator Wizard (Markdown-formatted instructions + screenshots) 7. Profile-Download 8. Wenn enrolled: NanoMDM pushed DNS-Profile + Restriction-Profile automatisch ### G.4 Onboarding-Web-Page Static page (Nuxt marketing app) `mdm.rebreak.org/onboarding/`: - Step-1: Mac-requirement check - Step-2: Apple Configurator install (App Store link) - Step-3: factory-reset Anleitung (Settings-Pfad screenshot) - Step-4: USB-connect + Configurator-Prepare-wizard (mit Screenshots) - Step-5: .mobileconfig download + install via Apple Configurator - Step-6: Bestätigung dass enrollment erfolgreich (backend-callback) ### G.5 Stripe-Add-On-Tier - Pro: 3.99€ → mit MDM 6.99€ - Legend: 7.99€ → mit MDM 10.99€ - Stripe-Subscription-Modification API ### G.6 Per-User-Blocklist (later) Aktuell: AdGuard pulled GLOBAL `getActiveBlocklistDomains()`. Phase G.6: extend zu user-specific (custom-domains pro User). Optionen: - AdGuard-multi-DNS-server (1 pro User) — overkill - Custom DoH-server der per-Token user-spezifische blocklist serviert - Nicht-Priority — global blocklist ist 99% der Use-Cases ## Out-of-Scope (Apple-Hard-Limits) - **Windows-User-Support**: Apple Configurator nur auf macOS. Windows-Pfad bräuchte custom Apple-Configurator-clone = monate dev. Skip. - **DEP/ABM-Enrollment**: Wäre "ohne factory-reset enrollable", aber braucht DUNS + Apple-Business-Manager-Approval + nur Neu-Geräte via Reseller. Out of scope für consumer. - **Per-App-Family-Controls-Toggle-Lock**: Apple-Platform-Limit (siehe Research Mai 2026). DNS-Layer kompensiert. ## Marginal Cost pro neuem User - 1 row in nanomdm.devices: ~1KB - APNS-connection: shared-pool, kosten gegen 0 - DoH-queries: paar 100 pro Tag pro User → AdGuard handhabt easy - Storage/Bandwidth: vernachlässigbar - **Effektiv: ~0€/mo pro MDM-User** Bei 3€/mo Add-On = ~95% Marge. ## Risk-Assessment - Apple könnte mdmcert.download-shared-key revoken (wenn auffällig viele Personal-MDM-Users) → fallback DNS funktioniert weiter, MDM-Push-commands brechen. Mitigation: eigener mdmcert-Account-Apply (kostenlos) - Support-burden: jeder MDM-User wird ggf. Hilfe beim Setup brauchen. Initial-Beta: max 10-20 User, manueller Support, Lyra-led - Liability: User locked sich aus → Recovery-Pfad via Lyra + Chahine-Manual-Override (admin-API). Cooldown verhindert impulsive enrollment. ## Decision-Points (User entscheidet) - [ ] Phase G bauen oder warten bis 5+ User explizit nachfragen? - [ ] Beta-Launch: stille Mail an existierende Legend-Users oder offen? - [ ] Preisbestätigung: 3€ Add-On bestätigt oder 5-9€ wie Strategist eher empfehlen würde? Strategist hat Pricing-Analysis pending (Task #58) — abwarten bevor finale Preis-Entscheidung. ## Source-of-Truth-Files - Personal-Setup-Doku: `ops/mdm/PHASES.md` (Phase A-F) - Architektur: `ops/mdm/ARCHITECTURE.md` - Pricing-Strategy (pending): output von Strategist Task #58