I just spent quite a lot of time searching for every little piece of information I needed to get my Linux Server running ut3-bin. Here are some quick and dirty instructions for how to get your Linux Dedicated Server running.
(My Linux skills probably differ from yours so sorry if I gloss over some things. I'm not going to teach you how to use Linux, just run UT3 server. Also this is my first post so be kind.)
Note: If you rent a server you can skip steps 1-2
Get and install Linux. You will need to make sure you open your firewall to ports UDP 6500, UDP 7777, and UDP 13000
Note: You must turn off SELINUX or create a rule to allow ut3 to run or you will get a segfault when you try to run ut3-bin! If you edit /etc/sysconfig/selinux and change SELINUX=permissive that will fix the problem on reboot.
Note: Many people have had host name issues causing segfault errors and resulting in servers not showing up on gamespy. Edit your /etc/hosts file (as root) and change your localhost entry to 127.0.0.1 and not 0.0.0.0 (all interfaces) and then specifically add a hosts entry for your server. Here is my example:Step 2:
127.0.0.1 localhost.localdomain localhost
18.104.22.168 myhostname myhostname.mydomain.com
Create a user account for your server to run under. You can just type "useradd unreal" and then "passwd unreal" to set a password.
Obtain the server binary and copy it to the unreal users home directory (probably /home/unreal/). Log in as the unreal server user and run the installer using "./UT3-linux-server-datehere.bin" and wait for the script to finish.
NOTE: Chances are you will need to update your path to include the unreal binaries. There are two ways to do this. For our purposes I will suggest that you edit /etc/ld.so.conf and add the line "/home/unreal/ut3-dedicated/Binaries" as the user root.
Update to Step 3:
Here is where you would run the patch for updating to version 1.x just use the ./unreal-server1.x.bin (or whatever the name is). If you are updating after the fact you don't need to backup your config files, it does not seem to overwrite them. Make sure you are running this as the user unreal, which means the update binary needs to be owned by the user unreal (or whatever name you used) and permissions probably set to 770.
Assuming we didn't mess any of the other settings up the basic server should run great now. Lets do some basic testing and create a default config file. Log in as the user unreal and navigate to your server folder (cd ~/ut3-dedicated/Binaries) and run "./ut3"
The server should start without getting a segfault and without returning you to a command line.
SUCCESS! A basic un-configured server is now running. Lets kill that by pressing ctrl+C
Now that we verified our basic server starts and runs lets get fancy and customize it. There are numerous web pages for creating command line arguments for the server. I'm just putting mine in here as an example. You can modify this to your needs. This command only runs a WAR (UTGameContent.UTOnslaughtGame?GameMode=2) game type so if you want to run DM or CTF you need to change it.
Create a file in your ~/ut3-dedicated/Binaries/ folder called startserver.sh and populate it with:sh ut3 Server WAR-Serenity?Game=UTGameContent.UTOnslaughtGame_Conten t?GameMode=2?Numplay=8?MaxPlayers=32?NumPublicConn ections=24?NumPrivateConnections=0?MinNetPlayers=1 ?TimeLimit=30?GoalScore=3?BotSkill=4?bIsDedicated= true?bUsesStats=true?ForceRespawn=0?bShouldAdverti se=true?PureServer=1?bIsLanMatch=false?bAllowJoinI nProgress=true?AdminName=admin?AdminPassword=ADMIN PASS -Login=GAMESPYLOGIN -Password=GAMESPYPASSWORD -Log=myserver.log -multihome=22.214.171.124 -unattended
NOTE: Recent evidence (please give me feedback on this) suggests that adding -multihome=ipaddress to your command line will solve the "lag" (stability, warping, lag) issue many Linux dedicated servers are suffering from.
Make sure the command is all on one line. Save that file and make it executable using chmod 770 startserver.sh.
Calm down, you are not done yet. We need to set this thing up as a service so it will run when you are not logged into the server and configure game options outside the command line arguments we just passed it in the startserver.sh script.
Step 5.1 (Perhaps I should have done this before step 5 but oh well.)
We need to configure settings for the server like game size, MOTD, etc... Because of the way I had you set up the command line (without the -nohomedir argument) you need to edit your UTGame.ini located in "cd .Unreal\ Tournament\ 3/UTGame/Config/" Yes for those of you paying attention it's a hidden folder in linux "/home/unreal/.Unreal Tournament 3/Config/UTGame.ini
Change settings in this file only if you know what they do. Message of the day, max users, etc... Don't go changing stuff you don't know about.
Note: For those of you whining about gamespy not showing your server name correctly or game type correctly, you probably need to edit the file I talk about in the step above.
Running the ut3 server binary as a service should be our final goal here. I have written this service script for Red Hat Linux, it should also work under Centos and Fedora. If you are running something else you will need to find the correct service script for your distribution. Please note that you can simply take the startserver.sh from step 5 and start your server manually using "sh startserver.sh &" which will run the script in the background (won't stop when you exit the ssh session).
For this step you will need to be root. As root cd to /etc/init.d and then copy an existing script like "cp sshd ut3" this will simplify the permissions issue with the file. Edit that new file ut3 and populate it with something like this:
# Run-level Startup script for ut3-bin
# chkconfig: 345 91 19
# description: Starts and stops unreal dedicated server binary
# if the executables do not exist -- display error
if [ ! -f $ut3_home/startserver.sh -o ! -d $ut3_home ]
echo "Unreal 3 Server: cannot start"
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
# UT3 basic start script or command can be called here. For my purposes I placed the entire command line a shell script called startserver.sh
echo -n "Starting UT3 Server: "
su - $ut3_ownr -c "cd $ut3_home && ./startserver.sh &"
# UT3 kill-shutdown
echo -n "Shutdown UT3 Server: "
su - $ut3_ownr -c "killall ut3-bin"
rm -f /var/lock/subsys/unreal
echo "Usage: $0 start|stop|restart|reload"
Ok be sharp kids. You need to check the paths in this script and match them to your server. If you are renting a server this is not an option for you. Just run your startserver.sh script like this "./startserver.sh &" which makes the binary run in the background
Now save that file and exit. Run the command "chkconfig ut3 on" to start the server automatically when your Linux box starts up
Test your Script by running "service ut3 start" and stop it with "service ut3 stop" If you need to restart it "service ut3 restart"
WOW, ok well I hope that helps. Like I said, I probably glossed over things and I will edit this upon constructive comment. Below are the highlights for those of you getting hung and having segfaults.
1. Selinux off
2. Firewall working? Configured for the right ports?
3. Run the scripts as the user who installed them.
4. Is your path updated in /etc/ld.so.conf?
5. What command are you using to run the server binary? Check it, does it error if you just run ./ut3?
6. Is your server not showing up correctly check ~/.Unreal Tournament 3/Config/UTGame.ini
7. Have you stopped and had some coffee? Coffee is a great stimulant and helps most of us think better.