Blog

Steam und Proton auf einem Cloud-GPU-Server, gestreamt mit Sunshine und Moonlight

Steam auf einem Linux-Server ohne Bildschirm mit Intel UHD 770, ein Windows-Spiel mit Proton (umu-launcher) gestartet und mit Sunshine zu Moonlight gestreamt: 85 bis 96 fps in 1080p, 9 ms Verarbeitung auf dem Server.

Steam und Proton auf einem Cloud-GPU-Server, gestreamt mit Sunshine und Moonlight

Valves Steam Deck und die neue Steam Machine führen Windows-Spiele unter Linux mit Proton aus, Valves Version von Wine. Dieselbe Software läuft auch auf einem Linux-Server im Rechenzentrum: Steam installieren, Proton die Windows-Spiele auf der GPU des Servers ausführen lassen und auf jedem Bildschirm spielen, mit Sunshine (auf dem Server) und Moonlight (bei Ihnen). Wir haben es auf einem Linux-GPU-Server mit Intel UHD 770 getestet.

Die Windows-Version von SuperTuxKart mit Proton auf dem Linux-Server, so wie ein Moonlight-Client sie empfängt (5 Sekunden, Moonlight-Statistiken oben links).

Die Ergebnisse auf einen Blick

  • Der Steam-Client startet auf einem Server ohne Bildschirm: etwa 3 Minuten vom ersten Start bis zum Anmeldefenster, auf einem virtuellen Wayland-Bildschirm, den die GPU zeichnet.
  • Proton führt das Windows-Spiel auf der GPU aus: 85 bis 96 fps in 1080p (V-Sync aus) im SuperTuxKart-Benchmark, nah an Wine (etwa 95 fps) und Windows 11 (111 fps) auf derselben GPU.
  • Streaming mit Sunshine bremst das Spiel nicht: 83 bis 95 fps während eines 1080p-Streams mit 60 fps zu Moonlight, 9,3 ms Verarbeitung auf dem Server im Mittel, kein Bild verloren.
  • Für diesen Test konnten wir uns nicht bei Steam anmelden, daher lief Proton über umu-launcher, das Werkzeug, das Valves Proton ohne den Steam-Client ausführt. Mit Steam melden Sie sich mit Ihrem eigenen Konto an und aktivieren Steam Play.
  • Zum Spielen iGPU Power wählen: mit dem GPU-Anteil von iGPU Start fiel derselbe Benchmark, während andere Server die GPU nutzten, auf 67 bis 84 fps.

Testaufbau

ElementWert
ServerLinux (Debian 13), 4 vCPU (wie iGPU Power), 10 GB RAM, Intel UHD 770 (geteilte GPU), Kernel 7.3, Mesa 25.0
Anzeigesway im Headless-Modus + Xwayland, 1920 × 1080, von der GPU gezeichnet
SteamDebian-Paket steam-installer (Steam-Client, contrib/non-free)
Protonumu-launcher 1.4.4 (GitHub-Release), der UMU-Proton 10.0-4 und die Steam Linux Runtime 3.0 heruntergeladen hat
SpielSuperTuxKart 1.5, Windows-Version, eingebauter Benchmark (aufgezeichnetes Rennen, 38 s), OpenGL, V-Sync aus
StreamingSunshine 2026.914 auf dem Server (Wayland-Aufnahme, H.264 per VA-API auf der GPU kodiert), Moonlight 6.2 auf einem zweiten Linux-Server, 1080p 60 fps
NetzwerkClient und Server im selben Rechenzentrum: über das Internet kommt die Latenz Ihrer Verbindung hinzu

Andere virtuelle Maschinen nutzten die geteilte GPU während des ganzen Tests stark (zwischen zwei Dritteln und 87 % der GPU-Zeit, wenn unser Server ruhte): Die Zahlen unten gelten also für eine ausgelastete geteilte GPU, nicht für eine leere.

1. Ein Bildschirm für Steam auf einem Server

Steam braucht eine Anzeige und verweigert den Start als root. Wir haben einen normalen Benutzer angelegt und sway gestartet, einen Wayland-Compositor, der ohne Monitor läuft und mit der GPU zeichnet, dazu Xwayland für Steam und Windows-Spiele (Xvfb würde auf der CPU rendern):

dpkg --add-architecture i386
apt install sway xwayland steam-installer mesa-vulkan-drivers mesa-vulkan-drivers:i386 \
  libgl1-mesa-dri:i386 intel-media-va-driver-non-free
# als Spiele-Benutzer:
mkdir -p ~/.config/sway
printf 'output HEADLESS-1 resolution 1920x1080\nxwayland enable\n' > ~/.config/sway/config
WLR_BACKENDS=headless WLR_RENDERER=gles2 WLR_LIBINPUT_NO_DEVICES=1 \
  WLR_RENDER_DRM_DEVICE=/dev/dri/renderD128 sway &
DISPLAY=:0 steam &

Beim ersten Start lädt Steam seinen Client herunter und aktualisiert ihn (1,4 GB in ~/.local/share/Steam) und zeigt dann das Anmeldefenster, etwa 3 Minuten 20 Sekunden nach dem ersten Start.

Steam-Anmeldefenster auf dem virtuellen sway-Bildschirm eines Linux-Cloud-Servers
Der Steam-Client auf dem virtuellen Bildschirm des Servers, bereit zur Anmeldung (Screenshot mit grim).

Mit Ihrem eigenen Konto: anmelden (beim ersten Mal über Moonlight oder einen Remote-Desktop), dann unter Steam → Einstellungen → Kompatibilität Steam Play für alle anderen Titel aktivieren und eine Proton-Version wählen. Windows-Spiele werden dann wie Linux-Spiele installiert und gestartet. Zum Spielen mit Controller vom Sofa aus starten Sie Steam im Big-Picture-Modus (steam -gamepadui), der auch die Oberfläche der Steam Machine ist.

2. Proton ohne Steam-Konto: umu-launcher

Eine Anmeldung bei Steam war für diesen Test nicht möglich, daher haben wir umu-launcher verwendet, den Launcher, mit dem Lutris und Heroic Proton außerhalb von Steam ausführen. Er startet ein Windows-Spiel mit Proton im selben Steam-Linux-Runtime-Container, den auch Steam nutzt:

export WINEPREFIX=~/prefixes/stk GAMEID=umu-default
./umu-run supertuxkart.exe --screensize=1920x1080 --fullscreen --benchmark

Beim ersten Start lud umu-launcher UMU-Proton 10.0-4 (1,4 GB entpackt) und die Steam Linux Runtime 3.0 „sniper“ (800 MB) herunter und legte das Windows-Präfix an (900 MB), in weniger als einer Minute mit der Anbindung des Servers. Das Spielprotokoll bestätigt, dass Proton auf der GPU zeichnet:

IrrDriver: OpenGL renderer: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
IrrDriver: OpenGL version string: 4.6 (Core Profile) Mesa 25.0.7
Windows-Version von SuperTuxKart mit Proton auf einem Linux-Cloud-Server mit Intel UHD 770
Das Windows-Spiel mit Proton auf dem Server, in 1080p (Screenshot des virtuellen Bildschirms).

3. Ergebnisse

V-Sync im Spiel ausgeschaltet (swap-interval-vsync="0" in der config.xml von SuperTuxKart): Der Bildschirm des Servers ist virtuell, V-Sync lässt das Spiel nur auf ihn warten.

SuperTuxKart (Windows-Version), 1080p, ProtonTypicalMostly stableSteady
GPU-Anteil von iGPU Power, 2 Durchläufe85 bis 96 fps70 bis 83 fps52 bis 69 fps
GPU-Anteil von iGPU Power, beim Streaming zu Moonlight, 2 Durchläufe83 bis 95 fps58 bis 75 fps44 bis 58 fps
GPU-Anteil von iGPU Start, 4 Durchläufe67 bis 84 fps59 bis 71 fps45 bis 61 fps
Balkendiagramm: SuperTuxKart-fps in 1080p mit Proton nach GPU-Anteil, mit Streaming, im Vergleich zu Wine und Windows 11
Durchschnittliche Bildrate von SuperTuxKart je Konfiguration (höher ist besser).

Zum Vergleich auf derselben GPU: etwa 95 fps mit Wine und 111 fps unter Windows 11. Proton ist ein Wine mit Valves Ergänzungen; bei einem OpenGL-Spiel wie diesem ist die Geschwindigkeit gleich.

Das Spiel nutzte im Mittel etwa 10 % der 4 vCPU, etwa 30 %, wenn Sunshine gleichzeitig aufnahm und kodierte. Der ganze Server belegte während des Tests 3,2 GB RAM (sway, Spiel, Sunshine).

4. Streaming mit Sunshine und Moonlight

Sunshine für Linux nimmt den sway-Bildschirm auf und kodiert auf der GPU. Die Konfiguration:

capture = wlr
encoder = vaapi
adapter_name = /dev/dri/renderD128

Dafür braucht es den Intel-Mediatreiber (intel-media-va-driver-non-free); ohne ihn findet Sunshine keinen Encoder. Mit ihm:

Creating encoder [h264_vaapi]
vaapi vendor: Intel iHD driver for Intel(R) Gen Graphics - 25.2.3

Wir haben einen Moonlight-Client auf einem zweiten Linux-Server im selben Rechenzentrum gekoppelt und während des Spiels seine Statistiken notiert:

Moonlight-Statistik (1080p, H.264, 60 fps)Wert
Empfangene und angezeigte Bilder59,8 fps
Verarbeitung auf dem Server (Aufnahme + Kodierung), min / Mittel / max4,2 / 9,3 / 14,8 ms
Verlorene Bilder (Netzwerk oder Jitter)0 %
Netzwerklatenz (selbes Rechenzentrum)1 ms
Dekodierzeit auf dem Client0,29 ms
Balkendiagramm: Zeiten des Moonlight-Streams, Serververarbeitung min, Mittel und max, Netzwerk und Dekodierung
Wohin die Zeit im Moonlight-Stream geht (niedriger ist besser).
Moonlight-Client zeigt SuperTuxKart, gestreamt vom Linux-Server, mit Leistungsstatistiken
Was der Spieler in Moonlight sieht: das Spiel, das mit Proton auf dem Server läuft, und die Statistiken.

Öffnen Sie die Weboberfläche von Sunshine über einen SSH-Tunnel (ssh -L 47990:localhost:47990 benutzer@ihr-server), statt sie ins Internet zu stellen. Sunshine für Linux bringt bereits einen Eintrag „Steam Big Picture“ mit, den Sie in Moonlight auswählen. Ihre Gesamtlatenz hängt vor allem von Ihrer Internetverbindung zum Server (Deutschland) ab: Eine gute Glasfaserverbindung in Europa fügt meist 10 bis 30 ms hinzu.

Grenzen

  • Anti-Cheat: Viele Online-Spiele mit Anti-Cheat verweigern Proton oder virtuelle Maschinen. Prüfen Sie ProtonDB, bevor Sie ein Spiel dafür kaufen.
  • Es ist eine integrierte GPU: gut für Indie-Spiele, ältere Spiele und 2D/3D-Spiele der 2010er, nicht für aktuelle AAA-Spiele in 1080p.
  • Ton: Der Server hat keine Soundkarte. Für Ton in Moonlight PipeWire oder PulseAudio in der Spielsitzung starten; den Ton haben wir hier nicht getestet.

Systeme, die ab Werk spielbereit sind. Die Systeme, die wir standardmäßig installieren, sind bereits dafür eingerichtet: Debian 13 mit aktuellem Kernel (7.3), den Intel-GPU-Treibern und Mesa (OpenGL, Vulkan, VA-API-Videokodierung) sowie Windows 11 (Option) mit dem Intel-Grafiktreiber und GPU-beschleunigtem Remotedesktop. Keine Treibersuche: Spiel und Sunshine installieren und loslegen.

Welches Angebot?

Wir empfehlen iGPU Power (4 vCPU, 14 GB RAM, doppelter GPU-Anteil von iGPU Start). Wenn andere Server die GPU nutzen, richtet sich die GPU-Zeit jedes Servers nach seinem Anteil: In unserem Test stieg derselbe Benchmark von 67 bis 84 fps mit dem Anteil von Start auf 85 bis 96 fps mit dem von Power. iGPU Start (2 vCPU, 8 GB) reicht für 2D-Spiele und leichte Werkzeuge.

Lieber sofort losspielen? Fragen Sie bei der Bestellung per E-Mail danach (contact@linuxgpu.eu): Wir können Ihnen den Server mit Steam, virtuellem Bildschirm und Sunshine vorinstalliert und eingerichtet liefern. Sie melden sich mit Ihrem eigenen Konto bei Steam an und installieren Moonlight auf Ihrem Computer, Smartphone oder TV-Gerät.

Läuft ein Spiel nicht mit Proton, gibt Ihnen die Windows-11-Option (einmalig 10 €) ein vollständiges Windows: siehe Windows 11 in der Cloud mit Sunshine und Moonlight.

Zu den Angeboten: iGPU Power kostet 29,99 € netto pro Monat.