Creating an Unreal Tournament 99 server in Linux

(Post edited to reflect the steps required for the 451 version of the server, which has some crucial bug fixes, among which a working webadmin.)

I created an Unreal Tournament 99 server using this page as a guide (I may update that page myself soon, to help out others). However, I had to do a lot more, so here is the info:

First get and unpack the UT server, the 451 patch and the server utility script:

wget http://ut-files.com/Entire_Server_Download/ut-server-436.tar.gz
tar -zxf ut-server-436.tar.gz ut-server
wget http://www.ut-files.com/Patches/UTPGPatch451LINUX.tar.tar # May be changed to .tar.bz2 by the admins soon
tar xfj UTPGPatch451LINUX.tar.tar
tar -zxf asu-0.6.tar.gz
chmod +x asu.sh System
ln -s libSDL-1.1.so.0 libSDL-1.2.so.0

Because of some error (as described), map names with ][ in them, like DM-Deck16][, are 0 bytes. So, you have to copy them from some other UT installation. 2399Skillz on the forums said he’ll fix it, so it might be fixed at some point.

Next, you can run the asu.sh script. Choose option “I”, to install. Most important thing is to choose the username it will run under (not nobody as it suggests). The rest is obvious.

The script will have made an ucc.init file. Important to know is, that the path of the server is set in it. So, if you want to move the server to another dir, you have to change that file. The path name is mentioned several times.

Next you want to enable the webadmin. You can do that by opening UnrealTournament.ini, going to the [UWeb.WebServer] section and setting bEnabled=True and choose a port (5080 is standard):

[UWeb.WebServer]
ApplicationPaths[1]=/images
DefaultApplication=0
bEnabled=True
ListenPort=5080 

When going to the webadmin, be sure to include /ServerAdmin/ in your address bar, because otherwise it will try to redirect you to that, using a HTTP redirect, but that will fail because the server has no idea you’re using an internet hostname and therefore it will redirect you to it’s LAN-IP, which obviously won’t work if the server is not in your LAN. Apache has config parameters to set the redirect hostname, but this webadmin doesn’t.

As a security precaution, patch 451 adds brute force protection to the admin login. See the file Releasenotes.htm in the Help dir for more info. In the Engine.Gameinfo section, a few rules should be added/modified (depending on whether they’re already there or not):

[Engine.GameInfo]
(snip)
...
ActionToTake=DO_KickBanPlayer

The server (at moment of writing) has special net-textures, to reduce the size of the installation. Problems my occur when clients are using the high-res textures (see aforementioned topic). To solve this, copy the normal CD1 textures to the server dir.

I was under the impression that the asu stuff would take care of setting the environment properly so the files can be found, but when trying to start the server, it complained about not being able to find it’s data directory. It started doing that after applying the 451 patch, so that might be the cause. To fix it, I added this line below MYUSER=User.ini in ucc.init:

UT_DATA_PATH="\$MYDIR/System/"

However, it might not be necessary when you apply the patch before you extract the asu scripts. I applied the patch after, so that may have been the difference. Try without this modification first.

You can start the server by “./ucc.init start”. Or stop by “./ucc.init stop”. Or restart by “./ucc.init restart”.

1. Comment by danuel
On July 1, 2012 at 21:58

Hi

When I try start the ucc.init, gives that error “Stopping Unreal Tournament: kill: 274: No such process”

And auto Start again.. and looping in this :S

What’s happen?

2. Comment by halfgaar
On July 11, 2012 at 09:40

I wish I could tell you, but I can’t. You’d have to debug the script.

3. Comment by Finn Espen
On October 20, 2014 at 12:39

I was inspired by your post to make a guide for FreeBSD, based on the same Linux guide you based this on.