feat(satellite): APK-Rollout per ADB — Fire TV & Android aus der Ferne bespielen

Der Satellit kann Android-Geraete im LAN erkennen und die Agent-APK ausrollen,
statt sie von Hand aufs Geraet zu kopieren.

- satellite.py: adb.devices/connect/install/shell. _apk_fetch laedt die APK per
  HTTP (gecached in /data/apk, sha256 optional) statt sie durchs RVS zu schicken —
  der RVS ist ein BROADCAST-Relay (jede base64-APK ginge an alle Clients, und das
  Satelliten-max_size liegt bei 8 MB). adb.install ist selbstheilend (connect ->
  install -r) und uebersetzt die typischen Fehler in klare Ansagen (unauthorized,
  Signatur-Mismatch, Speicher voll). Imports lokal in den Funktionen (Hausmuster).
- Discovery: mDNS-Typen _amzn-wplay/_adb-tls-connect/_androidtvremote2, _mdns_kind
  -> firetv/android-adb/androidtv, plus _enrich_adb (TCP-Probe 5555) -> adbCapable.
- Dockerfile: adb; compose: HOME=/data (ADB-Key persistent, sonst fragt das Geraet
  nach jedem Rebuild neu) + ANDROID_ADB_SERVER_PORT=5038 (Host-Kollision).
- .env.example: neue Aktionen + Warnung, dass die Allowlist den Code-Default
  ueberschreibt (sonst lehnt ein bestehender Satellit adb.* ab).
- Brain: adb.* in der satellite_command-Beschreibung; WICHTIG Timeout 200s fuer
  adb.*/ssh.exec — der Bridge-Default von 20s haette jede Installation abgewuergt.
- Diagnostic: sat_command (Browser->RVS) und sat_result (RVS->Browser) gab es
  bisher GAR NICHT; beide ergaenzt. 📦-Button je ADB-faehigem Geraet + Rollout-
  Modal mit Status/Log, ADB-Tag in der Geraeteliste.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-29 19:17:53 +02:00
co-authored by Claude Opus 4.8
parent e15f7a5bc0
commit 47735642f2
7 changed files with 401 additions and 7 deletions
+6
View File
@@ -21,6 +21,12 @@ services:
network_mode: host
env_file: .env
restart: unless-stopped
environment:
# ADB-Schluessel in /data persistieren: sonst erzeugt adb nach jedem
# Rebuild einen NEUEN Schluessel und das Fire TV fragt erneut
# "USB-Debugging zulassen?" (Autorisierung geht verloren).
- HOME=/data
- ANDROID_ADB_SERVER_PORT=5038 # 5037 kann auf dem Host belegt sein
volumes:
# Persistenter Credential-Store (verschluesselt) + Schluesseldatei.
- ./data:/data