Steam e Proton num servidor cloud com GPU, em streaming com Sunshine e Moonlight
A Steam Deck e a nova Steam Machine da Valve correm jogos Windows em Linux com o Proton, a versão do Wine da Valve. O mesmo software funciona num servidor Linux num centro de dados: instale o Steam, deixe o Proton correr os seus jogos Windows na GPU do servidor e jogue em qualquer ecrã com o Sunshine (no servidor) e o Moonlight (do seu lado). Testámos num servidor Linux com GPU Intel UHD 770.
Resultados em resumo
- O cliente Steam arranca num servidor sem ecrã: cerca de 3 minutos entre o primeiro arranque e a janela de início de sessão, num ecrã Wayland virtual desenhado pela GPU.
- O Proton corre o jogo Windows na GPU: 85 a 96 fps em 1080p (V-Sync desligado) no benchmark do SuperTuxKart, perto do Wine (cerca de 95 fps) e do Windows 11 (111 fps) na mesma GPU.
- O streaming com o Sunshine não abranda o jogo: 83 a 95 fps durante um stream 1080p a 60 fps para o Moonlight, 9,3 ms de processamento no servidor em média, nenhuma imagem perdida.
- Não podíamos iniciar sessão no Steam para este teste, por isso o Proton foi corrido com o umu-launcher, a ferramenta que corre o Proton da Valve sem o cliente Steam. Com o Steam, inicia sessão com a sua própria conta e ativa o Steam Play.
- Para jogar, escolha o iGPU Power: com a parte de GPU do iGPU Start, enquanto outros servidores usavam a GPU, o mesmo benchmark desceu para 67 a 84 fps.
Configuração do teste
| Elemento | Valor |
|---|---|
| Servidor | Linux (Debian 13), 4 vCPU (como o iGPU Power), 10 GB de RAM, Intel UHD 770 (GPU partilhada), kernel 7.3, Mesa 25.0 |
| Ecrã | sway em modo headless + Xwayland, 1920 × 1080, desenhado pela GPU |
| Steam | pacote Debian steam-installer (cliente Steam, contrib/non-free) |
| Proton | umu-launcher 1.4.4 (release do GitHub), que descarregou o UMU-Proton 10.0-4 e o Steam Linux Runtime 3.0 |
| Jogo | SuperTuxKart 1.5, versão Windows, benchmark integrado (corrida gravada, 38 s), OpenGL, V-Sync desligado |
| Streaming | Sunshine 2026.914 no servidor (captura Wayland, H.264 codificado pela GPU com VA-API), Moonlight 6.2 num segundo servidor Linux, 1080p 60 fps |
| Rede | cliente e servidor no mesmo centro de dados: pela Internet, junte a latência da sua ligação |
Outras máquinas virtuais usaram muito a GPU partilhada durante todo o teste (entre dois terços e 87 % do tempo da GPU quando o nosso servidor estava parado): os valores abaixo são os de uma GPU partilhada ocupada, não de uma GPU vazia.
1. Um ecrã para o Steam num servidor
O Steam precisa de um ecrã e recusa-se a correr como root. Criámos um utilizador normal e lançámos o sway, um compositor Wayland que funciona sem monitor e desenha com a GPU, mais o Xwayland para o Steam e os jogos Windows (o Xvfb desenharia no 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 utilizador de jogo:
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 &
No primeiro arranque, o Steam descarrega e atualiza o cliente (1,4 GB em ~/.local/share/Steam) e
depois mostra a janela de início de sessão, cerca de 3 minutos e 20 segundos após o primeiro arranque.
Com a sua própria conta: inicie sessão (da primeira vez, através do Moonlight ou de um ambiente de
trabalho remoto), depois em Steam → Definições → Compatibilidade, ative o Steam Play para todos
os outros títulos e escolha uma versão do Proton. Os jogos Windows instalam-se e arrancam então como
jogos Linux. Para jogar com comando no sofá, arranque o Steam em modo Big Picture (steam -gamepadui),
que é também a interface da Steam Machine.
2. Proton sem conta Steam: umu-launcher
Não era possível iniciar sessão no Steam para este teste, por isso usámos o umu-launcher, o lançador que o Lutris e o Heroic usam para correr o Proton fora do Steam. Corre um jogo Windows com o Proton dentro do mesmo contentor Steam Linux Runtime que o Steam usa:
export WINEPREFIX=~/prefixes/stk GAMEID=umu-default
./umu-run supertuxkart.exe --screensize=1920x1080 --fullscreen --benchmark
Na primeira execução, o umu-launcher descarregou o UMU-Proton 10.0-4 (1,4 GB descomprimido) e o Steam Linux Runtime 3.0 “sniper” (800 MB) e criou o prefixo Windows (900 MB), em menos de um minuto com a ligação do servidor. O registo do jogo confirma que o Proton desenha na 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 desligado no jogo (swap-interval-vsync="0" no config.xml do SuperTuxKart): o ecrã do
servidor é virtual, e o V-Sync só obriga o jogo a esperar por ele.
| SuperTuxKart (versão Windows), 1080p, Proton | Typical | Mostly stable | Steady |
|---|---|---|---|
| Parte de GPU do iGPU Power, 2 execuções | 85 a 96 fps | 70 a 83 fps | 52 a 69 fps |
| Parte de GPU do iGPU Power, em streaming para o Moonlight, 2 execuções | 83 a 95 fps | 58 a 75 fps | 44 a 58 fps |
| Parte de GPU do iGPU Start, 4 execuções | 67 a 84 fps | 59 a 71 fps | 45 a 61 fps |
Para comparação, na mesma GPU: cerca de 95 fps com o Wine e 111 fps no Windows 11. O Proton é um Wine com os acrescentos da Valve; para um jogo OpenGL como este, a velocidade é a mesma.
O jogo usou em média cerca de 10 % dos 4 vCPU, cerca de 30 % com o Sunshine a capturar e codificar ao mesmo tempo. O servidor inteiro usou 3,2 GB de RAM durante o teste (sway, jogo, Sunshine).
4. Streaming com Sunshine e Moonlight
O Sunshine para Linux captura o ecrã do sway e codifica na GPU. A configuração:
capture = wlr
encoder = vaapi
adapter_name = /dev/dri/renderD128
Precisa do controlador multimédia da Intel (intel-media-va-driver-non-free); sem ele, o Sunshine não
encontra nenhum codificador. Com ele:
Creating encoder [h264_vaapi]
vaapi vendor: Intel iHD driver for Intel(R) Gen Graphics - 25.2.3
Emparelhámos um cliente Moonlight instalado num segundo servidor Linux do mesmo centro de dados e anotámos as estatísticas durante o jogo:
| Estatística do Moonlight (1080p, H.264, 60 fps) | Valor |
|---|---|
| Imagens recebidas e mostradas | 59,8 fps |
| Processamento no servidor (captura + codificação), mín / média / máx | 4,2 / 9,3 / 14,8 ms |
| Imagens perdidas (rede ou jitter) | 0 % |
| Latência de rede (mesmo centro de dados) | 1 ms |
| Tempo de descodificação no cliente | 0,29 ms |
Abra a interface web do Sunshine através de um túnel SSH (ssh -L 47990:localhost:47990 utilizador@o-seu-servidor)
em vez de a expor na Internet. O Sunshine para Linux já traz uma entrada “Steam Big Picture” que pode
escolher no Moonlight. A sua latência total dependerá sobretudo da sua ligação à Internet até ao
servidor (Alemanha): uma boa fibra na Europa acrescenta normalmente 10 a 30 ms.
Limites a conhecer
- Anti-batota: muitos jogos online com anti-batota recusam o Proton ou máquinas virtuais. Consulte o ProtonDB antes de comprar um jogo para isto.
- É uma GPU integrada: adequada para jogos indie, jogos antigos e jogos 2D/3D da década de 2010, não para os grandes jogos AAA recentes em 1080p.
- Som: o servidor não tem placa de som. Para ter som no Moonlight, corra o PipeWire ou o PulseAudio na sessão de jogo; não testámos o som aqui.
Sistemas prontos para jogar logo à partida. Os sistemas que instalamos por predefinição já estão otimizados para isso: Debian 13 com um kernel recente (7.3), os drivers de GPU da Intel e o Mesa (OpenGL, Vulkan, codificação de vídeo VA-API), e o Windows 11 (opção) com o driver gráfico da Intel e o Ambiente de Trabalho Remoto renderizado na GPU. Nada de procurar drivers: instale o seu jogo e o Sunshine, e jogue.
Que plano?
Recomendamos o iGPU Power (4 vCPU, 14 GB de RAM, o dobro da parte de GPU do iGPU Start). Quando outros servidores usam a GPU, o tempo de GPU de cada um segue a sua parte: no nosso teste, o mesmo benchmark passou de 67 a 84 fps com a parte do Start para 85 a 96 fps com a do Power. O iGPU Start (2 vCPU, 8 GB) continua a chegar para jogos 2D e ferramentas leves.
Quer o servidor pronto a jogar? Peça-o por e-mail ao encomendar (contact@linuxgpu.eu): podemos entregar-lhe o servidor com o Steam, o ecrã virtual e o Sunshine já instalados e configurados. Inicia sessão no Steam com a sua própria conta e instala o Moonlight no seu computador, telemóvel ou box de TV.
Se um jogo não funcionar com o Proton, a opção Windows 11 (10 €, pagos uma única vez) dá-lhe um Windows completo: veja Windows 11 na nuvem com Sunshine e Moonlight.
Ver os planos: o iGPU Power custa 29,99 € s/ IVA por mês.