Complete guide for running Dream Server on Windows with WSL2 and NVIDIA GPU
passthrough. AMD Strix Halo installs also use Docker Desktop + WSL2 for the
service stack, but local inference runs through the Windows host accelerated
path selected by install.ps1.
After installation, verify GPU is accessible:
# In PowerShell (Windows side)
wsl nvidia-smi
# In WSL Ubuntu
wsl
nvidia-smi
# In Docker container
docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smiAll three should show your GPU. If any fail, see troubleshooting below.
- Windows 10 version 2004+ (build 19041) or Windows 11
- WSL2 enabled
- Docker Desktop with WSL2 backend
- NVIDIA GPU with 8GB+ VRAM
- Latest NVIDIA drivers (Game Ready or Studio)
- Do NOT install NVIDIA drivers inside WSL2 — Windows drivers provide GPU access to WSL2
- Do NOT install CUDA toolkit in WSL2 — containers include their own CUDA
# Run as Administrator in PowerShell
wsl --installRestart when prompted. This installs WSL2 and Ubuntu by default.
Verify:
wsl --status
# Should show: Default Version: 2- Download from https://docker.com/products/docker-desktop
- During install, check "Use WSL2 instead of Hyper-V"
- After install, verify WSL2 backend:
- Open Docker Desktop → Settings → General
- Confirm "Use the WSL2 based engine" is checked
Download latest drivers from https://www.nvidia.com/drivers
Verify driver includes WSL2 support:
# Driver version 465.21 or later includes WSL2 support
# Game Ready drivers work fine for computegit clone https://github.com/Light-Heart-Labs/DreamServer.git
cd DreamServer
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\install.ps1Cause: WSL2 doesn't have GPU support enabled or NVIDIA driver missing.
Fix:
# On Windows side — check driver
nvidia-smi
# If this fails, install NVIDIA drivers on Windows
# Verify WSL2 has GPU support
wsl cat /proc/driver/nvidia/version
# Should show driver versionSymptoms:
wsl nvidia-smishows GPU ✓docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smifails ✗
Cause: Docker Desktop not using WSL2 backend.
Fix:
- Open Docker Desktop
- Settings → General → Check "Use the WSL2 based engine"
- Settings → Resources → WSL Integration → Enable integration with your distro
- Click "Apply & Restart"
Verify:
docker info | findstr WSL
# Should show: WSL2: trueSymptoms:
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:380: starting container process caused:
process_linux.go:545: container init caused: Running hook #0::
error running hook: exit status 1, stderr: nvidia-container-cli:
initialization error: driver rpc error: failed to process request
Cause: Windows Defender or other security software blocking GPU access.
Fix:
-
Add Docker Desktop to Windows Defender exclusions:
- Windows Security → Virus & threat protection → Manage settings
- Add or remove exclusions → Add an exclusion → Folder
- Add
C:\Program Files\Docker
-
If using third-party antivirus, temporarily disable or add similar exclusion.
-
Restart Docker Desktop.
Symptoms:
nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.6
Cause: Windows NVIDIA driver is too old for the container's CUDA version.
Fix: Update NVIDIA drivers on Windows side. The driver in WSL2 comes from Windows — you don't install CUDA drivers in WSL2.
Cause: WSL2 defaults to using 50% of available RAM.
Fix: Create .wslconfig to increase memory:
# In PowerShell (Windows side)
notepad "$env:USERPROFILE\.wslconfig"Add:
[wsl2]
memory=24GB
processors=8
swap=4GBSave, then:
wsl --shutdown
# Restart WSL2Symptoms:
.\install.ps1 : File cannot be loaded because running scripts is disabled on this system.
Fix (temporary, per-session): run the installer through a one-shot bypass:
powershell -ExecutionPolicy Bypass -File .\install.ps1Create %USERPROFILE%\.wslconfig:
[wsl2]
# Memory: Leave 4-8GB for Windows, rest for WSL2
memory=20GB
processors=8
swap=4GB
swapFile=C:\temp\wsl-swap.vhdx
localhostForwarding=true
# Disable Windows interoperability if not needed (slight performance gain)
# interop.enabled=falseAfter editing:
wsl --shutdown
# WSL2 will restart with new settings- Open Docker Desktop
- Settings → Resources → Advanced
- Set:
- CPUs: 75% of available cores
- Memory: 75% of available RAM
- Swap: 2GB
Before reporting issues, verify:
- Windows 10 build 19041+ or Windows 11
-
wsl --statusshows Default Version: 2 -
wsl nvidia-smishows GPU info - Docker Desktop is running
- Docker Desktop uses WSL2 backend (Settings → General)
- WSL integration enabled for Ubuntu (Settings → Resources → WSL Integration)
-
docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smishows GPU
# Restart WSL2 (fixes many issues)
wsl --shutdown
# Check WSL2 distros
wsl -l -v
# Set WSL2 as default
wsl --set-default-version 2
# Check Docker WSL2 backend
docker info | findstr WSL
# View WSL2 logs (for debugging)
Get-Content "$env:LOCALAPPDATA\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"If you've verified the checklist and still have issues:
- After install, run diagnostics:
cd $env:USERPROFILE\dream-server; .\dream.ps1 report - Check WSL2 GPU issues: https://github.com/microsoft/WSL/issues?q=label%3Agpu
- Dream Server Discord: https://discord.gg/clawd
When reporting issues, include:
- Output of
wsl nvidia-smi - Output of
docker info | findstr WSL - Windows build number:
winver - Docker Desktop version