Workload · Hosting a Mordhau community server

Host a Mordhau dedicated server your community can rely on

To host a Mordhau dedicated server, you install the server files with SteamCMD (app 629800, no Steam purchase needed), start MordhauServer.sh with a map name, and let players reach ports 7777, 27015 and 15000. Admins, the player cap and your map list all live in one file, Game.ini. One thing to know up front: Triternion, the studio behind Mordhau, has not published a hosting guide, so the detailed steps here lean on the player-run Mordhau Wiki and are checked against the studio's own patch notes on Steam wherever those cover the same ground.

The short version
  1. Server files from SteamCMD with an anonymous login
  2. Players need 7777, 27015 and the 15000 beacon open
  3. Stop the server before you touch Game.ini
  4. Mods are mod.io IDs on Mods= lines

What you are setting up, and who wrote the manual

Your server is a separate program from the game. On Linux it is launched by a small script, MordhauServer.sh, which runs the real program, MordhauServer-Linux-Shipping, from the Binaries/Linux folder of the install. Settings go into two text files, Game.ini and Engine.ini, under Mordhau/Saved/Config/LinuxServer.

Those paths come from community sources, not from Triternion. The Mordhau Wiki on Fandom says it is written and kept up by players, and its current hosting guide hands Linux users over to LinuxGSM; an older revision of that guide walked through Linux by hand, and LinuxGSM's own config uses the same folders. Wherever Triternion's patch notes speak to a setting, such as the beacon port or how mods are added, this page goes with them.

The doors players knock on

Your firewall decides whether people can join. The wiki lists four defaults, and each can be moved with a launch switch:

  • 7777, TCP and UDP: the game itself (-Port=). Open it.
  • 27015, TCP and UDP: answers the server browser (-QueryPort=). Open it, or your server stays invisible.
  • 15000, TCP and UDP: the beacon (-BeaconPort=). Triternion's Patch #4 notes say players now reserve a slot through it before loading in, and that owners have to keep it reachable. Open it.
  • 7778, TCP: RCON, the remote admin console (RconPort= in Game.ini). Keep this one shut and reach it through SSH, as shown further down.

Will one machine keep up?

It depends on your player cap and tick rate, and nobody publishes hardware figures for them, Triternion included. What the wiki does say: more than 64 players tends to cause engine performance trouble, and pushing players and tick rate up at the same time makes it fall off fast. So treat your first full match as the test. Fill the server, type stats over RCON to see average and top tick rates, and keep an eye on top while it runs.

Pick an Intel or AMD machine. That is our inference rather than anything the wiki states: Valve documents SteamCMD as a 32-bit x86 program, and no source we read mentions ARM. So skip the ARM servers, including the small ARM cartridge, which is limited to Ubuntu 16.04 and 18.04.

What you get from our game server machines: the whole box with root access, an unmetered port that comes as 500 Mbps or 1 Gbps depending on the line, one IPv4, and a port that is not shared with any other customer at the access switch. On rack servers and blades you also get a browser-based remote console after you set up a console login in the dashboard, handy if a reboot goes wrong. A server already in the rack is ready in about 30 minutes, though payment verification can add time; a custom build is 4 to 24 hours when we hold the parts and longer when they must be bought in. Machines already racked are listed on instant servers.

Getting it installed

Start from Ubuntu or Debian (see Linux servers) and work as your own sudo user. You will create a separate mordhau user so the game never runs with root rights.

  1. Install SteamCMD's 32-bit library, create the user, and download SteamCMD into its home.
  2. Pull the server files: force_install_dir first, then the anonymous login, then app_update 629800 validate.
  3. Switch on IPv6 in ufw before writing any rule, allow SSH, enable the firewall, and only then open the three player ports.
  4. Leave 7778 closed.
sudo apt update && sudo apt install -y lib32gcc-s1 curl ufw
sudo useradd -m -s /bin/bash mordhau
sudo -u mordhau bash -c 'mkdir -p /home/mordhau/steamcmd && cd /home/mordhau/steamcmd && curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxf -'
sudo -u mordhau bash -c '/home/mordhau/steamcmd/steamcmd.sh +force_install_dir /home/mordhau/game +login anonymous +app_update 629800 validate +quit'
sudo sed -i 's/^IPV6=.*/IPV6=yes/' /etc/default/ufw
sudo ufw allow OpenSSH
sudo ufw --force enable
sudo ufw allow 7777
sudo ufw allow 27015
sudo ufw allow 15000

If the server later refuses to start and names a missing library, install whichever package provides it. An old version of the wiki guide listed a handful (for example libnss3), but that list is several years old.

Keeping it running and patched

A systemd service starts the server at boot, brings it back if it exits, and checks for a Mordhau update each time it starts. Create /etc/systemd/system/mordhau.service with:

[Unit]
Description=Mordhau community server
After=network-online.target
Wants=network-online.target

[Service]
User=mordhau
Group=mordhau
WorkingDirectory=/home/mordhau/game
ExecStartPre=-/home/mordhau/steamcmd/steamcmd.sh +force_install_dir /home/mordhau/game +login anonymous +app_update 629800 +quit
ExecStart=/bin/bash /home/mordhau/game/MordhauServer.sh SKM_Contraband -log -Port=7777 -QueryPort=27015 -BeaconPort=15000
KillSignal=SIGINT
Restart=always
RestartSec=10
TimeoutStartSec=1800

[Install]
WantedBy=multi-user.target
  1. Run sudo systemctl daemon-reload and then sudo systemctl enable --now mordhau.
  2. Give it a minute to finish loading. According to the Patch #22 Hotfix 1 notes from Triternion, a fresh server writes its default settings into Game.ini on the first run.
  3. Stop it with sudo systemctl stop mordhau before you edit anything.

A few details are worth knowing. The map name has to come first on the launch line, the wiki says. That the script passes the map and your switches on to the real program is our own reading, not something a source spells out: the wiki's older guide gives port switches to the script, while its sample unit and LinuxGSM launch MordhauServer-Linux-Shipping directly, with Mordhau placed ahead of the map. If your server comes up on the wrong map, replace the script in ExecStart with that program from the Binaries/Linux folder, putting Mordhau as its first argument. The minus in front of ExecStartPre means a failed update check still lets the server start, but it does nothing for an update that hangs; that case is handled by TimeoutStartSec=1800, because systemd's usual 90-second limit counts the update too. The server never patches itself, according to the wiki, so after a Mordhau patch you simply run sudo systemctl restart mordhau. And since Restart=always revives the process whatever made it exit, an RCON shutdown will come straight back: use systemctl when you really want it off.

Making it yours: name, admins and maps

With the server stopped, open /home/mordhau/game/Mordhau/Saved/Config/LinuxServer/Game.ini as the game user (sudo -u mordhau nano followed by that path). The stop matters: the wiki explains that the server saves whatever it holds in memory over this file when it shuts down, so edits made while it runs get lost. Add these keys under the headings already in the file instead of pasting duplicate headings:

[/Script/Mordhau.MordhauGameSession]
ServerName=Our Mordhau Community
MaxSlots=32
ServerPassword=
Admins=YOUR_PLAYFAB_ID
Admins=FRIENDS_PLAYFAB_ID
RconPassword=pick-a-long-random-phrase
RconPort=7778

[/Script/Engine.GameSession]
MaxPlayers=32

[/Script/Mordhau.MordhauGameMode]
MapRotation=SKM_Contraband
MapRotation=FL_Grad
MapRotation=TDM_ThePit
MapRotation=FFA_Camp

Lock it down afterwards with chmod 600, run as the game user, so nobody else on the machine can read your RCON password, and start the service again.

  • Finding a PlayFab ID: join your server, open the console with the backtick key and type PlayerList. If you only know someone's SteamID64, LookupPlayer turns it into the PlayFab ID.
  • Admin password: the wiki offers AdminPassword as an alternative, but cautions that whoever has it can add more admins without asking you. The Admins= list is safer.
  • Player cap: the wiki sets both MaxSlots and MaxPlayers, so change them together.
  • Map names: use the map-name list on the wiki. The prefix gives the mode, for instance FL for Frontline, SKM for Skirmish, INV for Invasion and HRD for Horde.

Mods, remote admin and a second server

Mods. Find the mod on mod.io and copy its resource ID. Since Patch #18, Triternion's notes say a server installs mods from one Mods= line per ID under [/Script/Mordhau.MordhauGameSession], with no mod.io token needed. Some server-side mods ask to be listed as a server actor in SpawnServerActorsOnMapLoad= under [/Script/Mordhau.MordhauGameMode] instead. For a modded map, the name that goes in your rotation is whatever its author gives on mod.io.

Remote admin. RCON uses the same protocol as Source engine servers, so a Source RCON tool will connect. From your own computer, run ssh -N -L 17778:127.0.0.1:7778 you@your-server and connect the tool to 127.0.0.1:17778. No source says whether RCON answers on 127.0.0.1, so treat the loopback target as a guess. Should that connect without any reply, swap 127.0.0.1 in the -L part for the server's public IP. Handy commands include playerlist, kick, changelevel and say.

A second server. Give it a whole separate setup: its own install folder via a second SteamCMD run into /home/mordhau/game2, its own service file such as mordhau2.service, its own Game.ini, and four new ports, say 7787, 27016 and 15001 on the launch line plus RconPort=7788 in its Game.ini. Open its three player ports in ufw and keep 7788 shut.

Before you commit

  • Console friends. Per the wiki, PlayStation and Xbox players cannot run private servers at all, and when Triternion announced crossplay in 2024 it spoke only of official servers. Don't count on console players reaching yours.
  • Steam and Epic. The wiki says players from both stores can join a server set up like this.
  • Your settings are your backup to make. With the service stopped, archive the config folder using sudo tar -czf ~/mordhau-settings.tgz -C /home/mordhau/game/Mordhau/Saved Config, hand it to your user with sudo chown "$USER": ~/mordhau-settings.tgz, look inside with tar -tzf ~/mordhau-settings.tgz, and download it to your own computer. If you ever unpack it back, sudo ls -l /home/mordhau/game/Mordhau/Saved/Config/LinuxServer confirms the files landed; using sudo there means the check works however the game user's home folder happens to be locked down.
  • Small groups. If you only play the odd evening match with a few friends, a whole server is more than you need.

Questions people ask

Do I have to buy Mordhau to run a server?
No. SteamCMD downloads app 629800 with an anonymous login. The wiki does mention a second route through the Steam library's Tools section, and that one needs a copy of the game on the account.
My server is running but nobody can see it. What should I check?
First, ports 27015 and 15000, not just 7777: the browser and the slot reservation both depend on them. Then look in Game.ini for bAdvertiseServerViaSteam, which the wiki's example sets to True. From another computer, the wiki's quakestat -a2s check (from the qstat package) tells you whether the server answers queries.
How do I give a friend admin rights?
Stop the server, add an Admins= line with their PlayFab ID to Game.ini, and start it again. Any admin can also use AddAdmin in game, and the wiki warns that admins added that way can add others in turn, so choose carefully.
Where are my passwords kept?
In Game.ini, not on the launch line, so they never show up in the list of running processes. Setting the file to mode 600 keeps other users on the machine out of it.

Get your community its own Mordhau server

A whole machine with root access and an unmetered port, ready in about 30 minutes when it is already racked; payment checks can add time.

Find a server for your Mordhau community

Read next