# Architektur ## Überblick ``` ┌─ Telefon (Stock-Android, unrooted) ────────────────────────────────┐ │ │ │ ┌────────────────────────┐ ┌────────────────────────────────┐ │ │ │ HPOS Bridge (APK) │ │ Termux (+:API, :X11, :Boot) │ │ │ │ ZUSTANDSLOS │ │ proot → Debian 13 Trixie │ │ │ │ · Default-SMS-App │◄──┤ Plasma Mobile (KWin nested) │ │ │ │ · Default-Dialer │ws │ PipeWire ← virt. Kamera │ │ │ │ · Kamera-Server │ │ plasma-dialer + spacebar │ │ │ │ · NFC-Reader, Sensoren│ │ hpos-daemon (Backup/Web-UI) │ │ │ │ · Installer + Updater │ │ appmanager (Intent-Handoff) │ │ │ └────────────────────────┘ └────────────────────────────────┘ │ │ localhost:8474 │ │ /sdcard/hpos-backup/ ← restic-Repo, überlebt Termux-Deinstall │ └──────────────────────────────┬─────────────────────────────────────┘ │ optional ┌──────────┴───────────────────────┐ │ Backup-Ziel außer Haus │ │ SFTP oder rest-server │ │ reines restic-Backend, kein Code │ └──────────────────────────────────┘ ``` Das Telefon ist vollständig eigenständig. Das externe Backup-Ziel ist die **einzige** optionale Außenanbindung — kein Dienst, von dem der Betrieb abhängt. ## Die zwei tragenden Regeln ### 1. Der Bridge-Layer ist zustandslos Die Android-Seite speichert keine Nutzdaten. SMS, Anrufliste, Kontakte, Fotos — alles wird sofort ins Linux durchgereicht und *nur dort* persistiert. Der Grund ist nicht Eleganz, sondern Notwendigkeit: App-private Daten auf Android sind ohne Root **nicht sicherbar**. Gäbe es zwei Orte, an denen Daten liegen, wäre das Backup strukturell unvollständig. Es gibt deshalb genau einen Ort. Praktische Folge: Die Android-Seite darf jederzeit plattgemacht werden, ohne dass ein Byte Nutzdaten verloren geht. Das ist zugleich der Abschlusstest des ganzen Projekts. ### 2. Keine Serverabhängigkeit Kein Produktbestandteil darf fremde Infrastruktur voraussetzen. Ein Projekt, das ein Rechenzentrum braucht, benutzt außer dem Autor niemand. ## Warum D-Bus-Shims statt eigener Anwendungen Der Linux-Teil der Bridge schreibt **keine** eigenen Anwendungen für Telefonie, SMS, Akku, Standort oder Sensoren. Stattdessen implementiert er die Standard-D-Bus-Schnittstellen, die der Linux-Desktop ohnehin erwartet: | Shim | Ersetzt | Damit läuft unverändert | |---|---|---| | ModemManager | echtes Modem | `plasma-dialer`, `spacebar` | | UPower | Akku-Subsystem | Akkuanzeige, Energieverwaltung | | GeoClue | GPS | Karten, Zeitzone, Wetter | | iio-sensor-proxy | Sensoren | Rotation, Helligkeitsautomatik | Das spart nicht nur Arbeit — es bedeutet auch, dass jede Verbesserung upstream geschenkt ankommt und dass ein Gerätewechsel nur die Bridge berührt, nie die Anwendungsschicht. ## Datenfluss: eingehende SMS ``` Mobilfunk → Android-Framework → Bridge-APK (Default-SMS-Rolle, persistiert NICHTS) → WebSocket 127.0.0.1:8474 → ModemManager-Shim → spacebar → Nachricht landet in der Linux-Datenbank → restic-Backup ``` ## Datenfluss: Navigation aus dem Adressbuch ``` KAddressBook → xdg-open "geo:0,0?q=" → hpos-open (Handler) → Bridge → startet Begleit-App (Overlay) → am start VIEW google.navigation:q= → Google Maps im Vollbild auf dem Host ``` Bewusst **kein Streaming**: volles GPU, volles GPS, kein Akkuverbrauch fürs Encodieren, und Overlay-Apps funktionieren wie vorgesehen. Zurück ins Linux über den Task-Manager. ## Speicherorte | Was | Wo | Warum | |---|---|---| | Debian-Rootfs, `$HOME`, alle Nutzdaten | `/data/data/com.termux/files/…` | Echtes ext4 mit Rechten und Symlinks. **Kein Image** — ein normaler Verzeichnisbaum | | restic-Repo | `/sdcard/hpos-backup/` | Überlebt eine Deinstallation von Termux, per USB/MTP erreichbar | | Zweitziel (optional) | SFTP / rest-server | Schützt gegen Verlust oder Diebstahl des Geräts | ⚠️ Das Rootfs liegt in Termux' App-privatem Verzeichnis. **Termux zu deinstallieren löscht alles.** Deshalb liegt das Backup zwingend außerhalb. ## Bekannte Grenzen Vollständig mit Belegen in [machbarkeit.md](machbarkeit.md), in Kürze: - **Anruf-Audio** bleibt auf dem Android-Pfad. Bedienung und Daten liegen im Linux, der Ton kommt aus derselben Hörmuschel wie immer. - **Daten von Host-Apps** sind nicht sicherbar. Deshalb gehören dort nur konto-gebundene Apps hin, bei denen "APK zurück plus anmelden" ein vollständiger Restore ist. - **Kontaktloses Bezahlen** bleibt Sache des Host-Android.