![]() |
![]() |
|
#1
|
|||
|
|||
|
So.. I dont see much point in running a dedicated server on a system that I need to boot every now and then (talking about windows here) and I've been running Left 4 Dead, CS, DoD etc servers on my linux box for a while now but I havent run any Unreal Engine servers. So I was thinking if we as a community could write up a tutorial of how to install, setup and run a Linux Dedicated Server of Killing Floor. Now I know how to operate the hldsupdatetool so I'll start up by writing a tutorial on how to install the server but since I dont even know myself how to setup and run it I'd like you my fellow server admins to help out in writing this tutorial.
So here goes: UPDATED: May 18th -> v0.5 UPDATED: May 17th -> v0.41 UPDATED: May 16th -> v0.4 UPDATED: May 16th -> v0.3 UPDATED: May 15th -> v0.2 Original post: May 15th PART 1: Installing the server The info below pertaining to hldsupdate is obsolete as of Killing Floor update 1036. Please refer to this thread for the new method of using SteamCMD. Hosting a Dedicated Server with SteamCMD
Spoiler!
Spoiler!
PART 2: The quick and dirty start: This part is for all of you who dont care much about how "well" and organised the server is setup. This part will get you started the quick way. Like many others I couldnt locate the KillingFloor.ini from the <server>/system directory but it actually is under your home directory in a hidden folder ~/.killingfloor/System (see http://forums.tripwireinteractive.co...ad.php?t=30916 for more information) NOTE! The KillingFloor.ini will not be created before you start the server at least one time! 1. Before starting the server fire up your web browser and allready put in the addressbar the address to your server and port 8075 like this but DONT press enter yet: http://12.345.67.89:8075 (the address here is NOT the one for you to use) 2. Navigate into the kfserver/system directory and run: Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?AdminName=admin?AdminPassword=admin Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 Check PART 4: Post-installation tips for some tips on running the server afterwards. There are many posts on this forum about setting up the server configurations so I wont go into these for now. (See links at the bottom of this post.) PART 3: Running the server(s) Okay here is a bit more complex but more organised way of running a server or if you plan on running multiple instances of KF Server on your server this will help the administrating. First of all I know there is a few different kinds of ways of running multiple servers. One is to install every instance in its own directory. The other is using multiple KillingFloor<insert number>.ini files. I will try to make this tutorial as general as possible and I hope you can use your own brains to apply the information provided here to your own needs. But let us start! 1. After installing the server you might notice that there is something missing that we have allready talked about, the KillingFloor.ini. You can either run the server once (HOLD ON, dont do it yet! Use the code below to start) or you can copy the default.ini as KillingFloor.ini: NOTE!!!! Never EVER edit default.ini!!!!!! http://forums.tripwireinteractive.co...ad.php?t=30640 a) Copying default.ini as KillingFloor.ini (I have not tested this method myself) Code:
[system]$ cp default.ini KillingFloor.ini Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir Now it all comes down to choices. Rather than trying to write every possible solution for your needs, I'm going to try to explain the switches and choices about how you decide to run your servers. First of all, the -nohomedir switch makes the server use the .ini files in the same directory as you are running it from. This is handy when you have installed just one set of binaries for the server but still want to run multiple instances, so you make KillingFloor1.ini for server 1, KillingFloor2.ini for server 2 etc. You might also want to have a different set of binaries for each server (kfserver1 & kfserver2 directories for example) but then using the -nohomedir switch might be a bit troublesome since all the .ini files will be in different directories. If you use different folders for different server instances, leave out the -nohomedir switch. Summary: a) 1 binary, many servers, use -nohomedir, *.ini are in kfserver/system b) many binaries (directories), many servers, DONT use -nohomedir, *.ini are in ~/.killingfloor/System c) just one server, choose whichever way you want and find better for your needs 2. Lets edit the KillingFloor.ini next with your favourite text editor: NOTE!!! From now on the .ini file and the location is related to the choice you made on step 1. If setting up multiple server you need to edit each .ini separately as each server instance needs its own .ini file. Code:
[system]$ nano KillingFloor.ini a) under [Engine.GameReplicationInfo] add an AdminName so you can login from the WebAdmin and change ServerName so you can find it in the serverbrowser! b) under [Engine.AccessControl] add an AdminPassword (this will be always saved as plaintext) c) under [UWeb.WebServer] make sure that bEnabled=True if you want to use the WebAdmin to control the server These options should suffice to run a single instance of the server. If you are setting up multiple servers read on, else you can skip to step 3. For setting up multiple servers you need to have a unique port for each instance of course. The default port for KF server is 7707 but that is not the only port (see http://forums.tripwireinteractive.co...ad.php?t=30634). But as explained in that post, the default port controls all the other ports (except WebAdmin): 7707 UDP/IP (Game Port) 7708 UDP/IP (Query Port) 7717 UDP/IP (GameSpy Query Port) 28852 TCP/IP and UDP (Allows your Server to Connect to the Master Server Browser) 8075 TCP/IP (Port set via ListenPort that your WebAdmin will run on) 20560 UDP/IP (Steam Port) A good way to separate different server instances is to use +100 for each server (server 1 = default 7707, server 2 = 7807 etc). This will also affect all the other ports like this: Server 1 is at the default configuration above (7707 etc). Server 2 would be: 7807 UDP/IP (Game Port) 7808 UDP/IP (Query Port) 7817 UDP/IP (GameSpy Query Port) 28952 TCP/IP and UDP (Allows your Server to Connect to the Master Server Browser) 8075 TCP/IP (Port set via ListenPort that your WebAdmin will run on) 20660 UDP/IP (Steam Port) (Notice the WebAdmin port staying the same, I left it on purpose because it is a separate config value) d) in the beginning of KillingFloor.ini under [url] edit Port setting for the Game port (other ports will change as explained above) e) to change the WebAdmin port under [UWeb.WebServer] edit ListenPort=8075 (8075 is the default value) so you can find all the webadmin pages (use whatever logic you like). f) It would propably be a good idea to name servers differently (ie. Sekras KF Server 1, Sekras KF Server 2 etc) so you can separate them easier. Okay so now you have the technical part of the setup more or less done. For other, game related, configurations see the link to arramus' server tutorial in the links section of this tutorial. 3. Now its time to start the server(s). You will find additional tips about running the servers in Part 4 (how to run them in the background for example). This section will only tell you how to start the server. Again this comes down to the choices you've made earlier: a) If you are running just one server it is fairly easy to start it. Navigate into you <kfserver>/system directory and run ucc-bin: Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 b) If you are running multiple servers: This is a bit tricky to explain because of the many possible ways for you to setup the servers. But the keyword here is the ini=<server ini here> switch. If you are running multiple servers with 1 binary you can start each server like this: Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir ini=KillingFloor1.ini Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir ini=KillingFloor2.ini You might have multiple binary installations and you dont use the -nohomedir to concentrate all .ini in the same place (~/.killingfloor/System) then start like this: Navigate into kfserver1/system and run: Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 ini=KillingFloor1.ini Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 ini=KillingFloor2.ini Then you might have multiple server binaries and you used the -nohomedir on all of them. Then to run each server do this: Navigate into kfserver1/system and run: Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir Code:
[system]$ ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir PART 4: Post installation tips TIP I: Running the game in a screen aka Sekras startup script This script is very easy to make and operate. Definitely for beginners. NOTE!!!! I use this way to run a single server on my linux box. You will need to edit it to work with multiple servers. The syntax is "screen -S <unique name> <command to run>" and then you can resume the screen by "screen -r <unique name>". Okay so who likes to have a terminal window open all the time to just have the boring server console there? The answer is to install a program called screen if you havent allready done so (refer to your linux distro on how to install it). After installing screen this is what I do: 1. create a file called start in the system directory in kfserver and edit it: Code:
[system]$ nano start Code:
screen -S kfserver ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 NOTE!!! Only the orange part is important. For the rest of the script use the startup command you chose earlier. 2. Change the file permission so you can run it: Code:
[system]$ chmod +x start Code:
[system]$ ./start Code:
$ screen -r Code:
$ screen -r kfserver Here is a suggestion for multiple servers: For server 1, make start1 instead of just start: Code:
[system]$ nano start1 Code:
screen -S kfserver1 ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 ini=KillingFloor1.ini log=logs/server1.ini And then do the rest as with the single server script. Then repeat and make start2 with screen -S kfserver2 <startup command here> etc. Remember to chmod +x all of the scripts! TIP II: Updating the server So I've seen a few posts by now after the first patch that how do you update the server? Although it has allready been done in this tutorial I think it needs a section of its own for someone just browsing this tutorial for help. The procedure is really simple and easy. Just run the same command we used to install the server in the directory you installed your server and where the steam application is located: Code:
[kfserver]$ ./steam -command update -game killingfloor -dir . Now here is a more advanced startup script than my version is. This script was originally posted here http://forums.tripwireinteractive.co...ad.php?t=31044 Quick startup script(start/stop/restart)... Hope this is of any use. Make sure to change the GAME_PATH Code:
#!/bin/bash
#
# Init file for Killing Floor server
#
# chkconfig: 35 90 12
# description: Killing Floor
#
# source function library
. /etc/rc.d/init.d/functions
SCREEN_NAME=killing-floor
GAME_PATH=//srcds_l/killingfloor/system
start()
{
cd $GAME_PATH && /usr/bin/screen -A -m -d -S $SCREEN_NAME ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecure=true?MaxPlayers=6
}
stop()
{
PID=`ps fax | grep $SCREEN_NAME | grep SCREEN | awk '{ print $1 }'`
kill $PID
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
TIP IV: Terrorkarottes very advanced startup scripts Terrorkarotte has made some very advanced fine tuning for running your servers (not for beginners). You can find them a few posts downward: http://forums.tripwireinteractive.co...68&postcount=4 If any of these scripts doesnt work, contact Terrorkarotte. TIP V: Server logs If you are running multiple servers you might want to specify exactly where and what name the log files should be. You can do that by adding log=<unique name>.log in the startup line. For example you might want to have a logs directory in the ~/.killingfloor/System where you put all the logs of your servers then do this: Code:
mkdir ~/.killingfloor/System/logs Code:
./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 ini=KillingFloor2.ini log=logs/server2.log Changelog: Code:
v0.5 -Rewrote and renamed parts 2 & 3 -Added the actual script from LeAdGuEsT and a direct link Terrorkarottes advanced scripts to the first post -Added a tip about logging -A touch of color ;) v0.41, May 17th 2009 -Added mention of Terrorkarottes scripts v0.4, May 16th 2009 -Added post installation TIP II -Added link to LeAdGuEsT's startup script v0.3, May 16th 2009 -Added the Links section v0.2, May 15th 2009 -Wrote parts 2 and 3 to get a quick start -Added Part 4 for tips Original post, May 15th 2009 arramus' dedicated server tutorial for windows(also with lots of configuration info): http://forums.tripwireinteractive.co...ad.php?t=30579 LeAdGuEsT's excellent startupscript for linux: http://forums.tripwireinteractive.co...ad.php?t=31044 Zetsumeis How to enable high quality audio codec for dedicated servers: http://forums.tripwireinteractive.co...ad.php?t=31589 Thank you for the following people for helping with this tutorial: Tagert arramus LeAdGuEsT Terrorkarotte Vociferous PLEASE help me write this tutorial! If you find mistakes in my tutorial or if you have suggestions be free to tell me about them and I will correct it. Last edited by slavek; 07-11-2012 at 03:45 PM. Reason: Update to version 0.5 |
|
#2
|
||||
|
||||
|
be sure to be in this the /system/ directory of your KF server files.
Then run Code:
chmod+x ucc-bin Then to start it: Code:
./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 Last edited by Tagert; 05-16-2009 at 05:50 AM. |
|
#4
|
|||
|
|||
|
First of all i would like to thank you for your work. Your tutorial helped me a lot setting up my server. By doing this I encountered some problems and found solutions everybody is asking here in the forum.
But first this link: http://wiki.fragaholics.de/index.cod...l_Optimization It should help you running your linux gameserver more stable. For beginners i would not use a 1000Hz Kernel. The importand things are the realtime,the to your hardware fitted kernel, and mostly importand the rescheduler and idler scipts. If you dont want a kernel try out the scheduler and the idler. Using Source Server (CS:S DOD:S etc) it helped me a lot. You have to use another reschulder Code:
#!/bin/sh PIDS=`ps ax | grep sirq-hrtimer | grep -v grep | sed -e "s/^ *//" -e "s/ .*$//"` for p in $PIDS; do chrt -f -p 99 $p done PIDS=`ps ax | grep sirq-timer | grep -v grep | sed -e "s/^ *//" -e "s/ .*$//"` for p in $PIDS; do chrt -f -p 51 $p done PIDS=`pidof ucc-bin-real` for p in $PIDS; do chrt -f -p 98 $p done Everybody is telling, that they can not find die KillingFloor.ini or and it is not created. It is created. But everyone is looking in the wrong place. Enter your home directory and type: Code:
ls -la Code:
.killingfloor kfserver This happens because the existing HowTo´s forgot one important start parameter: Code:
-nohomedir Code:
ini=KillingFloor.ini log=server1.log Both will be created in the system folder I want to have order. so i created in the kfserver directory the folder "log" Code:
cd kfserver mkdir log Code:
./kfserver start|stop|restart Code:
#!/bin/sh
#clear
# An old hlds startscript found somewhere in the net changed by
# Terrorkarotte
# contact: ulblock@gmx.de
# to match a killing floor server
# Edit and uncomment it to your needs
KF_USER="yourusername"
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# DON'T FORGET TO CHANGE THE PATHS TO YOUR NEEDS!
DIR=/path/to/kfserver/system
# you need to create the folder log first!
# If you do not no log will be written !
LOG=/path/to/kfserver/log
DAEMON=$DIR/ucc-bin
PARAMS="server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?AdminName=ADMIN?AdminPassword=PASSWORD -nohomedir ini=KillingFloor.ini log=$LOG/server1.log"
NAME=killingfloor
DESC="killingfloor"
case "$1" in
start)
echo "Starting $DESC: $NAME"
if [ -e $DIR ];
then
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
else echo "No such directory: $DIR!"
fi
;;
stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;
restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... done."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Starting with this script will result in a KillingFloor.ini created in the system folder and a server1.log in the log folder. If you have created it. If you did not no log will be written. If you change the KillingFloor.ini now the changes take affekt now If you want to run a second server you have to copy the start script: Code:
cp kfserver kfserver2 Of course you have to change Code:
NAME=killingfloor DESC="killingfloor" Code:
NAME=2killingfloor DESC="2killingfloor" After you made the changes start the second server and the files will be created. Edit the Ports used in the KillingFloor2.ini restart the server and you have the second server running at the specified ports. The startscript: http://download.ostwestfront.de/karotte/kfserver Update: I forgot my update script, which i use to update my servers: Code:
#!/bin/sh #clear /home/username/kfserver/steam -command update -game killingfloor -dir /home/username/kfserver -verify_all -retry && /home/username/ Code:
#!/bin/sh #clear /home/username/kfserver/steam -command update -game killingfloor -dir /home/username/kfserver -verify_all -retry && /home/username/kfserver restart && /home/username/kfserver2/steam -command update -game killingfloor -dir /home/username/kfserver2 -verify_all -retry && /home/username/kfserver2 restart Code:
./kfupdate Code:
crontab -e Code:
0 5 * * * /home/username/kfupdate Here is the update script: http://download.ostwestfront.de/karotte/kfupdate Last edited by Terrorkarotte; 05-17-2009 at 05:54 AM. |
|
#5
|
|||
|
|||
|
Moderators think about making this one sticky. It could help many people.
Last edited by Terrorkarotte; 05-17-2009 at 05:14 AM. |
|
#6
|
|||
|
|||
|
Quote:
|
|
#7
|
||||
|
||||
|
Quote:
Cheers mate, awesome guide.
__________________
|
|
#8
|
|||
|
|||
|
Quote:
Its only that with servers linux superior to windows.
|
|
#9
|
|||
|
|||
|
As with version 3 of the linux dedicated server comes the ucc-bin-real executable, do we have to use this one, or the ucc-bin as described in this thread?
|
|
#10
|
|||
|
|||
|
use the ucc-bin as in this tutorial
|
|
#11
|
|||
|
|||
|
When I tried to compress a custom map as it is described in the windows thread, I encountered a few problems. First of all you have to use the ucc-bin instead of the ucc file. The second thing is to use / instead of \. The last thing is to add the "-nohomedir" variable. If you do not add it the compressed files will be in the hidden .killingfloor directory instead of the maps directory in the kfserver folder. The full command: Code:
./ucc-bin compress ../maps/mapname.rom -nohomedir Last edited by Terrorkarotte; 06-05-2009 at 08:30 AM. |
|
#12
|
|||
|
|||
|
With linux you can run a script with cron every X minutes/hours that checks if the screen process is running and if not execute the startscript of your server.
This script checks for a screen with the name "kf.one" and executes the startscript "kfstart" If you have other names you have to change it to your needs: Code:
#!/bin/sh #clear if[[ `screen -ls |grep kf.one ]] then echo else /home/kfserver/kfstart restart fi Last edited by Terrorkarotte; 06-12-2009 at 09:28 AM. |
|
#13
|
|||
|
|||
|
Nice Tutorial, but if i try to login to the Web-Interface it dont work :/
i type in the Setted Username / Password then the login "screen" go away for a sec and come back. Can someone help?! |
|
#14
|
|||
|
|||
|
Check your spelling Linux is always case sensitive.
Here is my german howto to set up a linux killing floor server: http://serverwiki.sp12.speed-hoster....p/Killingfloor Last edited by Terrorkarotte; 01-08-2010 at 06:03 AM. |
|
#15
|
|||
|
|||
|
How to launch muts and mods(like DA) with Ded server?
|
|
#16
|
|||
|
|||
|
./ucc-bin server
DA2-BlackGold.rom?game=DA2.DefenceAlliance?VACSecured= true?AdminName=HEREISAADMINNAME?AdminPassword=ANDH EREAPASSWORD?Mutator=da2.mutkf -nohomedir -multihome=HEREISTHEINTERNETIP -mod=DA2 ini=DA2.ini The forum splits the commandline so watch for breaks in the part where the commands are connected with ? Last edited by Terrorkarotte; 01-20-2010 at 01:01 PM. |
|
#17
|
|||
|
|||
|
I'm not much of a linux pro... more like a beginner
![]() But I wrote some small scripts that might come in handy. The following 2 belong in the system folder. create a .sh file, or a textfile and upload it via ftp. start.sh Code:
echo echo = Trying to kill running servers = echo killall ucc-bin-real screen -dmS kfserver ./ucc-bin server KF-BioticsLab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?AdminName=admin?AdminPassword=admin echo = KillingFloor Server starts = echo = Process: ucc-bin-real = echo screen -dmS is starting the server and running it in a background window. That way the process keeps on running even if you shut down putty. echo just puts out some text. stop.sh Quote:
Then you switch back to the main folder where the hlds files are. you then type: Code:
$ ln -s ./system/start.sh $ ln -s ./system/stop.sh It is also usefull to create an update.sh in this folder. Code:
killall ucc-bin-real ./steam -command update -game killingfloor -dir . Oh and you can check wether the server runs with Code:
ps aux |
|
#18
|
|||
|
|||
|
I tried this on my Linux-Ubuntu server an cannot get it running keeps telling me there is no server running after I have started a server without the script
|
|
#19
|
|||
|
|||
|
Quote:
Code:
pico kf-server.sh Code:
#!/bin/bash echo Killing current server killall ucc-bin-real # This will effectively make the script a means of restarting the server. cd kfserver ./steam -command update -game killingfloor -dir . -verify_all -retry # This updates the files to latest version before launching the game. # Server start vars vac="true" slots="6" adminuser="username" adminpass="password" echo "Starting KF Server..." cd system/ # use screen -r kf-server to view server console, # ctrl+a, d to go back, ctrl+c to terminate the server. screen -A -m -d -S kf-server ./ucc-bin server KF-BioticsLab.rom\ ?game=KFmod.KFGameType\ ?VACSecure=$vac\ ?MaxPlayers=$slots\ ?AdminName=$adminuser\ ?AdminPassword=$adminpass # EOF Code:
chmod +x kf-server.sh Code:
./kf-server.sh |
|
#20
|
|||
|
|||
|
Hey,
Thanks for the tutorial, it really helped, I just took a good read through. I'm going to be setting one up in the next few days/weeks on a Linux box I plan on buying. However, I do have one question. How much memory does a full 6 slot server use? (Approximate). Thanks, Outbreak-Gaming |
![]() |
| Thread Tools | |
| Display Modes | |
|
|