Ejecutar juegos de Windows en un servidor Linux con GPU usando Wine, y hacer streaming
No siempre hace falta Windows para ejecutar un programa de Windows. Wine ejecuta software de Windows directamente en Linux, y DXVK traduce Direct3D 9, 10 y 11 a Vulkan. En un servidor Linux con GPU, eso significa: sin licencia de Windows, un sistema más ligero y los drivers de GPU que ya trae Linux. Lo probamos con la versión Windows de SuperTuxKart, un conocido juego libre y de código abierto, en un servidor Linux con GPU Intel UHD 770.
Resultados en resumen
- El juego de Windows funciona con Wine y lo renderiza la GPU (OpenGL 4.6, Mesa, Intel UHD 770).
- Unos 95 fps en 1080p sin V-Sync, mientras otra máquina virtual usaba la GPU al mismo tiempo.
- Desactiva el V-Sync: la pantalla del servidor es virtual y el V-Sync solo hace que el juego la espere. Moonlight limita la tasa de imágenes en tu lado.
- Sunshine también funciona en el servidor Linux: captura la pantalla y codifica en H.264 o HEVC en la GPU (VA-API), listo para Moonlight.
- No uses Xvfb para juegos: su OpenGL funciona en la CPU (9 fps en nuestra primera prueba Direct3D con Xvfb). Usa en su lugar un compositor Wayland sin pantalla (ver más abajo).
Configuración de la prueba
| Elemento | Valor |
|---|---|
| Servidor | Linux (Debian 13), 4 vCPU, Intel UHD 770 (GPU compartida), kernel 7.3, Mesa 25.0 |
| Wine | Wine 10.0 y DXVK 2.6 (paquetes de Debian) |
| Pantalla | sway en modo headless + Xwayland, 1920 × 1080 a 60 Hz |
| Juego | SuperTuxKart 1.5, versión Windows, benchmark integrado (carrera grabada, 38 s), renderizador OpenGL |
1. Una pantalla para un servidor sin pantalla
Los juegos necesitan una pantalla. En un servidor, la respuesta fácil es Xvfb, un servidor X virtual, pero su OpenGL lo renderiza la CPU: nuestra primera prueba Direct3D con Xvfb iba a 9 fps. La solución es sway, un compositor Wayland que funciona sin monitor y renderiza con la GPU, junto con Xwayland para programas X11 como 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 &
Comprueba que OpenGL funciona en la GPU:
DISPLAY=:0 glxinfo -B | grep renderer
# OpenGL renderer string: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
2. Ejecutar el juego de 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
El registro del juego confirma la GPU:
IrrDriver: OpenGL renderer: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
Para los juegos Direct3D, DXVK hace el mismo trabajo sobre Vulkan: en nuestra prueba encontró la
Intel(R) UHD Graphics 770 (ADL-S GT1).
3. Resultados
| SuperTuxKart (versión Windows), 1080p | Típico | Casi estable | Constante |
|---|---|---|---|
| Wine en Linux, V-Sync desactivado, GPU compartida con otra VM ocupada | 95 a 98 fps | — | — |
| Windows 11 en la misma GPU, V-Sync desactivado, como comparación | 111 fps | 96 fps | 69 fps |
Con Wine el juego va casi tan rápido como en Windows, incluso con la GPU compartida (cifras de Windows de nuestra prueba de Windows 11 y Sunshine).
Desactiva el V-Sync en el juego. Con V-Sync, el juego espera al siguiente refresco de la pantalla antes de mostrar una imagen. Aquí la pantalla es virtual y nadie la mira: un juego que pierde un refresco por poco espera al siguiente y pierde imágenes para nada. Deja que Moonlight limite la tasa de imágenes (60 fps por defecto).
4. Streaming con Sunshine y Moonlight
Sunshine tiene una versión para Linux que captura la pantalla de sway y codifica en la GPU. Con
capture = wlr y encoder = vaapi en su configuración, encontró:
Found H.264 encoder: h264_vaapi [vaapi]
Found HEVC encoder: hevc_vaapi [vaapi]
Empareja Moonlight en tu ordenador, móvil o TV box, y juegas al juego de Windows que se ejecuta en
el servidor Linux. Abre la interfaz web de Sunshine mediante un túnel SSH
(ssh -L 47990:localhost:47990 root@your-server) en lugar de exponerla a Internet.
¿Wine o Windows?
| Wine en Linux | Windows 11 | |
|---|---|---|
| Precio | incluido | 10 € en un único pago (opción) |
| Compatibilidad | muy buena para juegos antiguos e independientes; consulta ProtonDB o la Wine AppDB | todo lo que funciona en Windows |
| Antitrampas | normalmente no | a menudo rechazado en una máquina virtual |
| Instalación | sway + Wine + Sunshine | driver de Windows + pantalla virtual + Sunshine |
Empieza por Wine si se sabe que tu juego funciona con él; elige Windows si no es así, o si necesitas otras herramientas de Windows.
Sistemas listos para jugar desde el primer momento. Los sistemas que instalamos por defecto ya están optimizados para ello: Debian 13 con un kernel reciente (7.3), los drivers de GPU de Intel y Mesa (OpenGL, Vulkan, codificación de vídeo VA-API), y Windows 11 (opción) con el driver gráfico de Intel y el Escritorio remoto renderizado en la GPU. Sin buscar drivers: instala tu juego y Sunshine, y a jugar.
¿Qué plan?
Los juegos necesitan CPU y GPU a la vez. Recomendamos iGPU Power (4 vCPU, 14 GB de RAM, el doble de cuota de GPU que Start): sin V-Sync, en Windows, este juego usaba por sí solo más de la mitad de las 2 vCPU de iGPU Start, y cuando otros servidores usan la GPU, Power recibe el doble de tiempo de GPU, así que hay menos caídas de imágenes. iGPU Start basta para juegos 2D y herramientas ligeras.
Ver los planes, iGPU Power desde 29,99 € al mes sin IVA.