# ARIA Satellit 🛰️ Ein eigenständiger **Außenposten-Container** für ein fremdes Netz (Büro, Werkstatt, Ferienwohnung …). Er verbindet sich als RVS-Client in Stefans Raum und gibt ARIA **Augen und Hände in genau diesem Netz** — ohne dass der Haupt-Stack dort stehen muss. - **Augen (Info):** entdeckt Geräte via **mDNS/Zeroconf** (Chromecast, AirPlay, Sonos, Drucker, NAS …), **SSDP/UPnP + DIAL** (Smart-TVs, Fire TV) und der **ARP-Tabelle** (rohe Hosts). Meldet ARIA ein Live-Inventar. - **Hände (Steuerung):** **DIAL-App-Launch** (z.B. YouTube-Video auf dem Fire TV), **Wake-on-LAN**, generisches **HTTP**. Nur wenn freigeschaltet (siehe Sicherheit). ## Deploy ```bash cd satellite cp .env.example .env # RVS-Zugang + SATELLITE_LOCATION eintragen docker compose up -d --build docker compose logs -f # "sat_hello gesendet" + "[scan] N Geraete" ``` `RVS_HOST/PORT/TLS/TOKEN` **identisch** zum Haupt-Stack (gleicher Raum, damit ARIA den Satelliten erreicht). `SATELLITE_LOCATION` ist der Name, über den ARIA das Netz anspricht („Büro"). > **`network_mode: host` ist Pflicht** (schon in der compose gesetzt): nur so sieht > der Container die mDNS/SSDP-Broadcasts und die Geräte-IPs des LAN. ## So nutzt ARIA es ARIA hat drei Brain-Tools: - `satellite_list` — welche Netze/Satelliten sind online + was können sie. - `satellite_devices(satellite)` — Inventar eines Netzes. - `satellite_command(satellite, device, action, params)` — Aktion ausführen. Beispiel „YouTube-Video auf dem Büro-Stick": ``` satellite_command(satellite="Büro", device="Fire TV", action="dial.launch", params={"app":"YouTube","v":""}) ``` ## Sicherheit Der Satellit scannt ein Netz **und** ist über einen Cloud-Relay erreichbar — deshalb: - Reagiert **nur** auf den eigenen RVS-Raum (Token). - **`CONTROL_ENABLED=false`** = reiner Info-Satellit (steuert nichts). Standard-sicher. - Bei `true`: nur Aktionen aus **`CONTROL_ALLOWLIST`**, alles andere wird abgelehnt. - Jede ausgeführte Aktion wird **geloggt**. - Keine offenen Ports — reiner Client. Empfehlung: in vertrauenswürdigen Netzen `CONTROL_ENABLED=true` mit enger Allowlist; sonst `false` und nur beobachten.