Been a while since I wrote here. Figured I would write up a howto to setting up a Unreal Tournament 2004 server. I really love this game. It brings back tons of memories, playing this when I was in the Navy with my friends on the sub.
My boys have some break time off from school, and they played a little bit back in the day, so I decided to spin up a server so that we could play. I looked for a way to do this online, and couldn’t find anything so I figured I would write something up, so here you go.
So, the good thing is that because the game is pretty old now, over 13 years old now, it doesn’t really require a lot of CPU or memory or storage. I deployed a KVM with 2 cores and 4GB of RAM and 20GB storage server running Ubuntu 16.04.3, and got all the updates installed. I then spent the next few hours searching for the ut2004 dedicated server package. Never could find it. Luckily, I had a backup copy, which I have uploaded to this server so you can download it here. You’ll also need the patch, which you can download here.
I created a directory for the game in /usr/local/games/UT2004 and extracted the .zip here:
sudo unzip -d /usr/local/games/UT2004 dedicatedserver3339-bonuspack.zip
Once that was complete, I then untarred the patch and had to manually install it, since it creates a directory called
UT2004-Patch so I had to actually go into each directory and move the files into their respective directories in the UT2004 directory. Once that was complete, you now have a system capable of running Unreal Tournament 2004 server. However, I needed to do a couple more things.
Next, you need to install libstdc++5 package. This is required so that Unreal can run. Run the following command to install libstdc++5:
sudo apt install libstdc++5
One, I decided to start the web admin. In the /usr/local/games/UT2004/System/UT2004.ini. Find the UWeb.Webserver section and modify it:
[UWeb.WebServer] Applications=xWebAdmin.UTServerAdmin ApplicationPaths=/ServerAdmin Applications=xWebAdmin.UTImageServer ApplicationPaths=/images bEnabled=True ListenPort=80
You can change the ListenPort to what ever you want, you just need to change bEnabled=False to True to enable it.
Next, I decided that I wanted this to run as a service using SystemD instead of just running in the background with me logged in to the server. Below is my UT2004-Server.service file:
[Unit] Description=Unreal 2004 Dedicated Server After=network.target [Service] Type=simple User=ut2004 WorkingDirectory=/usr/local/games/UT2004/System ExecStart=/usr/local/games/UT2004/System/ucc-bin-linux-amd64 server CTF-BridgeOfFate?game=XGame.xCTFGame?AdminName=admin?AdminPassword=XXXXXXXX ini=UT2004.ini log=server.log -nohomedir Restart=on-abort
Just change the
?AdminPassword= to what you want I then copied the file into /lib/systemd/system and chmod 644 and chown root:root the ut2004-server.service file and now I can control the service with systemctl:
systemctl start ut2004-server.service and I can get status with
systemctl status ut2004-server.service
One last thing I did as well is I included my cdkey from my game since I was getting errors about a missing cdkey, however, I have tested it, and it is not required. The game will still run, you just can’t advertise your server on the Internet and host Internet games without it, which means your stats also won’t work. You used to be able to download a CD-Key from Epic, but that service is no longer working. I emailed them about this on December 2, 2017 with no reply as to date.