
Keen Games ships the Enshrouded dedicated server for Windows only, and that did not change with 1.0. Its installation article says: "For now, only Windows is supported. Linux support is planned for later." That article was last edited in February 2024, and there is no native Linux server yet.
You can still run enshrouded_server.exe on a Linux machine through Wine or Proton. That is how we run it at Space-Node, but Keen does not support or document this route. The download and configuration steps below follow Valve's and Keen's documentation. The systemd and Docker parts are outlines: they show the shape of a working setup, but we have not tested them in exactly this form, so check them on your own box before you rely on them.
What Steam actually ships
The server is Steam app 2278520, the "Enshrouded Dedicated Server Tool". It is free to download, installs into a folder called EnshroudedServer by default, and its start file is enshrouded_server.exe. In Steam's app data, the server content depot is marked Windows only and is about 8 GB on disk. The app also lists a small Linux depot, but that is the shared Steamworks redistributable, not a Linux server.
The 1.0 server build went live on 15 October 2026, within minutes of the game. If you already run a server, our Enshrouded 1.0 update guide covers backups and the choice between your old world and a fresh one.
Hardware: RAM, CPU and disk
Keen's server FAQ gives these figures for the server process:
- About 4.4 GB of RAM when idle.
- Up to 100 MB more per player.
- "In total the server should not use more than 6GB of physical RAM."
Wine or Proton and the operating system come on top of that. Keen gives no number for that overhead, so measure it on your own machine once the server runs.
For a whole machine, Keen's recommended specifications are a 6 core, 12 thread CPU at 3.2 GHz and 16 GB of RAM for 4 to 6 players, and an 8 core, 16 thread CPU at 3.7 GHz with 16 GB for 16 players. Both tiers ask for an SSD with 30 GB free and 2 Mbit/s of upload per player.
All of these numbers were written before 1.0. The 1.0 changelog says Keen "reduced the memory needed for server and client communication", but there are no new official figures yet.
Step 1: download the server with SteamCMD
Valve's SteamCMD page recommends your distribution's steamcmd package where one exists. The manual install on Debian or Ubuntu starts with one library and a separate user for the server, so it does not run as root:
sudo apt-get install lib32gcc-s1
sudo useradd -m enshrouded
sudo -iu enshrouded
Then, as that user, fetch SteamCMD itself:
mkdir ~/steamcmd && cd ~/steamcmd
curl -sqL "https://client-update.steamstatic.com/installer/steamcmd_linux.tar.gz" | tar zxvf -
Now download the server. Because the server content is Windows only, SteamCMD on Linux has to be told to fetch Windows files. Valve's page calls this cross-platform installation: "It is possible to choose the platform for which SteamCMD should download files, even if it isn't the platform it is currently running on. This is done using the @sSteamCmdForcePlatformType variable."
~/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /home/enshrouded/server +login anonymous +app_update 2278520 validate +quit
Use steamcmd instead of ~/steamcmd/steamcmd.sh if you installed the package. Keep +force_install_dir before +login, as Valve's instructions do. When it finishes, /home/enshrouded/server holds enshrouded_server.exe. Run the same line again whenever Keen ships a new server build, with the server stopped.
Step 2: Wine or Proton
Both are ways to run a Windows program on Linux, and Keen supports neither, so this is a practical choice rather than a right or wrong one.
Wine is the base layer, available from your distribution or from WineHQ's own packages. A Wine start is short and has fewer parts that can break.
Proton is Valve's tool built on Wine. Its README describes it as "a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It uses Wine to facilitate this." It adds Valve's patches and extra components, and game panels use it too: Pterodactyl's community Proton image, for example, starts servers with a proton run command. Outside the Steam client you have to give Proton a few environment variables yourself, and one of its components, Xalia, needs to be switched off on a server without a display.
If your tooling already uses one of them, stay with it. If a server will not start under one, trying the other is a fair next step.
Step 3a: start the server with Proton (outline)
Valve distributes Proton through the Steam client. On a headless server without Steam, one option is a community build such as GE-Proton, which is published as a download on GitHub. Proton's launcher is a Python 3 script called proton in the top of that folder. The outline below assumes you unpacked it to /home/enshrouded/proton; adjust the path to yours.
export STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/enshrouded/steamcmd
export STEAM_COMPAT_DATA_PATH=/home/enshrouded/proton-data
export PROTON_USE_XALIA=0
mkdir -p "$STEAM_COMPAT_DATA_PATH"
cd /home/enshrouded/server
/home/enshrouded/proton/proton run ./enshrouded_server.exe
What each line is for:
STEAM_COMPAT_DATA_PATHis where Proton keeps its Wine prefix (in apfxfolder inside it). The Proton 10 launch script stops with "No compat data path?" when this variable is missing.STEAM_COMPAT_CLIENT_INSTALL_PATHnormally points at the Steam client. The same script reads it while it sets up the prefix, and copies Steam client files from it only if it finds them. On a server without the Steam client, this outline points it at the SteamCMD folder.PROTON_USE_XALIA=0turns off Xalia, Proton's gamepad UI helper. Without a display it crashes at start withVideo driver not supported, and it takes the server down with it. Our Video driver not supported fix explains the cause, quotes Valve's documentation, and shows the same setting for Docker and Pterodactyl.cdinto the server folder first, so the relative save and log paths from the config land next to the.exe.
Step 3b: start the server with Wine (outline)
export WINEPREFIX=/home/enshrouded/wine-prefix
export WINEDEBUG=-all
cd /home/enshrouded/server
wine ./enshrouded_server.exe
WINEPREFIX keeps the Wine setup for this server in its own folder, and WINEDEBUG=-all silences most of Wine's debug output so the server's own lines are easier to read. Some distributions call the 64-bit loader wine64. If Wine complains that it cannot load a display driver, the usual workaround is to start it under xvfb-run, which gives it a virtual X display.
PROTON_USE_XALIA is a Proton setting, read by Proton's launch script, and a plain Wine start does not go through that script.
Step 4: config, ports and firewall
On its first start, the server writes enshrouded_server.json next to the .exe. Stop the server before you edit it. Our server settings guide goes through every field, from user group passwords to the gameplay presets.
Network facts from Keen's server FAQ and its network troubleshooting article:
- The only port Keen documents is the query port:
"queryPort": 15637. - "Additionally, Steam is using the ports described in their Required Ports for Steam article."
- The server uses IPv4. Leave
"ip"at0.0.0.0unless you need to bind one address.
Keen does not say whether the query port is UDP or TCP. Until it does, open the port for both. With ufw, a rule without a protocol does exactly that:
sudo ufw allow 15637
With plain nftables or iptables rules, add one rule for UDP and one for TCP, plus the Steam ports from Valve's article. Current Keen docs list no separate game port and no gamePort field, although some older guides mention one. If players cannot find the server in the in-game list, they can add it as a favourite in the Steam client under View, Game Servers, Favorites, using the server's IP and query port, for example 203.0.113.10:15637.
Step 5: where saves and logs go
From Keen's configuration article and server FAQ:
- The world is saved in
saveDirectory, which is./savegameby default. - Logs go to
./logs, and older logs are archived in./logs/backup. - The config file and crash dumps sit next to the
.exe. - Character saves are never stored on the dedicated server. They stay on each player's PC.
Both paths are relative, so start the server from inside its folder. Then the world ends up in /home/enshrouded/server/savegame, not somewhere inside the Wine or Proton prefix. That also means you can delete and rebuild a broken prefix without touching the world.
Keen's documentation disagrees with itself on how often the server saves: the server FAQ says every 5 minutes, the save game article describes rolling copies every 10 minutes. Both texts are older than 1.0, which brought a new save format. Back up the whole folder rather than single files, ideally while the server is stopped:
tar czf ~/enshrouded-backup-$(date +%F).tar.gz -C /home/enshrouded/server savegame enshrouded_server.json
systemd service (outline)
This runs the Proton start from step 3a as a service. Save it as /etc/systemd/system/enshrouded.service:
[Unit]
Description=Enshrouded dedicated server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=enshrouded
WorkingDirectory=/home/enshrouded/server
Environment=STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/enshrouded/steamcmd
Environment=STEAM_COMPAT_DATA_PATH=/home/enshrouded/proton-data
Environment=PROTON_USE_XALIA=0
ExecStart=/home/enshrouded/proton/proton run ./enshrouded_server.exe
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
For Wine, swap the three Environment= lines for WINEPREFIX and WINEDEBUG, and point ExecStart at /usr/bin/wine ./enshrouded_server.exe (check the path with which wine). Then:
sudo systemctl daemon-reload
sudo systemctl enable --now enshrouded
journalctl -u enshrouded -f
The server is up when Keen's line [Session] 'HostOnline' (up)! appears, either in the journal or in the newest file under ./logs. Keen does not document how the Windows server reacts to a Linux stop signal under Wine or Proton, so take your backups from a stopped server, and do not count on a final save at shutdown.
Docker (outline)
A container for Enshrouded needs SteamCMD, Wine or Proton, and a start script that runs the steps above. Community images exist; whichever you use, check that it sets PROTON_USE_XALIA=0 if it runs Proton. A docker run line for such an image looks like this:
docker run -d --name enshrouded \
--network host \
-e PROTON_USE_XALIA=0 \
-v /srv/enshrouded:/home/steam/enshrouded \
--restart unless-stopped \
your-enshrouded-image
Replace your-enshrouded-image with the image you picked, and the right side of the -v mount with the folder that image uses for the server files. Host networking is a deliberate choice in this outline: Keen does not say which protocol the query port uses, and Steam needs its own ports, so sharing the host's network avoids guessing at port mappings. The cost is less network isolation. Give the container time to stop with docker stop -t 60 enshrouded rather than the default 10 seconds.
Keeping it updated
Each new server build means: stop the server, back up the save folder, run the SteamCMD line from step 1 again, start the server and wait for HostOnline. Players on a newer game version see an outdated server with a version mismatch note in the server list.
Or let Space-Node run it
If you would rather skip SteamCMD, Proton and service files, our Enshrouded server hosting runs the same Windows server on Linux nodes through Proton, 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's 4.4 GB idle figure is why we suggest Flame as the starting plan for 1.0: 8 GB for €10.20 a month, up to 8 players. Beacon (12 GB, €15.80) goes up to the full 16 players, and Summit (16 GB, €20.50) and Ancient (24 GB, €30.90) add headroom.
Related guides: Enshrouded 1.0 server update guide | Fix: Video driver not supported | Enshrouded dedicated server setup guide | Every Enshrouded server setting explained