Creating a Wurm Unlimited Dedicated Linux Server

Yeah yeah yeah. I know it's been a while since I made a new post, and this one is unlike my previous ones.

Today, I'm going to teach you how to build a Wurm Unlimited dedicated Linux server (hey, the same thing as my title).

First, you'll need a Linux server. I'd recommend AWS or DigitalOcean. The specs I'd recommend, at a minimum:

  • Ubuntu 16.04/CentOS 7.x
  • 100GB SSD
  • 2 vCPU
  • 2GB RAM

Now, with AWS, do not assign a public IP to the server. Create the server without a public IP, then go to Elastic IPs, create one, then associate the Elastic IP to your new instance's interface.

Also, with any service provider, ensure the following ports are allowed:

  • UDP
    • 8766
    • 27016-27030
  • TCP
    • 8766
    • 3724

I am going to assume you know how to create key-pairs, and you have one, and it is assigned to your server. I am also going to assume you know how to SSH into a server, and have the software required to do so.

While I said "Ubuntu or CentOS", this write-up is going to be about Ubuntu -- the one I have used to create a server.

Got the server up, and are in via SSH? Cool. Sudo up:
sudo -i

update the box:

apt update && apt full-upgrade && reboot

This will disconnect you. Wait a 2-3 minutes, then SSH back in, and sudo up again.


Now, it's time to have fun. Run this command:

adduser steam

It will prompt for a password. You can assign it any password that you like. Hit "ENTER/RETURN" the rest of the way down.

Next, run this, and it will install required packages, as well as a few that may not ever be needed, but you will be glad you added if you wind up needing them:

apt-get -y install lib32gcc1 libswt-gtk-3-java zip sqlite3 python2.7  

Now, let's install steamcmd:

Let's change to the steam user:

su - steam  

Next, let's download and unpack steamcmd:

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -  

Now that we've downloaded steamcmd and extracted, let's install Wurm Unlimited Dedicated Server:

cd Steam  
./steamcmd.sh +login anonymous +force_install_dir /home/steam/wu +app_update 402370 +validate +quit

Let's move into the Wurms Unlimited area:

cd ../wu  

OPTIONAL: Install mods and patch the service:

Don't do this if you're not sure you want mods

Run the following to get the mods (changing the version to the latest):

wget https://github.com/ago1024/WurmServerModLauncher/releases/download/v0.32.1/server-modlauncher-0.32.1.zip  

Next, run this (no need to change for version):

unzip $(ls server-modlauncher*|sort|tail -1)  
chmod +x patcher.sh  
./patcher.sh

Now, you can add new mods by following the mod instructions, and dropping the mods in /home/steam/wu/mods/

END mod section


Creating a creative server:

To start the server, we need some server files in place. To do that, let's copy their boiler plate files:

cd /home/steam/wu  

For Creative:

cp -R dist/Creative .  

For Adventure:

cp -R dist/Adventure .  

Start-up scripts:
Change the following scripts to fit your server's needs. These files do not exist by default. Read the comments (lines that start with "#") for info on the line below them.

/home/steam/wu/server.cfg

# Set the IP if the default IP (eth0, usually) isn't your external interface.
# Leave at '' if you are unsure. If this doesn't work, change to the 10., or 192.,
# or 172. IP on the server. If you have more than one, try each until it works.
IP=''

# Unlocks the admin commands from within the game, that can be used to change
# the gameplay settings of the server, such as skill gain rate and field growth time.
ADMINPWD=""

# If true the server will follow the rules from the Epic servers in Wurm Online.
# For instance it will use the skill curve.
EPICSETTINGS="false"

# Used to set the port which the client connects through (Default 3724 TCP)
EXTERNALPORT=""

# If the server is a home server ( belongs to a single kingdom ).
HOMESERVER="true"

# The kingdom the server belongs to.
# If you're using the Adventure base, use 1, 2, or 3.
# If you're using Creative, use 4.
# Kingdom numbers:
#  0 - No kingdom
#  1 - Jen-Kellon
#  2 - Mol-Rehan
#  3 - Horde of the Summoned
#  4 - Freedom
HOMEKINGDOM=4

# Defaults to true, should only be set to false if the server is intended to be
# connected with another server that is going to act as a loginserver.
LOGINSERVER="true"

# Sets the max number of players allowed on the server, if this is set through
# this command line option then the internal game commands to change the player
# limit will not work.
MAXPLAYERS=200

# Used to set the steam query port (27016-27030 UDP)
QUERYPORT=27017

# The name of the server that will be visible in server browsers.
SERVERNAME="YOUR SERVER'S NAME"

# Sets the password that is used when trying to connect to the server. If set, password will be required to play
SERVERPASSWORD=""

# Starts the launcher with the configuration and world data from the subdirectory
# specified in <name>. If you used Adventure, change the line below to
# START="Adventure"
START="Creative"  

/home/steam/wu/start_server.sh

#!/bin/bash
cd /home/steam/wu

if [ -f ./server.cfg ]; then  
  source ./server.cfg
else  
  echo "Unable to find server.cfg file. Quitting like a coward."
  exit 1
fi

if [ -f WurmServerLauncher-patched ]; then  
  service_file='./WurmServerLauncher-patched'
else  
  service_file='./WurmServerLauncher'
fi

$service_file ADMINPWD="$ADMINPWD" EPICSETTINGS="$EPICSETTINGS" EXTERNALPORT="$EXTERNALPORT" HOMESERVER="$HOMESERVER" HOMEKINGDOM="$HOMEKINGDOM" LOGINSERVER="$LOGINSERVER" MAXPLAYERS="$MAXPLAYERS" QUERYPORT="$QUERYPORT" SERVERNAME="$SERVERNAME" SERVERPASSWORD="$SERVERPASSWORD" START="$START" IP="$IP"

Next, run the following command:

chmod +x /home/steam/wu/start_server.sh  
exit  

You shoud now be root. Now we need to create the service unit file.

create the file /lib/systemd/system/wurm.service that contains the following:

# Wurm Unlimited Dedicated Server systemd service file

[Unit]
Description=Wurm Unlimited Server  
After=network.target

[Service]
User=steam  
Group=steam  
WorkingDirectory=/home/steam/wu  
ExecStart=/home/steam/wu/start_server.sh  
TimeoutSec=600  
Restart=on-failure  

Now that that's done, run this:

sudo systemctl enable wurm.service  

That will ensure that it starts automatically

Now, we get to start the server:

sudo service wurm start  

To check the status:

sudo service wurm status  

To restart:

sudo service wurm restart