Steam y Proton en un servidor GPU en la nube, en streaming con Sunshine y Moonlight
La Steam Deck y la nueva Steam Machine de Valve ejecutan juegos de Windows en Linux con Proton, la versión de Wine de Valve. El mismo software funciona en un servidor Linux en un centro de datos: instala Steam, deja que Proton ejecute tus juegos de Windows en la GPU del servidor y juega en cualquier pantalla con Sunshine (en el servidor) y Moonlight (en tu lado). Lo probamos en un servidor Linux con GPU Intel UHD 770.
Resultados en resumen
- El cliente de Steam arranca en un servidor sin pantalla: unos 3 minutos desde el primer inicio hasta la ventana de inicio de sesión, en una pantalla Wayland virtual dibujada por la GPU.
- Proton ejecuta el juego de Windows en la GPU: de 85 a 96 fps en 1080p (V-Sync desactivada) en el benchmark de SuperTuxKart, cerca de Wine (unos 95 fps) y de Windows 11 (111 fps) en la misma GPU.
- El streaming con Sunshine no ralentiza el juego: de 83 a 95 fps mientras se transmitía 1080p a 60 fps a Moonlight, 9,3 ms de procesamiento en el servidor de media, ninguna imagen perdida.
- No podíamos iniciar sesión en Steam para esta prueba, así que Proton se lanzó con umu-launcher, la herramienta que ejecuta el Proton de Valve sin el cliente de Steam. Con Steam, inicias sesión con tu propia cuenta y activas Steam Play.
- Para jugar, elige iGPU Power: con la parte de GPU de iGPU Start, mientras otros servidores usaban la GPU, el mismo benchmark bajó a entre 67 y 84 fps.
Configuración de la prueba
| Elemento | Valor |
|---|---|
| Servidor | Linux (Debian 13), 4 vCPU (como iGPU Power), 10 GB de RAM, Intel UHD 770 (GPU compartida), kernel 7.3, Mesa 25.0 |
| Pantalla | sway en modo headless + Xwayland, 1920 × 1080, dibujado por la GPU |
| Steam | paquete Debian steam-installer (cliente de Steam, contrib/non-free) |
| Proton | umu-launcher 1.4.4 (release de GitHub), que descargó UMU-Proton 10.0-4 y el Steam Linux Runtime 3.0 |
| Juego | SuperTuxKart 1.5, versión Windows, benchmark integrado (carrera grabada, 38 s), OpenGL, V-Sync desactivada |
| Streaming | Sunshine 2026.914 en el servidor (captura Wayland, H.264 codificado por la GPU con VA-API), Moonlight 6.2 en un segundo servidor Linux, 1080p 60 fps |
| Red | cliente y servidor en el mismo centro de datos: por Internet, añade la latencia de tu conexión |
Otras máquinas virtuales usaban mucho la GPU compartida durante toda la prueba (entre dos tercios y el 87 % del tiempo de GPU cuando nuestro servidor estaba en reposo): las cifras de abajo son las de una GPU compartida cargada, no las de una GPU vacía.
1. Una pantalla para Steam en un servidor
Steam necesita una pantalla y se niega a ejecutarse como root. Creamos un usuario normal y lanzamos sway, un compositor Wayland que funciona sin monitor y dibuja con la GPU, más Xwayland para Steam y los juegos de Windows (Xvfb dibujaría con la CPU):
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
# como usuario de juego:
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 &
En el primer inicio, Steam descarga y actualiza su cliente (1,4 GB en ~/.local/share/Steam) y luego
muestra la ventana de inicio de sesión, unos 3 minutos y 20 segundos después del primer arranque.
Con tu propia cuenta: inicia sesión (la primera vez, a través de Moonlight o de un escritorio remoto),
luego en Steam → Parámetros → Compatibilidad, activa Steam Play para todos los demás títulos y
elige una versión de Proton. Los juegos de Windows se instalan y se inician entonces como juegos de
Linux. Para jugar con mando desde el sofá, inicia Steam en modo Big Picture (steam -gamepadui), que
es también la interfaz de la Steam Machine.
2. Proton sin cuenta de Steam: umu-launcher
No era posible iniciar sesión en Steam para esta prueba, así que usamos umu-launcher, el lanzador que usan Lutris y Heroic para ejecutar Proton fuera de Steam. Ejecuta un juego de Windows con Proton dentro del mismo contenedor Steam Linux Runtime que usa Steam:
export WINEPREFIX=~/prefixes/stk GAMEID=umu-default
./umu-run supertuxkart.exe --screensize=1920x1080 --fullscreen --benchmark
En la primera ejecución, umu-launcher descargó UMU-Proton 10.0-4 (1,4 GB descomprimido) y el Steam Linux Runtime 3.0 «sniper» (800 MB), y creó el prefijo de Windows (900 MB), en menos de un minuto con la conexión del servidor. El registro del juego confirma que Proton dibuja en la GPU:
IrrDriver: OpenGL renderer: Mesa Intel(R) UHD Graphics 770 (ADL-S GT1)
IrrDriver: OpenGL version string: 4.6 (Core Profile) Mesa 25.0.7
3. Resultados
V-Sync desactivada en el juego (swap-interval-vsync="0" en el config.xml de SuperTuxKart): la
pantalla del servidor es virtual y la V-Sync solo hace que el juego la espere.
| SuperTuxKart (versión Windows), 1080p, Proton | Typical | Mostly stable | Steady |
|---|---|---|---|
| Parte de GPU de iGPU Power, 2 pasadas | 85 a 96 fps | 70 a 83 fps | 52 a 69 fps |
| Parte de GPU de iGPU Power, en streaming a Moonlight, 2 pasadas | 83 a 95 fps | 58 a 75 fps | 44 a 58 fps |
| Parte de GPU de iGPU Start, 4 pasadas | 67 a 84 fps | 59 a 71 fps | 45 a 61 fps |
Como comparación, en la misma GPU: unos 95 fps con Wine y 111 fps en Windows 11. Proton es un Wine con los añadidos de Valve; para un juego OpenGL como este, la velocidad es la misma.
El juego usaba de media alrededor del 10 % de las 4 vCPU, alrededor del 30 % con Sunshine capturando y codificando a la vez. Todo el servidor usaba 3,2 GB de RAM durante la prueba (sway, juego, Sunshine).
4. Streaming con Sunshine y Moonlight
Sunshine para Linux captura la pantalla de sway y codifica en la GPU. Su configuración:
capture = wlr
encoder = vaapi
adapter_name = /dev/dri/renderD128
Necesita el controlador multimedia de Intel (intel-media-va-driver-non-free); sin él, Sunshine no
encuentra ningún codificador. Con él:
Creating encoder [h264_vaapi]
vaapi vendor: Intel iHD driver for Intel(R) Gen Graphics - 25.2.3
Emparejamos un cliente Moonlight instalado en un segundo servidor Linux del mismo centro de datos y anotamos sus estadísticas durante la partida:
| Estadística de Moonlight (1080p, H.264, 60 fps) | Valor |
|---|---|
| Imágenes recibidas y mostradas | 59,8 fps |
| Procesamiento en el servidor (captura + codificación), mín / media / máx | 4,2 / 9,3 / 14,8 ms |
| Imágenes perdidas (red o jitter) | 0 % |
| Latencia de red (mismo centro de datos) | 1 ms |
| Tiempo de decodificación en el cliente | 0,29 ms |
Abre la interfaz web de Sunshine mediante un túnel SSH (ssh -L 47990:localhost:47990 usuario@tu-servidor)
en lugar de exponerla en Internet. Sunshine para Linux trae ya una entrada «Steam Big Picture» que
puedes elegir en Moonlight. Tu latencia total dependerá sobre todo de tu conexión a Internet hasta el
servidor (Alemania): una buena fibra en Europa suele añadir de 10 a 30 ms.
Límites que conviene conocer
- Antitrampas: muchos juegos en línea con antitrampas rechazan Proton o las máquinas virtuales. Consulta ProtonDB antes de comprar un juego para esto.
- Es una GPU integrada: adecuada para juegos indie, juegos antiguos y juegos 2D/3D de la década de 2010, no para los grandes juegos AAA recientes en 1080p.
- Sonido: el servidor no tiene tarjeta de sonido. Para tener sonido en Moonlight, ejecuta PipeWire o PulseAudio en la sesión de juego; aquí no probamos el sonido.
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?
Recomendamos iGPU Power (4 vCPU, 14 GB de RAM, el doble de parte de GPU que iGPU Start). Cuando otros servidores usan la GPU, el tiempo de GPU de cada uno sigue su parte: en nuestra prueba, el mismo benchmark pasó de 67 a 84 fps con la parte de Start a 85 a 96 fps con la de Power. iGPU Start (2 vCPU, 8 GB) sigue siendo suficiente para juegos 2D y herramientas ligeras.
¿Lo quieres listo para jugar? Pídelo por correo al hacer el pedido (contact@linuxgpu.eu): podemos entregarte el servidor con Steam, la pantalla virtual y Sunshine ya instalados y configurados. Tú inicias sesión en Steam con tu propia cuenta e instalas Moonlight en tu ordenador, móvil o TV box.
Si un juego no funciona con Proton, la opción Windows 11 (10 €, en un único pago) te da un Windows completo: consulta Windows 11 en la nube con Sunshine y Moonlight.
Ver los planes: iGPU Power cuesta 29,99 € al mes sin IVA.