Blog

Steam en Proton op een cloudserver met GPU, gestreamd met Sunshine en Moonlight

We installeerden Steam op een Linux-server zonder scherm met een Intel UHD 770, startten een Windows-game met Proton (umu-launcher) en streamden die met Sunshine naar Moonlight: 85 tot 96 fps in 1080p, 9 ms verwerking op de server.

Steam en Proton op een cloudserver met GPU, gestreamd met Sunshine en Moonlight

De Steam Deck en de nieuwe Steam Machine van Valve draaien Windows-games op Linux met Proton, Valves versie van Wine. Dezelfde software draait ook op een Linux-server in een datacenter: installeer Steam, laat Proton je Windows-games op de GPU van de server draaien en speel op elk scherm met Sunshine (op de server) en Moonlight (aan jouw kant). We testten het op een Linux-GPU-server met een Intel UHD 770.

De Windows-versie van SuperTuxKart met Proton op de Linux-server, zoals een Moonlight-client die ontvangt (5 seconden, Moonlight-statistieken linksboven).

De resultaten in het kort

  • De Steam-client start op een server zonder scherm: ongeveer 3 minuten van de eerste start tot het aanmeldvenster, op een virtueel Wayland-scherm dat de GPU tekent.
  • Proton draait de Windows-game op de GPU: 85 tot 96 fps in 1080p (V-Sync uit) in de SuperTuxKart-benchmark, dicht bij Wine (ongeveer 95 fps) en Windows 11 (111 fps) op dezelfde GPU.
  • Streamen met Sunshine vertraagt de game niet: 83 tot 95 fps tijdens een 1080p-stream op 60 fps naar Moonlight, gemiddeld 9,3 ms verwerking op de server, geen beeld verloren.
  • Voor deze test konden we niet aanmelden bij Steam, dus draaide Proton via umu-launcher, de tool die Valves Proton zonder de Steam-client uitvoert. Met Steam meld je je aan met je eigen account en zet je Steam Play aan.
  • Kies iGPU Power om te gamen: met het GPU-aandeel van iGPU Start zakte dezelfde benchmark, terwijl andere servers de GPU gebruikten, naar 67 tot 84 fps.

Testopstelling

OnderdeelWaarde
ServerLinux (Debian 13), 4 vCPU (zoals iGPU Power), 10 GB RAM, Intel UHD 770 (gedeelde GPU), kernel 7.3, Mesa 25.0
Weergavesway in headless-modus + Xwayland, 1920 × 1080, getekend door de GPU
SteamDebian-pakket steam-installer (Steam-client, contrib/non-free)
Protonumu-launcher 1.4.4 (GitHub-release), die UMU-Proton 10.0-4 en de Steam Linux Runtime 3.0 downloadde
GameSuperTuxKart 1.5, Windows-versie, ingebouwde benchmark (opgenomen race, 38 s), OpenGL, V-Sync uit
StreamingSunshine 2026.914 op de server (Wayland-opname, H.264 gecodeerd door de GPU via VA-API), Moonlight 6.2 op een tweede Linux-server, 1080p 60 fps
Netwerkclient en server in hetzelfde datacenter: via internet komt de latentie van je verbinding erbij

Andere virtuele machines gebruikten de gedeelde GPU de hele test zwaar (tussen twee derde en 87 % van de GPU-tijd als onze server niets deed): de cijfers hieronder gelden dus voor een drukke gedeelde GPU, niet voor een lege.

1. Een scherm voor Steam op een server

Steam heeft een weergave nodig en weigert als root te draaien. We maakten een gewone gebruiker aan en startten sway, een Wayland-compositor die zonder monitor werkt en met de GPU tekent, plus Xwayland voor Steam en Windows-games (Xvfb zou op de CPU renderen):

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 gamegebruiker:
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 &

Bij de eerste start downloadt en werkt Steam zijn client bij (1,4 GB in ~/.local/share/Steam) en toont dan het aanmeldvenster, ongeveer 3 minuten en 20 seconden na de eerste start.

Aanmeldvenster van Steam op het virtuele sway-scherm van een Linux-cloudserver
De Steam-client op het virtuele scherm van de server, klaar om aan te melden (screenshot met grim).

Met je eigen account: meld je aan (de eerste keer via Moonlight of een extern bureaublad), zet dan onder Steam → Instellingen → Compatibiliteit Steam Play voor alle andere titels aan en kies een Proton-versie. Windows-games installeren en starten dan als Linux-games. Om met een controller vanaf de bank te spelen, start je Steam in Big Picture-modus (steam -gamepadui), ook de interface van de Steam Machine.

2. Proton zonder Steam-account: umu-launcher

Aanmelden bij Steam was voor deze test niet mogelijk, dus gebruikten we umu-launcher, de launcher waarmee Lutris en Heroic Proton buiten Steam draaien. Hij start een Windows-game met Proton in dezelfde Steam Linux Runtime-container die Steam gebruikt:

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

Bij de eerste start downloadde umu-launcher UMU-Proton 10.0-4 (1,4 GB uitgepakt) en de Steam Linux Runtime 3.0 “sniper” (800 MB) en maakte het Windows-prefix aan (900 MB), in minder dan een minuut met de verbinding van de server. Het log van de game bevestigt dat Proton op de GPU tekent:

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-versie van SuperTuxKart met Proton op een Linux-cloudserver met een Intel UHD 770
De Windows-game met Proton op de server, in 1080p (screenshot van het virtuele scherm).

3. Resultaten

V-Sync uit in de game (swap-interval-vsync="0" in de config.xml van SuperTuxKart): het scherm van de server is virtueel, en V-Sync laat de game er alleen op wachten.

SuperTuxKart (Windows-versie), 1080p, ProtonTypicalMostly stableSteady
GPU-aandeel van iGPU Power, 2 runs85 tot 96 fps70 tot 83 fps52 tot 69 fps
GPU-aandeel van iGPU Power, tijdens streamen naar Moonlight, 2 runs83 tot 95 fps58 tot 75 fps44 tot 58 fps
GPU-aandeel van iGPU Start, 4 runs67 tot 84 fps59 tot 71 fps45 tot 61 fps
Staafdiagram: SuperTuxKart-fps in 1080p met Proton per GPU-aandeel, met streamen, vergeleken met Wine en Windows 11
Gemiddelde framerate van SuperTuxKart per opstelling (hoger is beter).

Ter vergelijking, op dezelfde GPU: ongeveer 95 fps met Wine en 111 fps onder Windows 11. Proton is een Wine met toevoegingen van Valve; voor een OpenGL-game als deze is de snelheid gelijk.

De game gebruikte gemiddeld ongeveer 10 % van de 4 vCPU, ongeveer 30 % als Sunshine tegelijk opnam en codeerde. De hele server gebruikte tijdens de test 3,2 GB RAM (sway, game, Sunshine).

4. Streamen met Sunshine en Moonlight

Sunshine voor Linux neemt het sway-scherm op en codeert op de GPU. De configuratie:

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

Daarvoor is de Intel-mediadriver nodig (intel-media-va-driver-non-free); zonder vindt Sunshine geen encoder. Met de driver:

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

We koppelden een Moonlight-client op een tweede Linux-server in hetzelfde datacenter en noteerden de statistieken tijdens het spelen:

Moonlight-statistiek (1080p, H.264, 60 fps)Waarde
Ontvangen en getoonde beelden59,8 fps
Verwerking op de server (opname + codering), min / gemiddeld / max4,2 / 9,3 / 14,8 ms
Verloren beelden (netwerk of jitter)0 %
Netwerklatentie (zelfde datacenter)1 ms
Decodeertijd op de client0,29 ms
Staafdiagram: tijden van de Moonlight-stream, serververwerking min, gemiddeld en max, netwerk en decoderen
Waar de tijd heen gaat in de Moonlight-stream (lager is beter).
Moonlight-client toont SuperTuxKart gestreamd vanaf de Linux-server, met prestatiestatistieken
Wat de speler in Moonlight ziet: de game die met Proton op de server draait, en de statistieken.

Open de webinterface van Sunshine via een SSH-tunnel (ssh -L 47990:localhost:47990 gebruiker@jouw-server) in plaats van haar op internet open te zetten. Sunshine voor Linux heeft al een item “Steam Big Picture” dat je in Moonlight kiest. Je totale latentie hangt vooral af van je internetverbinding met de server (Duitsland): een goede glasvezelverbinding in Europa voegt meestal 10 tot 30 ms toe.

Beperkingen

  • Anti-cheat: veel online games met anti-cheat weigeren Proton of virtuele machines. Kijk op ProtonDB voordat je hiervoor een game koopt.
  • Het is een geïntegreerde GPU: geschikt voor indiegames, oudere games en 2D/3D-games uit de jaren 2010, niet voor recente AAA-games in 1080p.
  • Geluid: de server heeft geen geluidskaart. Voor geluid in Moonlight start je PipeWire of PulseAudio in de gamesessie; geluid hebben we hier niet getest.

Systemen die direct klaar zijn om te gamen. De systemen die we standaard installeren zijn hier al op ingericht: Debian 13 met een recente kernel (7.3), de Intel-GPU-drivers en Mesa (OpenGL, Vulkan, VA-API-videocodering), en Windows 11 (optie) met de grafische driver van Intel en Extern bureaublad dat op de GPU rendert. Geen drivers zoeken: installeer je game en Sunshine, en speel.

Welk abonnement?

We raden iGPU Power aan (4 vCPU, 14 GB RAM, twee keer het GPU-aandeel van iGPU Start). Als andere servers de GPU gebruiken, volgt de GPU-tijd van elke server zijn aandeel: in onze test ging dezelfde benchmark van 67 tot 84 fps met het aandeel van Start naar 85 tot 96 fps met dat van Power. iGPU Start (2 vCPU, 8 GB) blijft genoeg voor 2D-games en lichte tools.

Liever meteen spelen? Vraag het per e-mail bij je bestelling (contact@linuxgpu.eu): we kunnen de server leveren met Steam, het virtuele scherm en Sunshine al geïnstalleerd en ingesteld. Jij meldt je bij Steam aan met je eigen account en installeert Moonlight op je computer, telefoon of tv-box.

Werkt een game niet met Proton, dan geeft de Windows 11-optie (eenmalig € 10) je een volledige Windows: zie Windows 11 in de cloud met Sunshine en Moonlight.

Bekijk de abonnementen: iGPU Power kost € 29,99 per maand excl. btw.