diff --git a/docs/GNAI-006-SEC_VPN.md b/docs/GNAI-006-SEC_VPN.md
index 2f1ec88..91a83cd 100644
--- a/docs/GNAI-006-SEC_VPN.md
+++ b/docs/GNAI-006-SEC_VPN.md
@@ -4,12 +4,16 @@
**Titel:** Homelab / Infrastructure – WireGuard VPN Gateway (LXC) Setup & Access Control
-**Version:** 1.3
+**Version:** 1.4
-**Status:** In Umsetzung (Schritt 1–4 & 7 fertig, Step 5/6/9 offen)
+**Status:** In Umsetzung (Schritt 1–7 fertig, Step 5/6 ✅ User, Step 8/9 offen)
**Vorgänger / Referenzen:** GNAI-003-INFRA, GNAI-004-SEC
+**Client-Dokus (Benutzeranleitung):**
+* [GNAI-006-SEC_VPN_Clients_Linux.md](GNAI-006-SEC_VPN_Clients_Linux.md) – Linux (KDE Plasma, z. B. CachyOS)
+* [GNAI-006-SEC_VPN_Clients_Windows11.md](GNAI-006-SEC_VPN_Clients_Windows11.md) – Windows 11
+
**Änderungsvorschlag Draft:** Hostname, Testmatrix und PASSWORD_HASH-Format gemäß Umsetzung korrigiert (siehe Changelog)
---
@@ -275,3 +279,4 @@ Details & Entscheidungen: siehe `GNAI-006-SEC_VPN_Implementation-Log.md`.
| 1.1 | 2026-09-09 | Umsetzung dokumentiert: Hostname `wireguard` (nicht `wireguard-gateway`); Testmatrix auf „Ausstehend“ (keine Tests über Mobilfunk gelaufen); `PASSWORD_HASH` = bcrypt (wg-easy/bcryptjs), nicht Argon2; Quadlet mit `EnvironmentFile=`; nftables-Konfig & ip_forward dokumentiert; wg-easy-allowedIPs-Limitation vermerkt; Umsetzungszustand-Tabellen & Implementation-Log ergänzt |
| 1.2 | 2026-09-09 | Split-Tunneling konkretisiert: clientseitige AllowedIPs kommen aus Env-Variable `WG_ALLOWED_IPS` (Default `0.0.0.0/0` = Full-Tunnel!); `WG_ALLOWED_IPS` in `/opt/wg-easy/environment` gesetzt, Container neu gestartet, Env im Container verifiziert; Android-/24-Limitierung dokumentiert (nur `/32`-Einträge); Schritt 8 in „Konfig gesetzt / End-to-End offen“ zerlegt; `WG_PERSISTENT_KEEPALIVE`-Hinweis ergänzt |
| 1.3 | 2026-09-09 | DNS-Korrektur: A-Record gehört beim **Domain-DNS-Anbieter** (nicht NPM/selfhost.eu-Portal – NPM ist nur HTTP-Proxy); Fritzbox-Portforward ✅ erledigt; WAN-IP `93.208.161.126` per `getent` verifiziert; Statisch/DynDNS-Check als offen vermerkt |
+| 1.4 | 2026-09-09 | DNS ✅ (Wildcard-DynDNS war bereits ausreichend; Redundanz-A-Record harmlos, Auflösung verifiziert); **zwei Client-Einrichtungsdocs** ergänzt (Linux/KDE, Windows 11) und im Header referenziert |
diff --git a/docs/GNAI-006-SEC_VPN_Clients_Linux.md b/docs/GNAI-006-SEC_VPN_Clients_Linux.md
new file mode 100644
index 0000000..cb1abe0
--- /dev/null
+++ b/docs/GNAI-006-SEC_VPN_Clients_Linux.md
@@ -0,0 +1,105 @@
+# GNAI-006-SEC – VPN-Client-Einrichtung: Linux (KDE Plasma)
+
+**Bezug:** GNAI-006-SEC_VPN.md (WireGuard-VPN-Gateway LXC 105)
+**Zielgruppe:** Benutzer (Laptop, z. B. CachyOS mit KDE Plasma)
+**Version:** 1.0 · 2026-09-09
+
+---
+
+## 1. Voraussetzungen
+
+* WireGuard-Client-Paket installiert
+* Das eigene wg-easy-Profil (`.conf`) – s. Abschnitt 2
+
+## 2. Profil aus der wg-easy-UI beziehen (einmalig)
+
+> ⚠️ Die UI ist **nur aus dem LAN** erreichbar (nftables). Beim ersten Setup also im Heimnetz (WLAN/LAN) bleiben.
+
+1. Browser öffnen → `http://10.0.0.15:51821`
+2. Passwort eingeben
+3. In der Client-Liste den eigenen Eintrag wählen (z. B. `Laptop-FullAdmin`)
+4. **`Download`** klicken → Datei `Laptop-FullAdmin.conf` wird heruntergeladen
+ *(Alternativ: QR-Code auf dem Display mit dem Smartphone scannen – Android/KDE-kompatibel.)*
+
+Die Datei enthält alles Notwendige:
+
+```ini
+[Interface]
+PrivateKey = … # nur die eigenen – NICHT weitergeben
+Address = 10.8.0.2/32
+DNS = 10.0.0.1 # Fritzbox als Resolver
+
+[Peer]
+PublicKey = …
+PresharedKey = …
+Endpoint = vpn.ghostnet.selfhost.eu:51820
+AllowedIPs = 10.0.0.0/24, 10.8.0.0/24, …
+```
+
+**Nur der Abschnitt `[Interface]` (PrivateKey!) ist privat** – `PublicKey`/`PresharedKey` dürfen geteilt werden, `PrivateKey` niemals.
+
+## 3. WireGuard installieren (CachyOS)
+
+```bash
+sudo pacman -S wireguard-dkms wireguard-tools
+```
+
+* DKMS baut das WireGuard-Kernelmodul für den jeweils laufenden Kernel (CachyOS wechselt Kernel häufig – DKMS verhindert, dass nach einem Kernel-Update das Modul fehlt).
+* Prüfen: `lsmod | grep wireguard`
+
+## 4. Profil importieren
+
+### Variante A – KDE-Systemtray (empfohlen)
+
+1. Oben rechts in der Taskleiste → **Systemtray-Icon** (kleines WLAN/Schild-Symbol) – erscheint nach Installation von `wireguard-tools` + `plasma-workspace` (bzw. `plasma-vault`-unabhängig, Teil der Standard-KDE-Pakete).
+2. Rechtsklick auf das Icon → **„New from file…“** → die `.conf` wählen.
+3. Eintrag erscheint in der Liste → Rechtsklick → **„Connect“**.
+
+### Variante B – `wg-quick` (Konsole / Autostart)
+
+```bash
+# Profil in das Konfigurationsverzeichnis legen
+install -m 600 ~/Downloads/Laptop-FullAdmin.conf /etc/wireguard/
+
+# Verbindung starten (ohne root)
+sudo wg-quick up wg0
+
+# Status
+wg show wg0
+
+# Verbinden getrennt
+sudo wg-quick down wg0
+```
+
+**Autostart (optional):** `/etc/wireguard/wg0.conf` mit `[Interface] PrivateKey=…` vorhanden → `sudo systemctl enable wg-quick@wg0`.
+
+## 5. Verifikation
+
+```bash
+ip -br addr show wg0 # wg0 UP, 10.8.0.2/32
+ping -c 3 10.8.0.1 # VPN-Gateway (muss funktionieren)
+ping -c 3 10.0.0.2 # Proxmox – LAN via Tunnel
+ping -c 3 10.0.0.90 # LLM-Server – LAN via Tunnel
+curl -s ifconfig.co # eigene ÖFFENTLICHE IP (Nicht-LAN: muss die WAN-IP des Providers sein, NIE 10.0.0.x)
+```
+
+**Erwartet (Split-Tunneling):**
+* LAN-Hosts (`10.0.0.0/24`) → **über den VPN-Tunnel**
+* Alles andere (Internet) → **direkt** (Nicht-LAN: Provider-NAT)
+* `curl ifconfig.co` zeigt deine **normale** Außen-IP – **nicht** eine VPN-IP
+
+## 6. Fehlersuche
+
+| Symptom | Ursache / Lösung |
+| --- | --- |
+| „No handshake yet“ nach 30 s | (1) LAN: `http://10.0.0.15:51821` erreichbar? (2) Nicht-LAN: DNS von `vpn.ghostnet.selfhost.eu` auflösen (`nslookup vpn.ghostnet.selfhost.eu` → muss `93.208.161.126` zeigen); Fritzbox-Portforward UDP 51820 aktiv? |
+| `wg-quick` meldet `WireGuard kernel module not loaded` | `sudo modprobe wireguard` (DKMS nicht installiert oder Kernel-Update → `sudo pacman -S wireguard-dkms`) |
+| LAN-Ping funktioniert, `curl ifconfig.co` zeigt VPN-IP | Client ist (fälschlich) im Full-Tunnel-Modus → `AllowedIPs` in der `.conf` prüfen – muss **nur** `10.0.0.0/24,10.8.0.0/24,…` sein, **nicht** `0.0.0.0/0` |
+| `Permission denied` bei `wg-quick up` | `sudo` vergessen (oder: `sudo usermod -aG wheel $USER` + `sudo /usr/bin/setfacl -m u:$USER:rw /etc/wireguard/wg0.conf` für rootless) |
+| KDE-Icon fehlt | `plasma-workspace`-Paket installiert; Systemtray neu starten: `plasmashell --replace` |
+
+## 7. Sicherheitshinweise
+
+* **Niemals** den PrivateKey aus der `.conf` in einen Chat/Die-Cloud/Chat-Verlauf stellen.
+* `.conf` mit `chmod 600` (`install -m 600` s. oben) – kein World-Readable.
+* Bei Verdacht auf Kompromittierung: in der wg-easy-UI Client **deaktivieren** (Toggle) oder **delete** – der Server erkennt den Key nicht mehr an.
diff --git a/docs/GNAI-006-SEC_VPN_Clients_Windows11.md b/docs/GNAI-006-SEC_VPN_Clients_Windows11.md
new file mode 100644
index 0000000..3170b50
--- /dev/null
+++ b/docs/GNAI-006-SEC_VPN_Clients_Windows11.md
@@ -0,0 +1,86 @@
+# GNAI-006-SEC – VPN-Client-Einrichtung: Windows 11
+
+**Bezug:** GNAI-006-SEC_VPN.md (WireGuard-VPN-Gateway LXC 105)
+**Zielgruppe:** Benutzer (Windows 11)
+**Version:** 1.0 · 2026-09-09
+
+> Windows 11 nutzt WireGuard über den **integrierten WireGuard-Treiber** (Hyper-V-basiert). Es braucht **kein** extra Kernelmodul – es reicht die Desktop-App.
+
+---
+
+## 1. WireGuard-App installieren
+
+### Variante A – Microsoft Store (empfohlen)
+
+1. **Microsoft Store** öffnen → Suche: **WireGuard**
+2. Veröffentlicher: **WireGuard** (wireguard.com) → **Installieren**
+3. App startet leer („No connections“)
+
+### Variante B – Installer (GitHub-Release)
+
+1. → **Windows** → `wireguard-x.x.x-amd64.msi`
+2. Installieren (Admin-Prompt bestätigen)
+
+## 2. Profil aus der wg-easy-UI beziehen (einmalig)
+
+> ⚠️ Die UI ist **nur aus dem LAN** erreichbar. Beim ersten Setup also im Heimnetz.
+
+1. Browser → `http://10.0.0.15:51821` → Passwort
+2. Eigene Client-Karte (z. B. `Laptop-FullAdmin`) → **`Download`** → `.conf` wird gespeichert
+
+**Profil in die App importieren:**
+
+1. WireGuard-App starten → **„+“** (oben rechts) → **„Import from file…“**
+2. Die heruntergeladene `.conf` wählen → Eintrag erscheint in der Verbindungsliste
+
+*(Alternativ: QR-Code aus der UI mit dem Telefon scannen → in WireGuard auf dem Telefon; für Windows nur File-Import.)*
+
+## 3. Verbinden
+
+1. In der App den Eintrag anklicken (z. B. `Laptop-FullAdmin`)
+2. **„Start“** (grüner Schalter)
+3. Taskleiste unten rechts: **Netzwerk-Icon** zeigt ein kleines **WireGuard-Schild** → verbunden
+4. Nach 2–5 s steht die Tunnel-IP `10.8.0.x/32` (s. Status unter „Verbinden“)
+
+## 4. Verifikation
+
+**PowerShell:**
+
+```powershell
+# 1. Tunnel-IP
+Get-NetIPAddress -InterfaceAlias "Laptop-FullAdmin" | Select-Object IPAddress
+# erwartet: 10.8.0.2 (oder .3)
+
+# 2. LAN via Tunnel
+ping 10.8.0.1 # VPN-Gateway
+ping 10.0.0.2 # Proxmox
+ping 10.0.0.90 # LLM-Server
+
+# 3. Außen-IP (muss die NORMALE Provider-IP sein, nicht 10.0.0.x)
+Invoke-RestMethod "https://ifconfig.co"
+```
+
+**Split-Tunneling-Erwartung:**
+* `10.0.0.0/24` + `10.8.0.0/24` → **Tunnel**
+* Internet (alles andere) → **direkt**, Außen-IP = deine normale WAN-IP
+
+## 5. Fehlersuche
+
+| Symptom | Ursache / Lösung |
+| --- | --- |
+| „No handshake yet“ nach 30 s | (1) Im LAN? (UI erreichbar `http://10.0.0.15:51821`) (2) Nicht-LAN: `nslookup vpn.ghostnet.selfhost.eu` → muss auf WAN-IP zeigen; Fritzbox-Forward UDP 51820 aktiv? |
+| App meldet `No WireGuard adapter found` | Windows 11 nutzt den integrierten WireGuard-Treiber – kein extra Setup nötig. Prüfen: *Einstellungen → Apps → Optionalle Features* → „Windows-Hyper-V-Plattform“ / „Windows Internal WireGuard“ aktiv. Fehlt es → Feature aktivieren (Admin) → Neustart. |
+| Ping ins LAN klappt, aber `Invoke-RestMethod ifconfig.co` zeigt VPN-IP | `AllowedIPs` in der `.conf` ist `0.0.0.0/0` (Full-Tunnel) → neu aus UI herunterladen (wg-easy-Env `WG_ALLOWED_IPS` muss gesetzt sein, s. GNAI-006) |
+| „Access is denied“ beim Start | App als Administrator starten (Einmalig) oder Firewall-Einstellung prüfen: Windows Firewall blockiert gelegentlich ausgehende UDP 51820 → Ausnahme hinzufügen. |
+| VPN-Icon in der Taskleiste fehlt | Taskleiste rechts → Pfeil → „WireGuard“ → **pinnen** (Rechtsklick → „Auf Taskleiste pinnen“) |
+
+## 6. Autostart / Verhalten bei Netzwerkwechsel
+
+* **Standard:** Verbindung bleibt aktiv, wechselt mit dem Netzwerk (WAN-Wechsel = kurzer Datenverlust, dann Re-Handshake).
+* **Autostart bei Login:** WireGuard-App → Einstellungen (Zahnrad) → „Start automatically at login“ (falls verfügbar; in älteren Builds: `shell:startup` mit `wireguard.exe --startup` – **empfohlen: Store-Version**).
+
+## 7. Sicherheitshinweise
+
+* **Niemals** den `[Interface]`-Abschnitt der `.conf` (PrivateKey) teilen, per E-Mail/Chat/Kopie.
+* `.conf` auf dem Rechner mit NTFS-Berechtigungen schützen (Standard-User-Ordner = `Users\\Downloads` – genügt für Einzelplatz; bei Mehrbenutzer-Rechner unter `C:\Users\Public` **nicht** ablegen).
+* Bei Verdacht auf Kompromittierung: wg-easy-UI → Client deaktivieren/löschen → neu erzeugen (alter Key wird dann nie mehr akzeptiert).