doc: VM302 pyautogui persistent als mcp — ONLOGON+AutoLogon+Watchdog
This commit is contained in:
parent
0af2529fdd
commit
1f26a92d64
51
MCP-AUTOMATION-PERSISTENCE-VM302.md
Normal file
51
MCP-AUTOMATION-PERSISTENCE-VM302.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# VM302 — pyautogui-server persistent als user mcp (2026-07-19)
|
||||
|
||||
## Ziel
|
||||
`pyautogui-server` (Screen-Automation via HTTP) muss auf VM302 IMMER laufen — nach Reboot, Crash, Session-Ende. Läuft als user **mcp** in interaktiver Session (nicht matthias, nicht Session 0).
|
||||
|
||||
## Drei Bausteine
|
||||
|
||||
### 1. Scheduled Task `pyautogui-mcp` (der Server selbst)
|
||||
```cmd
|
||||
schtasks /Create /TN "pyautogui-mcp" ^
|
||||
/TR "D:\Python311\python.exe C:\Users\mcp\pyautogui-server-v2.py" ^
|
||||
/SC ONLOGON /RU mcp /RP "<pw>" /RL HIGHEST /IT /F
|
||||
```
|
||||
- **`/IT` ist essentiell** — sonst läuft der Prozess in Session 0 (services) und Screenshots kommen leer (21 Bytes) zurück
|
||||
- ONLOGON feuert jedes Mal wenn mcp sich anmeldet
|
||||
|
||||
### 2. AutoLogon für mcp (damit mcp nach Reboot automatisch angemeldet ist)
|
||||
Registry `HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`:
|
||||
- `AutoAdminLogon` = `"1"`
|
||||
- `DefaultUserName` = `"mcp"`
|
||||
- `DefaultPassword` = `"<pw>"` (String, Klartext)
|
||||
- `DefaultDomainName` = Hostname
|
||||
- `AutoLogonCount` = `0` (DWord, unbegrenzt)
|
||||
|
||||
**Sicherheits-Note:** Passwort Klartext in Registry. Mit Sysinternals `autologon.exe` als LSA-Secret ablegbar (später härten).
|
||||
|
||||
### 3. Watchdog `pyautogui-mcp-watchdog`
|
||||
```cmd
|
||||
schtasks /Create /TN "pyautogui-mcp-watchdog" ^
|
||||
/TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Users\mcp\pyautogui-watchdog.ps1" ^
|
||||
/SC MINUTE /MO 5 /RU SYSTEM /RL HIGHEST /F
|
||||
```
|
||||
Watchdog-Script prüft alle 5 Min `http://localhost:3336/health` (mit Bearer-Token), restartet die Task bei Fehler. Log: `C:\Users\mcp\pyautogui-watchdog.log`.
|
||||
|
||||
## Endpoint
|
||||
- Base URL lokal: `http://localhost:3336`
|
||||
- Via Tailscale: `http://100.104.5.57:3336`
|
||||
- Auth-Header: `Authorization: Bearer sk-pyautogui-vm302-e7f9a3b1c4d8e5f2a9b6c1d4e7f0a3b6`
|
||||
- Health-Response MUSS `"user":"mcp"` enthalten — sonst läuft's in falscher Session
|
||||
|
||||
## Endpoints
|
||||
- `GET /screenshot` — PNG raw
|
||||
- `POST /click` — {x, y}
|
||||
- `POST /type` — {text}
|
||||
- `POST /hotkey` — {keys: [...]}
|
||||
- `POST /goto` — {url}
|
||||
- `POST /batch` — [actions]
|
||||
- `GET /health`
|
||||
|
||||
## RDP Wrapper Kompatibilität
|
||||
Parallel-Sessions gehen: mcp (Console/AutoLogon Session 1) + matthias (RDP Session 2/3) gleichzeitig. RDP Wrapper ist installiert und funktioniert.
|
||||
Loading…
Reference in a new issue