# Lokales noahROBOT-Netzwerk

## Primärer Wartungs- und Einrichtungsweg ab r17

Einrichtung, Updates, Erweiterungen und normale Tests erfolgen über das
gemeinsame private Schul-WLAN. Aktuell:

- Mini-PC: `10.1.0.136`
- Hostname: `noah-robot.local`
- Mac und Samsung: dasselbe Schul-WLAN
- Smartphone-Einrichtung: `NOAH-ROBOT HANDY EINRICHTEN.cmd`

Das eigenständige `NOAH-ROBOT` bleibt parallel vorbereitet, damit der Roboter
später auch ohne Schulnetz lokal betrieben werden kann. Es ist nicht mehr
Voraussetzung für Wartung oder Smartphone-Kopplung.

## Verbindliche Hauptarchitektur

Der mobile Offline-Betrieb verwendet das eigenständige WLAN `NOAH-ROBOT`.
Schul-, Heim- oder öffentliches WLAN sowie Internet sind dafür nicht
erforderlich. Das vorhandene Schul-WLAN ist der primäre Wartungs- und
Einrichtungsweg und wird nicht in das Roboternetz weitergeleitet.

```text
PELADN / 192.168.137.1
  ├─ NOAH-ROBOT WLAN
  ├─ HTTPS/PWA :443
  ├─ mDNS :5353
  └─ Gateway nur 127.0.0.1:8765
       ├─ Smartphone: head
       └─ MacBook/iPad: controller
```

## Verwendete Windows-Technik

Der Realtek-8852BE-Treiber meldet zwei Microsoft-Wi-Fi-Direct-Adapter. Windows
11 Build 26100 kann sowohl Mobile Hotspot als auch die moderne
Wi-Fi-Direct-Legacy-AP-API verwenden. Für noahROBOT wird bewusst
`Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher` mit
`IsAutonomousGroupOwnerEnabled=true` gewählt.

Diese von Microsoft unterstützte Desktop-API:

- ersetzt das veraltete `netsh wlan hostednetwork`,
- stellt ein normales SSID/Passwort-WLAN für Android, macOS und iPadOS bereit,
- erlaubt lokale TCP/UDP-Kommunikation,
- besitzt ausdrücklich keine Cross-Connectivity zum Internet,
- kann im Dienstkontext initialisiert werden,
- wird für den sichtbaren Schulbetrieb jedoch in der angemeldeten
  Windows-Sitzung veröffentlicht.

Der Dienstmodus meldete intern `Started` und stellte `192.168.137.1` bereit,
das SSID war beim ersten externen Versuch aber nicht sichtbar. Deshalb verwendet
der Schulstart den geplanten Task `noahROBOT Robot Network Interactive` mit
`LogonType=Interactive`. Der Windows-Dienst bleibt nur als kontrollierter
Fallback erhalten und läuft in diesem Modus nicht parallel.

Windows Mobile Hotspot und Internet Connection Sharing bleiben aus. Sie dürfen
nicht gleichzeitig mit dem Wi-Fi-Direct-Legacy-AP aktiviert werden.

## Adressen und Namensauflösung

- SSID: `NOAH-ROBOT`
- Mini-PC: `192.168.137.1/24`
- Clientnetz: `192.168.137.0/24`
- bevorzugt: `https://noah-robot.local/robot/`
- stabiler Android-Fallback: `https://192.168.137.1/robot/`

Caddy führt den Hostnamen und die Roboternetz-IP als lokale HTTPS-Ziele. Das
öffentliche Root-Zertifikat darf auf Endgeräte kopiert werden; der private
CA-Schlüssel bleibt auf dem Mini-PC. mDNS kündigt `noah-robot.local` auf allen
aktiven privaten IPv4-Schnittstellen an.

## Kennwortschutz

Das WLAN-Kennwort wird auf dem Zielrechner zufällig erzeugt, mit Windows DPAPI
für `LocalMachine` geschützt und unter restriktiven SYSTEM-/Administratoren-ACLs
gespeichert. Es steht nicht in Repository, Release, Log oder Diagnoseexport.

Nur lokal am Mini-PC zeigt der Administratorstarter
`NOAH-ROBOT WLAN-KENNWORT.cmd` das Kennwort an. Die Anzeige verweigert
SSH-Sitzungen und nichtinteraktive Aufrufe.

Für den Vor-Ort-Start ist keine Kennworteingabe erforderlich: Der lokale
Schulstart zeigt drei QR-Codes für WLAN, öffentliche Root-CA und die fünf
Minuten gültige Head-Kopplung.

## Firewall und Netztrennung

Für `192.168.137.1` werden ausschließlich scoped Regeln angelegt:

- TCP 443 aus `192.168.137.0/24`
- UDP 5353 aus `192.168.137.0/24`
- TCP 22 nur zeitlich begrenzt während Recovery und Abnahme
- explizite Blocks für SMB/RPC sowie RDP/WinRM aus dem Roboternetz

Gateway 8765 bleibt Loopback. IP-Forwarding auf dem Wi-Fi-Direct-Adapter ist
deaktiviert. Alle tatsächlichen Windows-ICS-`SharingEnabled`-Flags und Mobile
Hotspot müssen aus sein. Der Windows-Dienst `SharedAccess` darf ausschließlich
für die lokale DHCP-/Adressinfrastruktur laufen; sein Dienststatus allein
bedeutet keine Internetfreigabe. Es gibt kein NAT, UPnP, Port-Forwarding,
Cloud-Tunnel oder Internet-Relay.

## Aktivierung und Recovery

```powershell
.\scripts\windows\robot-network-prepare.ps1
.\scripts\windows\robot-network-prepare.ps1 -Apply
.\scripts\windows\robot-network-activate.ps1
.\scripts\windows\robot-network-activate.ps1 -Apply
```

`prepare` erzeugt Backup und DPAPI-Secret, startet aber kein WLAN. `activate`
legt vor dem Start eine einmalige Recovery-Aufgabe an. Wird die Abnahme nicht
rechtzeitig festgeschrieben, stoppt `robot-network-recover.ps1` das Netz,
entfernt die scoped Regeln und lässt vorhandene WLAN-Profile unverändert.

Erst nach Smartphone-, Mac-, Reconnect-, Neustart- und Offline-Abnahme:

```powershell
.\scripts\windows\robot-network-commit.ps1 -Apply
```

Manueller Rückfall:

```powershell
.\scripts\windows\robot-network-recover.ps1 -Apply
```

## Vor-Ort-Schulstart

Auf dem Windows-Desktop:

```text
NOAH-ROBOT SCHULSTART.cmd
NOAH-ROBOT WLAN-DIAGNOSE.cmd
NOAH-ROBOT KURZANLEITUNG.html
```

`SCHULSTART` startet die interaktive WLAN-Werbung, prüft deaktiviertes
IP-Forwarding und fehlende ICS-Freigaben, startet den ausschließlich lokal
erreichbaren CA-Download und öffnet die drei QR-Codes. `WLAN-DIAGNOSE` kann den
Hostzustand prüfen; die tatsächliche SSID-Sichtbarkeit muss immer durch ein
zweites Gerät bestätigt werden.
