Blog

WinBoat o Wine: ejecutar aplicaciones de Windows en un servidor Linux con GPU

Instalamos WinBoat (Windows 11 en un contenedor Docker) en un servidor Linux sin pantalla con una Intel UHD 770: 16 minutos de instalación, 4 GB de RAM reservados, sin GPU dentro de Windows. Comparación con Wine, Proton y un servidor Windows 11 completo.

WinBoat o Wine: ejecutar aplicaciones de Windows en un servidor Linux con GPU

Hay dos formas de ejecutar un programa de Windows en Linux. Wine (y Proton, su versión de Valve) traduce las llamadas de Windows a Linux: no hay Windows dentro, y el programa usa los drivers de GPU de Linux. WinBoat hace lo contrario: ejecuta un Windows 11 real en un contenedor Docker (el proyecto dockur/windows, con QEMU/KVM) y muestra cada aplicación de Windows como una ventana de Linux mediante el modo RemoteApp de FreeRDP. Probamos WinBoat en un servidor Linux con GPU sin pantalla y lo comparamos con Wine.

El Windows 11 instalado por WinBoat en el servidor Linux, abierto como escritorio completo por RDP: Windows lista sus adaptadores gráficos y ninguno es la GPU Intel (5 segundos).

Resultados en resumen

  • WinBoat funciona en un servidor sin pantalla: su interfaz es una aplicación Electron que manejamos en una pantalla virtual. Encontró Docker, KVM y FreeRDP e instaló Windows 11 Pro solo.
  • 16 minutos de instalación: 1,5 minutos para descargar Windows 11 de Microsoft (8,5 GB) y 14 minutos de instalación desatendida. Después, 19 GB ocupados en el disco del servidor.
  • 4,2 GB de RAM reservados mientras Windows funciona, unos 0,4 vCPU con Windows en reposo.
  • Sin GPU en Windows: Windows solo ve un «Red Hat VirtIO GPU DOD controller» y el «Microsoft Remote Display Adapter», sin aceleración 3D. WinBoat 0.9.2 no pasa la GPU.
  • Las ventanas de aplicación integradas no funcionaron sin pantalla: la conexión RDP necesita un servidor de sonido, y después las ventanas RemoteApp fallaron (sway) o se quedaron congeladas (Xvfb). El escritorio completo de Windows por RDP sí funcionó.
  • Wine y Proton conservan la GPU: el mismo juego de Windows alcanzó unos 95 fps con Wine y de 85 a 96 fps con Proton, en la misma Intel UHD 770.

Configuración de la prueba

ElementoValor
ServidorLinux (Debian 13), 4 vCPU, 10 GB de RAM, Intel UHD 770 (GPU compartida), kernel 7.3, KVM disponible dentro del servidor (virtualización anidada)
WinBoat0.9.2 (.deb de GitHub), Docker 29.9, FreeRDP 3.15
WindowsWindows 11 Pro, inglés, valores por defecto de WinBoat: 2 núcleos, 4 GB de RAM, disco de 32 GB, imagen dockur/windows:6.05 (800 MB)
Pantallasway headless (Wayland + Xwayland), luego Xvfb para la prueba RemoteApp

1. Instalar WinBoat en un servidor

WinBoat comprueba sus requisitos en un asistente: al menos 4 GB de RAM, KVM, Docker con Compose v2 y FreeRDP 3. Nuestro servidor lo tenía todo, KVM incluido: el servidor es a su vez una máquina virtual, y WinBoat lanza una segunda dentro.

apt install ./winboat-0.9.2-amd64.deb freerdp3-x11
usermod -aG docker,kvm tuusuario

El asistente pide una versión de Windows, un idioma, un nombre de usuario y una contraseña de Windows, y los recursos para Windows. Tras pulsar Install, WinBoat escribe un docker-compose.yml, descarga Windows 11 de Microsoft y lo instala sin más preguntas:

PasoDuración
Descarga de Windows 11 (ISO de 8,5 GB)1 min 30 s
Instalación desatendida de Windows14 min 08 s
Total, de «Install» a «Windows has been installed successfully»15 min 52 s
Interfaz de WinBoat con la lista de aplicaciones de Windows 11, en la pantalla virtual de un servidor Linux
La lista de aplicaciones de WinBoat en la pantalla virtual del servidor: encontró 94 aplicaciones y accesos directos de Windows.

2. Lo que cuesta

RecursoMedido
RAM reservada por el contenedor4,15 GiB, todo el tiempo que Windows funciona
CPU durante la instalaciónde 1 a 2 núcleos
CPU en los 15 minutos tras la instalaciónunos 2 núcleos (Windows termina su configuración)
CPU con Windows en reposounos 0,4 vCPU, picos breves de 1,3
Disco en el servidor19 GB: 8,5 GB de ISO guardada en la carpeta + 11 GB del disco de Windows
Gráfico de barras: RAM en uso, 4,2 GB para el contenedor WinBoat con Windows en reposo, 3,2 GB para todo el servidor Linux ejecutando SuperTuxKart con Proton
En reposo, el Windows de WinBoat ocupa más RAM que todo nuestro servidor Linux ejecutando un juego de Windows con Proton.

En un servidor de 8 GB de RAM, el Windows de WinBoat se queda con la mitad antes de abrir una sola aplicación. Con Wine no hay nada que reservar: solo el programa que ejecutas usa memoria.

3. La GPU dentro de Windows

Abrimos PowerShell en Windows y listamos los adaptadores gráficos:

Name          : Red Hat VirtIO GPU DOD controller
Name          : Microsoft Remote Display Adapter
PowerShell en el Windows 11 de WinBoat listando sus adaptadores gráficos: Red Hat VirtIO GPU DOD controller y Microsoft Remote Display Adapter
Dentro del Windows de WinBoat no hay GPU Intel: un adaptador virtual solo de pantalla y el adaptador de Escritorio remoto.

El contenedor recibe /dev/kvm pero no la GPU, y el driver «DOD» (solo pantalla) no tiene 3D. Así que Windows lo dibuja todo con la CPU: bien para una aplicación ofimática, no para un juego. Los desarrolladores de WinBoat anuncian aceleración por GPU para la versión 1.0. Por eso no ejecutamos el benchmark de SuperTuxKart en WinBoat:

Gráfico de barras: SuperTuxKart en 1080p, 95 fps con Wine, 91 fps con Proton, 111 fps en una VM Windows 11 con el driver Intel y sin GPU en WinBoat
El mismo juego de Windows en la misma GPU: Wine, Proton y un servidor Windows 11 con el driver Intel usan la GPU; el Windows de WinBoat no tiene.

4. Ventanas de aplicación en un servidor sin pantalla

La función principal de WinBoat es mostrar cada aplicación de Windows en su propia ventana de Linux (FreeRDP RemoteApp). En nuestro servidor sin pantalla:

  1. El primer inicio falló (FreeRDP process returned error code '138'): WinBoat pide sonido a FreeRDP mediante PulseAudio, y un servidor no tiene servidor de sonido. Iniciar el servicio PulseAudio de PipeWire en la sesión lo resolvió (apt install pipewire-pulse wireplumber).
  2. En la pantalla virtual de sway (Xwayland), FreeRDP se detuvo entonces con un error X11 BadMatch al abrirse la ventana.
  3. En Xvfb con un gestor de ventanas sencillo, las ventanas del Bloc de notas se abrieron (la lista de ventanas mostraba «Untitled - Notepad») pero su contenido se quedó congelado en la imagen de inicio de sesión de Windows.
  4. El escritorio completo de Windows por RDP funcionó a la primera (vídeo al principio del artículo).
WinBoat en una pantalla X virtual con una ventana RemoteApp del Bloc de notas congelada en la imagen de inicio de sesión de Windows
La ventana RemoteApp del Bloc de notas, abierta por WinBoat en Xvfb, congelada en la imagen de inicio de sesión.

WinBoat está pensado para un PC de escritorio Linux con pantalla real. En un servidor, usa el escritorio completo de Windows (Escritorio remoto desde tu ordenador, por un túnel SSH al puerto 47300) o ejecuta directamente dockur/windows con Docker Compose: es lo que WinBoat usa por debajo.

¿WinBoat, Wine/Proton o Windows 11?

Wine / ProtonWinBoatOpción Windows 11
Qué se ejecutael programa de Windows, en Linuxun Windows completo en un contenedorWindows 11 Pro en todo el servidor
GPU para el programasí (OpenGL, Vulkan, DXVK)nosí (driver Intel)
SuperTuxKart 1080punos 95 fps (Wine), de 85 a 96 fps (Proton)no ejecutado, sin GPU111 fps
RAM reservadasolo la del programa4 GB para Windowstodo el servidor
Instalaciónminutos16 min, automáticahecha por nosotros
Ideal parajuegos y programas que se sabe que funcionanaplicaciones ofimáticas y de negocio que no van con Winetodo lo demás

Nuestro consejo:

  • Juegos: Wine o Proton, en la GPU. Consulta Steam y Proton en un servidor GPU en la nube y juegos de Windows con Wine.
  • Una aplicación ofimática o de negocio de Windows que no funciona con Wine: WinBoat (o dockur/windows) sirve, siempre que le des 4 GB de RAM y uses el escritorio completo de Windows en un servidor.
  • Todo lo demás, o un programa de Windows que necesita la GPU: la opción Windows 11 (10 €, en un único pago), con el driver gráfico de Intel.

WinBoat necesita KVM dentro de tu servidor (virtualización anidada). Funcionó en nuestro servidor de prueba; pídenos por correo que comprobemos que está activada en el tuyo. Con 4 GB ocupados por Windows, elige iGPU Power (4 vCPU, 14 GB de RAM) en lugar de iGPU Start (2 vCPU, 8 GB).

¿Lo quieres listo para usar? Pídelo por correo al hacer el pedido (contact@linuxgpu.eu): podemos entregarte el servidor con Wine, WinBoat o Steam ya instalados y configurados en el lado del servidor.

Sistemas listos para jugar desde el primer momento. Los sistemas que instalamos por defecto ya están preparados para esto: 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 por la GPU. Ningún driver que buscar: instala tu juego y Sunshine, y juega.

Pruébalo

Ver los planes: iGPU Power cuesta 29,99 € al mes sin IVA, iGPU Start 14,99 €.