# ─── ARIA Satellit — Konfiguration ────────────────────────────────── # Kopiere diese Datei nach .env und passe sie an. # RVS-Zugang (identisch zum Haupt-Stack — gleicher Raum/Token, damit ARIA # diesen Satelliten erreicht). Werte aus der Haupt-.env / vom generate-token.sh. RVS_HOST=rvs.example.de RVS_PORT=443 RVS_TLS=true RVS_TLS_FALLBACK=true # bei TLS-Fehlschlag einmal auf ws:// zurueckfallen RVS_TOKEN= # RVS_SNI: nur noetig, wenn RVS_HOST eine IP ist (Satellit im selben Netz wie der # RVS, direkt auf die interne IP). Dann hier den Zertifikats-/Hostnamen angeben, # damit der TLS-Handshake (SNI) passt. Sonst leer lassen. # RVS_HOST=10.0.0.2 # RVS_SNI=example.com RVS_SNI= # ─── Identitaet / Adresse dieses Satelliten ──────────────────────── # SATELLITE_ID = technisch eindeutig (a-z0-9-_), Default = Hostname-Slug. # SATELLITE_LOCATION = menschlicher Name, so spricht ARIA das Netz an ("Buero"). # Mehrere Satelliten koennen im selben RVS-Raum haengen — die Location # unterscheidet sie ("Buero", "Zuhause", "Werkstatt"). SATELLITE_ID=buero SATELLITE_LOCATION=Büro # ─── Steuerung (Sicherheit!) ─────────────────────────────────────── # CONTROL_ENABLED=false → reiner Info-/Beobachtungs-Satellit (entdeckt & meldet # nur, steuert nichts). Sicherste Basis. # CONTROL_ENABLED=true → darf Geraete steuern (nur Aktionen aus der Allowlist). CONTROL_ENABLED=true # Erlaubte Steuer-Aktionen (kommagetrennt). Alles andere wird abgelehnt. # dial.launch App-Launch via DIAL (z.B. YouTube-Video auf Fire TV / Smart-TV) # wol Wake-on-LAN (Geraet per MAC aufwecken) # http.get generischer HTTP-GET (z.B. lokale IoT-Webhooks, Statusseiten) # http.post generischer HTTP-POST # snmp.get einzelner SNMP-Wert (params: ip, oid) # snmp.walk SNMP-Teilbaum (params: ip, oid) # snmp.printer Drucker-Fuellstaende (Tinte/Toner) aus der Printer-MIB (params: ip) # snmp.ports Switch/Router-Interfaces: aktive/freie Ports (params: ip) # snmp.info Modell/Seriennummer/Firmware-Version (params: ip) # fritzbox.info FritzBox: Verbindung/Datenrate/externe IP (TR-064, braucht Login) # fritzbox.hosts FritzBox: verbundene Geraete (TR-064, braucht Login) # ssh.exec Kommando per SSH ausfuehren (params: ip, cmd; Auth aus Creds 'ssh') # adb.install APK auf ein Android-Geraet/Fire TV ausrollen (params: ip, url) # adb.connect ADB-Verbindung aufbauen (params: ip) # adb.devices verbundene ADB-Geraete auflisten # adb.shell Shell-Kommando auf dem Android-Geraet (params: ip, cmd) # adb.provision Agent FERN einrichten: RVS-Zugang uebergeben, statt ihn mit der # Fernbedienung abzutippen (params: ip, rvs_host, rvs_token, ...) # adb.status laeuft/installiert der Agent auf dem Geraet? (params: ip) # adb.permissions Sonderrechte per ADB erteilen (Bildschirmaufnahme/Overlay/ # Mikro) — spart das Zusammenklicken mit der Fernbedienung # ACHTUNG: Diese Liste ueberschreibt den Code-Default. Wird eine neue Aktion # ergaenzt, MUSS sie hier nachgetragen werden — sonst lehnt der Satellit sie ab. CONTROL_ALLOWLIST=dial.launch,wol,http.get,snmp.get,snmp.walk,snmp.printer,snmp.ports,snmp.info,fritzbox.info,fritzbox.hosts,ssh.exec,adb.devices,adb.connect,adb.install,adb.shell,adb.provision,adb.status,adb.permissions # ─── ADB / Android-Rollout (optional) ────────────────────────────── # Fire TV Sticks & Android-Geraete im LAN: APK ausrollen ohne Datei-Kopieren. # Voraussetzung am Geraet: ADB-Debugging AN (Fire TV: Einstellungen > Mein Fire TV # > Entwickleroptionen > ADB-Debugging) und den Dialog "USB-Debugging zulassen?" # einmalig bestaetigen (Haken "Immer erlauben"). ADB_PORT=5555 ADB_TIMEOUT_SEC=180 # install dauert 30-60s, grosszuegig lassen APK_CACHE_DIR=/data/apk # heruntergeladene APKs (1x laden, N Geraete) # ─── Credential-Store (optional) ─────────────────────────────────── # Pro Geraet koennen im Diagnostic Zugangsdaten hinterlegt werden (SNMP-Community/ # v3, HTTP-Basic, FritzBox-Login). Der Satellit speichert sie VERSCHLUESSELT im # Bind-Volume ./data. Der Schluessel wird beim ersten Start automatisch erzeugt # (./data/creds.key) — oder hier fest vorgeben (Fernet-Key, base64): # CREDS_KEY= # ─── SNMP (optional) ─────────────────────────────────────────────── # Defaults fuer die snmp.*-Aktionen; pro Request per params ueberschreibbar. SNMP_COMMUNITY=public # Drucker/Switches antworten meist auf 'public' SNMP_VERSION=2c # 1 | 2c SNMP_TIMEOUT_SEC=5 # Discovery-Anreicherung: jedes entdeckte Geraet wird beim Scan kurz per SNMP # nach Name/Beschreibung/Standort/Uptime gefragt (Switches, Router, APs, NAS ...). SNMP_DISCOVERY=true SNMP_DISCOVERY_CONCURRENCY=16 # parallele SNMP-Abfragen pro Scan SNMP_DISCOVERY_TIMEOUT=2 # Timeout je Geraet (s) — Nicht-SNMP-Hosts fallen schnell raus # ─── HTTP (optional) ─────────────────────────────────────────────── HTTP_TIMEOUT_SEC=10 # Timeout fuer http.get/http.post HTTP_MAX_CHARS=20000 # Default-Body-Ausschnitt (offset/max_chars pro Request) # ─── Discovery-Tuning (optional) ─────────────────────────────────── SCAN_INTERVAL_SEC=300 # Hintergrund-Rescan-Intervall DISCOVER_TIMEOUT_SEC=6 # Dauer eines Sweeps (mDNS + SSDP) DEVICE_CACHE_TTL_SEC=120 # wie lange ein Inventar als "frisch" gilt # ── Port-Tunnel ────────────────────────────────────────────────────── # ARIA erreicht ueber den Satelliten einen beliebigen Port im LAN — z.B. ein # FreeCAD-MCP auf einem Rechner oder eine Web-App, die nur hier lauscht. Die # Bridge macht daraus einen lokalen Port (aria-bridge:19000...). # # DEFAULT AUS: das ist ein Weg in dein Netz, den schaltet man bewusst ein. # Soll der Rechner, auf dem der Satellit laeuft, SELBST in der Geraeteliste # auftauchen? Er wird per mDNS/ARP nicht gefunden (man findet sich nicht # selbst), ist aber oft der interessanteste Host — dort laufen typischerweise # weitere Dienste (FreeCAD-MCP, Web-App, Dateiserver). Er erscheint dann als # normales Geraet, zusaetzlich mit 🛰️ gekennzeichnet, und laesst sich genauso # ansprechen. Nebeneffekt: er gilt damit als "gefunden" und ist ohne Eintrag in # TUNNEL_ALLOW tunnelbar. LIST_SELF=true TUNNEL_ENABLED=false # Welche Ziele sind erlaubt? LEER = nur Geraete, die der Satellit bei der Suche # auch wirklich gefunden hat (dann aber jeder Port). Damit kann der Tunnel # nichts ansteuern, was nicht ohnehin im LAN sichtbar ist — insbesondere nichts # im Internet. Sonst Liste aus host oder host:port, * als Platzhalter: # TUNNEL_ALLOW=192.168.1.50:8080,192.168.1.60,*:5000 TUNNEL_ALLOW= TUNNEL_MAX=8 # gleichzeitig offene Verbindungen TUNNEL_IDLE_SEC=900 # ungenutzte Tunnel nach 15 min schliessen # Geraete-Namen ("duffy-desktop" statt 192.168.1.47). Schluessel ist die MAC, # damit ein IP-Wechsel per DHCP den Namen nicht verliert. DEVICE_NAMES_PATH=/data/device_names.json