managarten/docs/WINDOWS_GPU_SERVER_SETUP.md
Till JS 3631cc7707 docs: add Windows GPU server to project documentation
- Add mana-server-gpu (RTX 3090, 24GB VRAM) to CLAUDE.md server section
- Add SSH config for mana-gpu alias
- Fix WINDOWS_GPU_SERVER_SETUP.md: correct network values, admin SSH key
  setup with SID-based permissions (language-independent)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:04:08 +01:00

231 lines
5.7 KiB
Markdown

# Windows GPU-Server: Lokale Einrichtung
Diese Anleitung wird **am Windows-PC selbst** durchgeführt.
Ziel: SSH + Grundkonfiguration, damit der Rechner remote steuerbar ist.
Danach kann alles Weitere (Ollama, AI-Services, Cloudflare Tunnel) per SSH erledigt werden.
---
## Schritt 1: Computername setzen
PowerShell **als Administrator** öffnen (Rechtsklick → Als Administrator ausführen):
```powershell
Rename-Computer -NewName "mana-server-gpu"
```
Noch **nicht** neu starten — erst alle Schritte durchgehen.
---
## Schritt 2: SSH-Server aktivieren
Gleiche Admin-PowerShell:
```powershell
# SSH-Server installieren
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# SSH-Server starten
Start-Service sshd
# Automatisch bei jedem Start
Set-Service -Name sshd -StartupType Automatic
# Standard-Shell auf PowerShell setzen (statt cmd)
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
```
---
## Schritt 3: Statische IP vergeben
1. **Einstellungen****Netzwerk und Internet****Ethernet**
2. Bei der aktiven Verbindung auf **Bearbeiten** klicken (bei IP-Zuweisung)
3. Auf **Manuell** umstellen, **IPv4** aktivieren:
```
IP-Adresse: 192.168.178.11
Subnetzmaske: 255.255.255.0
Gateway: 192.168.178.1
Bevorzugter DNS: 192.168.178.1
Alternativer DNS: 1.1.1.1
```
> Mac Mini ist auf `192.168.178.131`, Gateway ist `192.168.178.1`.
---
## Schritt 4: Firewall-Ports öffnen
Gleiche Admin-PowerShell:
```powershell
# SSH (sollte schon offen sein, sicherheitshalber)
New-NetFirewallRule -DisplayName "SSH" -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow
# Ollama
New-NetFirewallRule -DisplayName "Ollama" -Direction Inbound -LocalPort 11434 -Protocol TCP -Action Allow
# AI-Services
New-NetFirewallRule -DisplayName "Mana-STT" -Direction Inbound -LocalPort 3020 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "Mana-TTS" -Direction Inbound -LocalPort 3022 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "Mana-Image-Gen" -Direction Inbound -LocalPort 3023 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "Mana-LLM" -Direction Inbound -LocalPort 3025 -Protocol TCP -Action Allow
```
---
## Schritt 5: NVIDIA-Treiber prüfen
```powershell
nvidia-smi
```
Falls der Befehl nicht gefunden wird oder der Treiber alt ist (< 535.x):
1. https://www.nvidia.com/Download/index.aspx neusten Treiber für deine GPU laden
2. Installieren, neu starten
Falls `nvidia-smi` funktioniert Treiberversion und GPU-Name notieren.
---
## Schritt 6: Python 3.11 installieren
```powershell
winget install Python.Python.3.11
```
Falls `winget` nicht verfügbar: https://www.python.org/downloads/ 3.11.x
> **Wichtig:** Bei der Installation "Add Python to PATH" ankreuzen!
Prüfen:
```powershell
python --version
```
---
## Schritt 7: Git installieren
```powershell
winget install Git.Git
```
Prüfen (neue PowerShell öffnen):
```powershell
git --version
```
---
## Schritt 8: Arbeitsverzeichnis anlegen
```powershell
mkdir C:\mana
mkdir C:\mana\services
mkdir C:\mana\venvs
mkdir C:\mana\models
```
---
## Schritt 9: Neustart
```powershell
Restart-Computer
```
---
## Schritt 10: SSH-Key einrichten (passwortloser Zugriff)
Auf dem **Windows-PC** in PowerShell **als Administrator** ausführen:
```powershell
# Für Admin-User muss der Key in die systemweite Datei:
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAmtp92RmE6lPhHRg24VSYIvq9ne4+qe61SiR4c+lPWu claude-code@manacore" | Out-File -Encoding utf8 -FilePath C:\ProgramData\ssh\administrators_authorized_keys
# Berechtigungen setzen (Windows erfordert das für SSH)
# Vererbung entfernen
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r
# Berechtigungen setzen (NT AUTHORITY\SYSTEM funktioniert auf allen Sprachen)
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant "NT AUTHORITY\SYSTEM:(R)"
# Admin-Gruppe: Name hängt von der Systemsprache ab, SID ist immer gleich
$adminGroup = (New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")).Translate([System.Security.Principal.NTAccount]).Value
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant "${adminGroup}:(R)"
```
> **Warum nicht `~/.ssh/authorized_keys`?** Windows OpenSSH ignoriert diese Datei für Benutzer in der Administratoren-Gruppe. Stattdessen wird `C:\ProgramData\ssh\administrators_authorized_keys` gelesen.
---
## Schritt 11: SSH testen
**Vom Mac (dev-Rechner)** aus testen:
```bash
ssh tills@192.168.178.11
```
Beim ersten Mal Fingerprint bestätigen mit `yes`.
Falls erfolgreich, sollte eine PowerShell-Sitzung starten.
### Zusätzlich testen:
```bash
# GPU erreichbar?
ssh tills@192.168.178.11 "nvidia-smi"
# Python da?
ssh tills@192.168.178.11 "python --version"
```
---
## Ergebnis
Nach diesen Schritten hat der Windows-PC:
- [x] Fester Computername (`mana-server-gpu`)
- [x] SSH-Server (Port 22, Autostart)
- [x] Statische IP im LAN
- [x] Firewall-Ports offen für alle AI-Services
- [x] NVIDIA-Treiber mit CUDA-Support
- [x] Python 3.11
- [x] Git
- [x] Arbeitsverzeichnis `C:\mana\`
**Alles Weitere (Ollama, AI-Services, Cloudflare Tunnel) wird dann per SSH gemacht.**
---
## Fehlerbehebung
### SSH verbindet nicht
```powershell
# Auf dem Windows-PC prüfen:
Get-Service sshd # Muss "Running" zeigen
Test-NetConnection -ComputerName localhost -Port 22 # Muss "TcpTestSucceeded: True" zeigen
```
### nvidia-smi zeigt Fehler
- Treiber neu installieren
- PC neu starten
- Prüfen ob die GPU im Geräte-Manager sichtbar ist
### IP-Adresse stimmt nicht
```powershell
ipconfig
# → Ethernet-Adapter prüfen, IPv4-Adresse muss die statische sein
```