
If enshrouded_server.exe dies under Proton with System.PlatformNotSupportedException: Video driver not supported at Xalia.Sdl.WindowingSystem.Create(), the Enshrouded server itself never got the chance to start. The crash comes from Xalia, a Proton component that tries to set up a window on a machine with no display, and you switch it off with the environment variable PROTON_USE_XALIA=0.
This hits people who run the Windows-only Enshrouded dedicated server on Linux through Proton: in a Docker container, on a Pterodactyl node, or on a plain headless VPS. Below is what is going on and how to set the switch in each kind of setup.
What the error looks like
The server is started with something like proton run ./enshrouded_server.exe, and the console stops with:
System.PlatformNotSupportedException: Video driver not supported
at Xalia.Sdl.WindowingSystem.Create()
There may be two spaces between "driver" and "not". Xalia's own release notes quote the message that way, and so does a public report of the same crash on an Astroneer server, which shows the rest of the trace as well. The game is different but every frame in the trace starts with Xalia., which tells you the problem sits in the same place.
Xalia is part of Proton, not part of Enshrouded
Proton is Valve's tool for running Windows games on Linux, built on Wine. Xalia is one of the programs it brings along. Valve's README describes it as "a program that can add a gamepad UI for some keyboard/mouse interfaces". Its release notes are full of game launchers and settings tools: windows built for keyboard and mouse that Xalia makes usable with a controller.
To draw that gamepad UI, Xalia uses SDL, a library that needs a video driver, normally an X11 or Wayland display to talk to. A container or a headless server has no display. SDL cannot initialise, Xalia throws PlatformNotSupportedException, and because this happens while Proton starts up, the Enshrouded server goes down with it.
Proton turns Xalia on unless you tell it otherwise. In the Proton 10 launch script, if PROTON_USE_XALIA is not set, the script sets it to 1 itself (limited to windows Xalia considers supported). So you can hit this crash with a stock Proton setup on a box without a display. It does not mean you misconfigured something.
Why -batchmode and -nographics do not help
It is tempting to add a "headless" flag after the executable, but those flags only go to enshrouded_server.exe. Xalia is a separate program that Proton starts next to the game. In the Astroneer log you can even see DXVK report Game: xalia.exe for that process. Xalia never reads the game's arguments, so no game flag can stop it. Keen's server documentation does not list either flag for Enshrouded anyway.
In that same Astroneer report, the user also tried xvfb-run, SDL_VIDEODRIVER=dummy and a WINEDLLOVERRIDES entry for Xalia, and still did not get a working start. The DXVK and Vulkan errors in that log come right after the Game: xalia.exe line, so as far as the log shows they belong to the Xalia process too. Valve's documented switch is simpler than any of those workarounds.
The fix: PROTON_USE_XALIA=0
Valve's Proton README lists the switch in its table of runtime options, next to the compat config strings xalia and noxalia:
PROTON_USE_XALIA: Enable Xalia, a program that can add a gamepad UI for some keyboard/mouse interfaces, or set to 0 to disable. The default is to enable it dynamically based on window contents.
The same option appears in the READMEs of Proton 9.0, Proton 10.0 and Proton Experimental. A dedicated server has no use for a gamepad UI, so turning Xalia off costs you nothing. The variable has to be in the environment of the process that runs proton. Here is how to get it there.
Plain shell start
Put it in front of the command:
cd /home/enshrouded/server
PROTON_USE_XALIA=0 proton run ./enshrouded_server.exe
Or export it first, which is easier in a start script:
export PROTON_USE_XALIA=0
cd /home/enshrouded/server
proton run ./enshrouded_server.exe
If proton is not on your PATH, use the full path to the proton script inside your Proton folder. Outside the Steam client, Proton also needs STEAM_COMPAT_DATA_PATH and STEAM_COMPAT_CLIENT_INSTALL_PATH set; our Linux guide walks through those.
For a systemd service, add a line to the [Service] section and reload:
Environment=PROTON_USE_XALIA=0
Docker
With docker run, pass it with -e:
docker run -d --name enshrouded -e PROTON_USE_XALIA=0 your-enshrouded-image
With Docker Compose, add it under environment: for the service:
services:
enshrouded:
image: your-enshrouded-image
environment:
PROTON_USE_XALIA: "0"
Then run docker compose up -d, which recreates the container because its configuration changed. A container started with docker run cannot get a new environment variable afterwards, so remove it and start it again with the -e flag. To check that the variable is really inside, run docker exec enshrouded env and look for PROTON_USE_XALIA=0. Use your own container name, and keep the server files on a volume so recreating the container does not touch the world.
Pterodactyl egg variable
Pterodactyl hands egg variables to the container as environment variables. Its egg documentation says the variable "is passed through in the environment". That makes an egg variable the cleanest fix, because every server on the egg gets it:
- In the admin area, open Nests, pick the nest with your Enshrouded egg, open the egg and go to the Variables tab.
- Click Create New Variable. Set the Name to
Disable Proton Xalia, the Environment Variable toPROTON_USE_XALIA, the Default Value to0and the Input Rules torequired|string|in:0,1. Leave Users Can View and Users Can Edit off, so nobody turns it back on by accident. - Save, then open an existing server's Startup page in the admin area and check that
PROTON_USE_XALIAis listed with the value0. If an older server does not show it, set it there. - Restart the server.
For a quick test on a single server you can also put the variable in front of the startup command, as in PROTON_USE_XALIA=0 proton run ./enshrouded_server.exe. That only works if your image runs the startup line through a shell. The egg variable works either way.
Check that it worked
Start the server and watch the console. According to Keen's Dedicated Server FAQ, a server that is fully up prints:
[Session] 'HostOnline' (up)!
If you get there, players can find the server in the in-game list with the "Show dedicated server" filter on. If the server now stops at a different error, Xalia is out of the way and you are looking at a separate problem. Read the first error that appears after Proton's own startup lines, because that is the one that matters.
Newer Proton builds may show a different message
Xalia changed this message itself. The release notes for Xalia 0.4.9 (21 April 2026) say: "When SDL fails to initialize, an error message from SDL will be logged, instead of "Video driver not supported"." Which Xalia version you get depends on the Proton build you run. On a newer one you may see SDL's own error text instead of the line in this post. If that error shows up right as Proton starts and points to Xalia or SDL, it is the same cause, and PROTON_USE_XALIA=0 is the same fix.
Rather not run Proton yourself?
Space-Node rents Enshrouded server hosting on shared AMD Ryzen 9 CPUs (3900X-class in Europe, Canada and India, 7950X3D in the USA, 5950X in Singapore and Australia), with DDoS protection, in 9 regions. Keen puts the server process at about 4.4 GB of RAM when idle, so for Enshrouded 1.0 we suggest starting on Flame: 8 GB for €10.20 a month, up to 8 players. Beacon (12 GB, €15.80) goes up to the full 16 players, with Summit (16 GB, €20.50) and Ancient (24 GB, €30.90) above it. If this error ever shows up on a Space-Node server, send the console output to our support team.
Related guides: Enshrouded 1.0 server update guide | Enshrouded server on Linux with Proton or Wine | Enshrouded dedicated server setup guide | Every Enshrouded server setting explained