Lancer des jeux Windows sur un serveur Linux GPU avec Wine, et les streamer
Il n’est pas toujours nécessaire d’avoir Windows pour lancer un programme Windows. Wine exécute les logiciels Windows directement sous Linux, et DXVK traduit Direct3D 9, 10 et 11 en Vulkan. Sur un serveur Linux avec GPU, cela veut dire : pas de licence Windows, un système plus léger, et les pilotes GPU fournis avec Linux. Nous l’avons testé avec la version Windows de SuperTuxKart, un jeu libre et gratuit bien connu, sur un serveur Linux GPU équipé d’un Intel UHD 770.
Les résultats en bref
- Le jeu Windows tourne avec Wine et il est rendu par le GPU (OpenGL 4.6, Mesa, Intel UHD 770).
- Environ 95 fps en 1080p sans V-Sync, pendant qu’une autre machine virtuelle utilisait le GPU en même temps.
- Désactivez la V-Sync : l’écran du serveur est virtuel, la V-Sync ne fait que forcer le jeu à l’attendre. Moonlight limite la fréquence d’images de votre côté.
- Sunshine tourne aussi sur le serveur Linux : il capture l’écran et encode en H.264 ou HEVC sur le GPU (VA-API), prêt pour Moonlight.
- N’utilisez pas Xvfb pour les jeux : son OpenGL tourne sur le CPU (9 fps lors de notre premier test Direct3D sous Xvfb). Utilisez plutôt un compositeur Wayland sans écran (voir plus bas).
Configuration du test
| Élément | Valeur |
|---|---|
| Serveur | Linux (Debian 13), 4 vCPU, Intel UHD 770 (GPU partagé), noyau 7.3, Mesa 25.0 |
| Wine | Wine 10.0 et DXVK 2.6 (paquets Debian) |
| Affichage | sway en mode headless + Xwayland, 1920 × 1080 à 60 Hz |
| Jeu | SuperTuxKart 1.5, version Windows, benchmark intégré (course enregistrée, 38 s), rendu OpenGL |
1. Un écran pour un serveur qui n’en a pas
Les jeux ont besoin d’un affichage. Sur un serveur, la réponse facile est Xvfb, un serveur X virtuel, mais son OpenGL est rendu par le CPU : notre premier test Direct3D sous Xvfb tournait à 9 fps. La solution est sway, un compositeur Wayland qui fonctionne sans écran et fait son rendu sur le GPU, avec Xwayland pour les programmes X11 comme Wine :
apt install sway xwayland wine wine64 dxvk-wine64 mesa-vulkan-drivers
mkdir -p ~/.config/sway
cat > ~/.config/sway/config <<'EOF'
output HEADLESS-1 resolution 1920x1080 position 0,0
default_border none
xwayland enable
EOF
export XDG_RUNTIME_DIR=/run/user/$(id -u)
WLR_BACKENDS=headless WLR_RENDERER=gles2 WLR_LIBINPUT_NO_DEVICES=1 \
WLR_RENDER_DRM_DEVICE=/dev/dri/renderD128 sway &
Vérifiez qu’OpenGL tourne bien sur le GPU :
DISPLAY=:0 glxinfo -B | grep renderer
# OpenGL renderer string: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
2. Lancer le jeu Windows
export DISPLAY=:0 WINEPREFIX=~/.wine-games
wineboot -i
dxvk-setup install --prefix "$WINEPREFIX" # Direct3D 9/10/11 -> Vulkan
cd SuperTuxKart-1.5-win/stk-code/build-x86_64/bin
wine supertuxkart.exe --screensize=1920x1080 --fullscreen
Le journal du jeu confirme le GPU :
IrrDriver: OpenGL renderer: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
Pour les jeux Direct3D, DXVK fait le même travail via Vulkan : dans notre test, il a trouvé
l’Intel(R) UHD Graphics 770 (ADL-S GT1).
3. Résultats
| SuperTuxKart (version Windows), 1080p | Typique | Plutôt stable | Constant |
|---|---|---|---|
| Wine sous Linux, V-Sync désactivée, GPU partagé avec une autre VM chargée | 95 à 98 fps | — | — |
| Windows 11 sur le même GPU, V-Sync désactivée, pour comparer | 111 fps | 96 fps | 69 fps |
Sous Wine, le jeu tourne presque aussi vite que sous Windows, même avec le GPU partagé (chiffres Windows tirés de notre test Windows 11 et Sunshine).
Désactivez la V-Sync dans le jeu. Avec la V-Sync, le jeu attend le prochain rafraîchissement de l’écran avant d’afficher une image. Ici, l’écran est virtuel et personne ne le regarde : un jeu qui rate de peu un rafraîchissement attend le suivant et perd des images pour rien. Laissez plutôt Moonlight limiter la fréquence d’images (60 fps par défaut).
4. Le streamer avec Sunshine et Moonlight
Sunshine existe en version Linux : il capture l’écran sway et encode sur le GPU. Avec
capture = wlr et encoder = vaapi dans sa configuration, il a trouvé :
Found H.264 encoder: h264_vaapi [vaapi]
Found HEVC encoder: hevc_vaapi [vaapi]
Associez Moonlight sur votre ordinateur, votre téléphone ou votre box TV, et vous jouez au jeu
Windows qui tourne sur le serveur Linux. Ouvrez l’interface web de Sunshine par un tunnel SSH
(ssh -L 47990:localhost:47990 root@your-server) plutôt que de l’exposer sur Internet.
Wine ou Windows ?
| Wine sous Linux | Windows 11 | |
|---|---|---|
| Prix | inclus | 10 € une seule fois (option) |
| Compatibilité | très bonne pour les jeux anciens et indépendants ; vérifiez sur ProtonDB ou la Wine AppDB | tout ce qui tourne sous Windows |
| Anti-triche | généralement non | souvent refusé dans une machine virtuelle |
| Installation | sway + Wine + Sunshine | pilote Windows + écran virtuel + Sunshine |
Commencez par Wine si votre jeu est connu pour y fonctionner ; choisissez Windows dans le cas contraire, ou si vous avez besoin d’autres outils Windows.
Des systèmes prêts pour le jeu dès l’installation. Les systèmes que nous installons par défaut sont déjà optimisés pour cela : Debian 13 avec un noyau récent (7.3), les pilotes GPU Intel et Mesa (OpenGL, Vulkan, encodage vidéo VA-API), et Windows 11 (option) avec le pilote graphique Intel et le Bureau à distance rendu sur le GPU. Aucun pilote à chercher : installez votre jeu et Sunshine, et jouez.
Quelle offre ?
Les jeux ont besoin de CPU et de GPU en même temps. Nous conseillons iGPU Power (4 vCPU, 14 Go de RAM, deux fois la part GPU de Start) : sans V-Sync, sous Windows, ce jeu utilisait à lui seul plus de la moitié des 2 vCPU d’iGPU Start, et quand d’autres serveurs utilisent le GPU, Power reçoit deux fois plus de temps GPU, donc moins de chutes d’images. iGPU Start suffit pour les jeux 2D et les outils légers.
Voir les offres, iGPU Power à partir de 29,99 € HT par mois.