mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 23:21:08 +02:00
- 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>
231 lines
5.7 KiB
Markdown
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
|
|
```
|