Absurd Minds http://forums.absurdminds.net/ |
|
Installing game servers in CentOS http://forums.absurdminds.net/viewtopic.php?f=18&t=940 |
Page 1 of 1 |
Author: | Amaroq [ 08 Jul 2011 15:58 ] |
Post subject: | Installing game servers in CentOS |
I am going to try to set up a CentOS server on my home machine and optimize it for gaming. This will be the guide to doing it. Before you begin, I suggest taking a look at the useful software for running a game server. Though this software isn't required, I think it makes things significantly easier. For example, even though I am setting up this server in my computer room, it is still significantly easier for me to use PuTTY on my main computer instead of having to go back and forth from one computer to another. Table of Content
|
Author: | Amaroq [ 08 Jul 2011 16:07 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing CentOS The first thing you need to do is download CentOS. There are tons of mirrors. You can find a list of those CentOS mirrors here. It will be either eight or so CDs or two DVDs. Make sure you download the most recent version unless you have some reason not to. Put that CD into the server machine and boot the machine you are wanting to install it on from CD Drive. (Usually pushing F12 during boot brings up a boot menu.) Once it boots from the disc it will lead you through the installation. It will ask you for a graphical install or a text install. Since I am setting this up to be a server and thus I don't need any graphical interface whatsoever, I chose text install. The first part is just loading a bunch of drivers. My installation hung right here at "Loading ata_piix driver". Apparently, CentOS 5.x has some sort of bug that makes it incompatible with a Dell Inspiron 530 (the exact computer I was trying to load it on). I went into the BIOS like the bug report suggested and changed my Sata Mode to RAID. It seems to have fixed the problem. Next, it asked if I wanted to test the CD media. Since I had sort of scratched it up I decided to choose "OK", but it does take a while, so unless you really have a reason to verify your CD, I would suggest simply choosing "Skip". It will now ask you for your language and your model keyboard. The answers will probably be "English" and "us". "us" is just a standard qwerty keyboard with no special buttons. Chances are, unless you know your keyboard is something special, it is just a "us" keyboard. Next it asks what Hard Drive I want to install on. Since this computer has only one hard drive, and I am devoting this entire hard drive to the server (that is, I don't want to partition it at all), I am going to choose that hard drive. I also chose "Remove all partitions and use default partitioning". Unless you're doing something fancy, the default partitioning scheme should be fine. Next it asks if I want to configure eth0, which is the network card. I chose "Activate on boot" and "Enable IPv4 support". Since you are running a server (and I assume you're using a router), you don't want your machine's IP address to change. So choose "Manual address configuration" instead of DHCP. Choose an IP address that you want for your machine. Usually it will be something like 192.168.0.4 or something along those lines. This would be if your router's internal IP address is 192.168.0.1. (If you want more information about the IP address, check out this thread.) If you have trouble figuring out any of the next values, you can usually find it by opening a command prompt on a computer that is connect to the same network, and typing Code: ipconfig /allThis will tell you tons of things about your network. It will also ask for your Prefix (Netmask). It is probably 255.255.255.0, but check this with ipconfig /all. The next asks for Gateway, Prinary DNS, and Secondary DNS. The Gateway is probably going to be the address of the router, which you can check with ipconfig /all. It will be called the "Default gateway". For the Primary DNS, I put 192.168.1.1. (I initially didn't put anything because I couldn't figure out what I was supposed to put, but it led to problems later. After some searching around, I put my router's IP address, and now everything works fine.) I did not put a secondary DNS. Now you must choose a hostname for your server. I just called my server1 because I'm not imaginative. Choose what time zone your in. Now, choose a root password. The "root" user in a linux environment is the one who has the power to do everything. Root security is very important, and you need to pick a good root password or you risk compromising your system. Now the installation will ask about some things you may want to install. Since I am installing this simply to be a server machine, I am going to uncheck the "Desktop" feature. I can do everything I need to through the command line, so I see no reason to have that. Instead, I chose "Server". Also make sure to check "Customize Software Selection". Now it gives me a big list of other things I can install. I am planning on using this server to run a HLDS game server, HLTVs, and maybe a website. I can always go back later and install other packages if I need to, but to start out with, this is what I chose:
|
Author: | Amaroq [ 08 Jul 2011 20:01 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Firewall Configuration The most important thing to do now is configure the Firewall. CentOS comes installed with IPtables. When you reboot the computer, you should be presented with a screen that looks something like this: ![]() Now, if you don't click on anything for a bit, it will go past this screen. If you restart your computer and go make yourself a snack and it is already on the logon screen, you can restart the machine to get back to here. Anyway, choose Firewall Configuration. I left the Security Level "Enabled", but I changed SELinux to "Disabled". SELinux is usually more hassle than it's worth, especially on a home game server like this. Then I chose "Customize" to customize my firewall's settings. A "Trusted Device" basically means that, if selected, any traffic on this device will be allowed in. Basically, it disables the firewall for that device. (This would be important if you had one network device for internal network traffic and a different device for traffic from outside the network.) Since I only have one internet device, and I want all the traffic on it to be monitored by the firewall, I do not select anything for "Trusted Device". I'm not quite sure what "MASQUERADE Devices" means, but this should probably remain unchecked and should definitely stay unchecked if you only have one network device (like I do). I now need to decide what type of traffic I want to allow on my server. I'm going to say that these services are trusted:
Other ports: Since I am planning on running game servers, I also need to allow other, non standard ports. Portforward.com has a great list of applications and their ports. For example, for Counter Strike, I would need to enable TCP traffic on ports 27020-27039 and UDP traffic on 1200 and 27000-27015. I'm going to edit these into the firewall after the system reboots. Once you've got that done, reboot the computer. |
Author: | Amaroq [ 09 Jul 2011 12:46 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Updating the installation Now get some software and update some stuff. Your installation disc was probably somewhat out of date, so this will allow you update the packages that it initially installed. Code: rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* yum updateThat updated everything. Now I'm going to install some basic packages that I'll need for later on. Code: yum install fetchmail wget bzip2 unzip zip nmap openssl lynx fileutils ncftp gcc gcc-c++For example, wget is the package that allows you to get files from the internet. lynx is a text-based browser. So we're just installing a few basic packages that will allow us to do everything more efficiently. |
Author: | Amaroq [ 09 Jul 2011 13:15 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Basic Server Configuration for Game Servers Now that I've got the basics, I need to do a few things specifically for the purpose of having a game server. I should have already installed most of the needed packages during the initial installation process, since I checked pretty much everything that I would need. Now I need to make a user to run the game server. You should never run processes as root if you don't have to. You don't have to run a game server as root, do don't! Code: useradd gamer passwd gamerNow enter in the password. Remember, linux does NOT generally mirror your password typing with ***** or similar. As you push keys, it will look like you're not typing anything, but you are. When you create a user, it creates a home directory /home/gamer. If you log into ssh with your gamer account, it will automatically take you to that home directory. If you're operating as root, you'll have to cd there. But that'll be the directory in which you build your game servers. |
Author: | Amaroq [ 09 Jul 2011 14:13 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing a Game Server You can now actually install a game server. Since my other tutorial was for FreeBSD, I'll make a separate tutorial for CentOS, since a few of the commands are slightly different. Since you've already made the gamer user, you need to either log in to your server using that name and password, or simply switch users. Code: su gamerWhat I am going to do now is set up a test server in condition zero that I can use to test plugins or mods. I'm going to make a czero directory for my various czero servers, and then a test folder to put the test server in. (Fun fact: You can go to your user's home directory by using "cd ~". ~ is the shortcut for the user's home directory.) Code: [/home/gamer] $ mkdir ./czero mkdir ./czero/test cd ./czero/testNow that I've got the directory, I am going to install the appropriate files. (Fun Fact: If you are using PuTTY, you can copy a URL from your browser, and then paste it into your command line in PuTTY by using right click.) Code: wget http://storefront.steampowered.com/download/hldsupdatetool.bin chmod +x hldsupdatetool.bin ./hldsupdatetool.bin yesWhen I tried this the first time, I kept getting a strange error: Code: sh: uncompress: command not found tar: This does not look like a tar archive tar: Error exit delayed from previous errorsApparently, I had to link the "uncompress" command to "gzip" so that it would actually uncompress the file. Code: ln -s /bin/gzip /bin/uncompress(I had to do this as root.) Once I had that fixed, I continued with the installation. Code: chmod +x steam ./steam -command update -game czero -dir .Notice the . at the end of the line. That tells it to install in the current directory. You will probably have to run this command twice. (Fun Fact: Hitting the up key at the command line will re-enter the line you just used. So instead of typing the whole line again, just hit up and then enter.) This may take a while depending on your internet connection and how responsive the steam servers currently are. In the various servers I have installed, it has taken anywhere between 5 minutes and 45 minutes. For a full list of games that you can install using the HLDS update tool, check out this link. Look at the "update" column for the code you should use when installing the server. Once this has completed, you have a basic HLDS server. [youtube][/youtube] |
Author: | Amaroq [ 09 Jul 2011 15:09 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Launching Your Game Server Now that your server is installed, you can launch it. You will launch it from the directory in which you initially installed the Steam program. In my case, that is ~/gamer/czero/test. First off, are you accessing your server through PuTTY, or are you sitting at the physical machine? If you are using PuTTY, read this next part. If not, you can skip ahead. ------ PuTTY is a means of accessing your server, but when you close your PuTTY window, your session will close, which means that anything your user was running (including a server) will shut down. To remedy this problem, use a program called "screen". First, we will install screen. Code: yum install screenNow, before launching your server, open up a new screen session. This screen session operates exactly like a normal session. You start screen by simply typing "screen" at the command line. If you're unfamiliar with screen, this is a really good tutorial for using it. ----- Anyway: Launching the server basically uses three things: You tell it what game to launch, you define some command line operations, and you can define some cvars. This is an example of a command line to launch a czero server: Code: ./hlds_run -game czero +ip xxx.xxx.xxx.xxx +port 27015 -pingboost 1 +map de_dust2_cz -autoupdate +maxplayers 20Stuff with a "-" in front of it is a command line variable. There is a full list of Command Line Parameters here. Most of them you will never use, but a lot of them can be helpful if you're needing to configure your server beyond the "normal" in order to optimize it. Stuff with a "+" in front if it is simply a cvar that you adding to the command line instead of the server.cfg. For example, you can put "map de_dust2_cz" in your server.cfg file, or you can put +map de_dust2_cz in your command line. This is completely up to you. It doesn't really matter what order you put the stuff in, but just remember to start with "./hlds_run -game <game name>". Remember this list of games from earlier? This time, look at the "launch" column to see what to put into <game name> for the game you are running. |
Author: | Amaroq [ 09 Jul 2011 16:59 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Core Server Files Your basic server has a few core server files that you can edit to optimize your server to your liking. All of these server files are located in the game server's directory, in a subdirectory for that specific game. For example, it might be located at /home/user/server/czero, or at ~/test/cstrike. You can use nano, a linux text editor, to edit any file. Either cd to the directory of the file, or add the directory before the file. Examples: From the current directory, use Code: nano server.cfgFrom a different directory, use Code: nano ~/czero/test/czero/server.cfgThe most important is your server.cfg file. server.cfg The server.cfg file is one of the most extensive and most customizable in the game. There are tons of different cvars you can add. I will attempt to explain all of those, as well as group them by category. Ban files exec banned.cfg - executes the banned.cfg file exec listip.cfg - executes the listip.cfg file writeid - writes new banned users to the appropriate list Server configurations hostname "server name" - changes the name of the server in the game server list rcon_password "password" - sets the rcon password to allow users to execute commands on the server remotely sv_password "password" - locks the server so users have to type a password in order to enter sv_lan <0|1> - toggles if the server is only accessed on the lan (1) or if it is accessible outside of it's lan (0) sv_region <0|1|2|3|4|5|6|7|255> - sets the server's region. List of regions. log <on|off> - sets whether the server will log key events mp_logdetail <0|1> - sets whether the server will log with high detail mp_logmessages <0|1> - sets whether the server will log chat messages pausable <0|1> - sets whether or not the server can be paused sv_cheats <0|1> - toggles VAC secure mode Upload and download sv_downloadurl "http://www.xxxxx.xxx" - allows you to set a fast download URL sv_allowupload <0|1> - sets whether players are allowed to spray custom sprays in a server sv_allowdownload <0|1> - sets whether players are allowed to download content from the server decalfrequency <integer> - the time, in seconds a players must wait before spray a tag again mp_consistency <0|1> - whether or not a player needs to have default models, sounds, etc., when joining your server Voice sv_voiceenable <0|1> - sets whether players can talk sv_voicecodec voice_speex - the voice codec. voice_speex is the default sv_voicequality <1|2|3|4|5> - 1 is terrible, 3 is about normal, 5 is for highly competitive servers sv_alltalk <0|1> - sets whether or not players can hear players on the other team Gameplay mp_c4timer <integer> - time, in seconds, the c4 will tick before exploding mp_autoteambalance <0|1> - sets whether the teams will auto team balance if there are too many players on one team mp_limitteams <0|1|2> - sets the number of players one team must have over another team in order to trigger an auto team balance. 0 disables. mp_allowspectators <0|1> - sets whether players can spectate in the server. mp_autokick <0|1> - decides if idle players or team kills should be automatically kicked mp_freezetime <integer> - the number of seconds at the beginning of the round before players can begin to play mp_buytime <integer> - the number of minutes a player is allowed to buy for mp_startmoney <integer from 800-16000> - the number of dollars players start the match with mp_flashlight <0|1> - sets whether or not players can use flashlights mp_footsteps <0|1> - toggles footstep sounds mp_forcecamera <0|1|2> - 0: dead players can spectate anyone. 1: dead players can only spectate teammates. 2: dead players can only spectate teammates in first person view mp_friendlyfire <0|1> - toggles friendly fire mp_hostagepenalty <integer> - the number of hostages a player can kill before being kicked mp_tkpunish <0|1> - sets whether a player will be slayed for team killing. mp_timelimit <integer> - the number of minutes before a map change mp_maxrounds <integer> - the number of rounds before a map change mp_winlimit <integer> - the number of rounds a team must win before a map change mp_roundtime <integer> - the number of minutes in each round mp_chattime <integer> - the number of seconds the score board idles before the map changes HLTV sv_hltv <0|1> - sets whether or not HLTVs are allowed to connect sv_proxies <0|1|2> - the number of HLTVs that are allowed to simultaneous connect to a server Bot control humans_join_team <T|CT|any> - sets which teams humans are allowed to join bot_join_team <T|CT|any> - sets which teams bots are allowed to join bot_quota <integer> - sets the number of bots on the server bot_auto_vacate <0|1> - sets whether bots will leave when the server is full to make room for a human bot_difficulty <0|1|2|3> - sets the bot difficulty bot_join_after_player <0|1> - sets whether the bots stay on the server or if they only join after a human joins bot_allow_grenades <0|1> bot_allow_shield <0|1> bot_allow_snipers <0|1> bot_allow_machine_guns <0|1> bot_allow_rifles <0|1> bot_allow_shotguns <0|1> bot_allow_submachine_guns <0|1> bot_allow_pistols <0|1> bot_prefix <prefix> - allows you to put a prefix on the bot's names bot_chatter <on|off> - toggles the bot radio chatter bot_defer_to_human <0|1> - toggles whether a bot will defuse/plant/rescue hostages if humans are still alive bot_stop <0|1> - toggles whether or not the bots move Server rates - for a detailed explanation of server rates, check out this thread. sys_ticrate <integer 0-1000> - sets the fps of the server sv_maxrate <integer> sv_minrate <integer> sv_maxupdaterate <integer 0-100> sv_minupdaterate <integer> banned.cfg This file allows you to ban users by SteamID. A general input looks like this: Code: banid <time in minutes> <steamID>For example, to permanent ban a user, I use Code: banid 0.0 STEAM_0:1:234567To ban a user for 1 day, I could use Code: banid 1440.0 STEAM_0:1:234567listip.cfg This file is for banning IP addresses. Code: banip <time in minutes> <IP Address>motd.txt This is the MOTD that people will see when they first join the server, before they choose what team they go on. You can edit this however you want, to make a nice fancy MOTD if you desire. You can add things like your server's name, your server's rules, a list of admin, or whatever. It uses HTML, so if you know HTML you can also configure the text styles and colours. Fixing the MOTD scrolling problem I noticed on my server, after I had added a bunch of lines to the MOTD, that the MOTD needed to scroll. It was too much text to fit on the screen at once, so the MOTD had a scroll bar. For some reason, though, dragging the scoll bar did not work. The scroll bar went down, but the text did not move up. It made it impossible to read the rest of the MOTD. To fix this problem, delete the following line at the top of the MOTD: Code: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">I have no idea what that line does or why it breaks the scrolling, but removing that line fixes the problem. mapcycle.txt These are all the maps that the server cycles through. If you download a custom map, you need to add it to the mapcycle.txt in order for it to show up in the map rotation. This is also the order the maps cycle in. Switch the maps around to change up the order that they come up in. I found it extremely helpful to just keep them in alphabetical order. It made it a lot easier to remove maps if I ever needed to, and since I was using an AMX map vote plugin, it didn't get boring - it wasn't all the cs maps first, and then all the de maps. If you're not using AMX, try mixing up the maps into an order that seems like it would be fun. Maybe put lesser-played maps in between dust2 and aztec, to keep the gaming interesting. Or, delete all but the four or five most popular maps, to have a server with only those most popular and well-played maps. |
Author: | Amaroq [ 09 Jul 2011 17:05 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Auxiliary Server Files There are some auxiliary server files that, while you don't necessarily have to edit them, may be interesting to edit. BotChatter.db This file tells the server where to find the sound files that the bots use when talking. You could edit these files to point to random sounds or your own bot chatter if you wanted. BotProfile.db In here, you can edit the bot profiles. You can change their teamplay, their courage, their accuracy, stuff like that. |
Author: | Amaroq [ 10 Jul 2011 16:37 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing metamod Now that I have my basic server, I want to edit it. I'm trying to make a server that runs AmxModX, which requires metamod. (You should check this URL to get the latest version of metamod.) I need to be in my game's home directory. (czero, cstrike, dod, whatever it is.) So in my example, I'm at ~/czero/test/czero. Code: mkdir ./addons mkdir ./addons/metamod mkdir ./addons/metamod/dlls cd ./addons/metamod/dlls wget http://prdownloads.sourceforge.net/metamod-p/metamod-p-1.19p32-linux_i586.tar.gz tar xfz metamod-p-1.19p32-linux_i586.tar.gzI personally like to delete the tar.gz file once I've extracted it. Code: rm metamod-p-1.19p32-linux_i586.tar.gzNow, back in the server's root directory, there is a file called liblist.gam. I have to edit it. I can either go back there by typing the full path of the directory: Code: cd ~/czero/test/czeroOr I can use a handy shortcut. cd ../ means to go up a directory: Code: cd ../../../ Code: nano liblist.gamEdit the line: gamedll_linux "dlls/cs_i386.so" Replace it with: gamedll_linux "addons/metamod/dlls/metamod_i386.so" Now you have metamod installed and you can go on to install other mods, like AmxModX. [youtube][/youtube] |
Author: | Amaroq [ 10 Jul 2011 16:57 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing AmxModX I am creating this test server primarily to test out AMX plugins, so I'm going to install AmxModX next. First, I have to get the necessary files. Make sure you download the AMX base file, and then the specific AMX file that works with whatever game you are running. I am installing the cstrike one since I am running a Condition Zero server. Once I have these files, I will extract them. Then I will create a file called "plugins.ini" in the metamod directory that tells metamod that I am running AMX. I need to start out in my server's base czero folder. Code: cd /home/gamer/czero/test/czero wget http://downloads.sourceforge.net/project/amxmodx/AMX%20Mod%20X%20Base/1.8.1/amxmodx-1.8.1-base.tar.gz wget http://downloads.sourceforge.net/project/amxmodx/Counter-Strike%20Addon/1.8.1/amxmodx-1.8.1-cstrike.tar.gz tar xfz amxmodx-1.8.1-base.tar.gz tar xfz amxmodx-1.8.1-cstrike.tar.gzAgain, I like to remove the tar.gz files. Code: rm amxmodx-1.8.1-base.tar.gz rm amxmodx-1.8.1-cstrike.tar.gz Code: echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" > /home/gamer/hlds/czero/addons/metamod/plugins.iniNow you have a basic HLDS server with AmxModX running. Time to do some more configuration! [youtube][/youtube] |
Author: | Amaroq [ 11 Jul 2011 18:00 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Adding Plugins Adding plugins to a server can seem tricky, but it's actually just a lot of steps. Step 1: Find (or make) a plugin. If you know the AMX scripting language, you can make your own plugin, but chances are you'll just want to download plugins that other people have made. The place to do that is alliedmods. They have tons of plugins, and if you can't find what you're looking for you can put in a plugin request and possibly have somebody make it for you. Step 2? Compile the plugin. There are two types of files you might download from alliedmods: An amxx file (which is the actual plugin) and a sma file (which is the scripting file). Or you may just have a sma file that you wrote yourself. Either way, at some point, you may have to compile a plugin. Put the .sma file into the czero/addons/amxmodx/scritping folder. Let's say it is called filename.sma. In that directory, use the following command: Code: ./amxxpc filename.smaThis will compile your filename.sma into an amxx file, called filename.amxx. Now, move that file to the /amxmodx/plugins folder. Code: mv filename.amxx ../pluginsStep 3: Edit the plugins.ini file. There is a file in /amxmodx/configs called plugins.ini. Use nano to edit it. At the bottom, there should be a section for Third party plugins. Add filename.amxx to the list. It should now look something like this: Code: ; AMX Mod X plugins ; Admin Base - Always one has to be activated admin.amxx ; admin base (required for any admin-related) ;admin_sql.amxx ; admin base - SQL version (comment admin.amxx) ; Basic admincmd.amxx ; basic admin console commands adminhelp.amxx ; help command for admin console commands adminslots.amxx ; slot reservation multilingual.amxx ; Multi-Lingual management ................ ; Enable to use AMX Mod plugins ;amxmod_compat.amxx ; AMX Mod backwards compatibility layer ; Custom - Add 3rd party plugins here filename.amxxThis tells AMX to look for that plugin. Step 4: Edit the plugin cvars. Most plugins have variables that you can control, called cvars. These will be things like how long it takes to respawn, how much money players get at the beginning of rounds, or other variables related to whatever plugin you have installed. These cvars go into the amxx.cfg file located in /amxmodx/configs. Again, use nano to open this file. If you downloaded the plugin from alliedmods, it should have had a list of cvars. Add these cvars to the end of your amxx.cfg file, and configure them to your liking. Step 5? Editing the modules. Some plugins require specific modules to be active in order to operate. You can edit the active modules by editing /amxmodx/configs/modules.ini. A ; in front of a line means that the line is a comment. To activate a module, delete the ; in front of the line. |
Author: | Amaroq [ 11 Jul 2011 18:12 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Pingboost Now that I've got my test server set up, I'm going to launch it. I'm going to use the following launch parameters. Code: ./hlds_run -game czero +port 27015 +maxplayers 10 +map de_dust2_cz +sys_ticrate 1000I am trying to create a server that pulls close to 1000 fps. So I typed "stats" in the console to figure out how much it was actually pulling. ![]() As you can see, even though I specified sys_ticrate 1000, I am still only getting around 300fps. This is terrible. The first thing I can do is add pingboosting. Pingboost is a HLDS method of increasing server performance by changing the way it handles information. I really don't understand it, but I do know there are 3 types of pingboosting. pingboost 1 is the least effective but also least resource-intensive; whereas pingboost 3 is the most effective and most resource-intensive. So I launched my server again. Code: ./hlds_run -game czero +port 27015 +maxplayers 10 +map de_dust2_cz +sys_ticrate 1000 -pingboost 1 ![]() As you can see, I gained almost 200fps just by using pingboost. Next I tried pingboost 2 ![]() Here I got extremely close to 1000. It is unrealistic to expect to get 1000 all the time, and 980 is pretty damn good, so I'm going to stick with that. I don't want to waste that extra CPU just trying to get 10 more fps. That's a quick fix, but not really practical for somebody whose machine might not be able to handle pingboosting. Next I'll look at some other system tweaks that can help maximize your server. |
Author: | Amaroq [ 17 Jul 2011 02:12 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing HLTV Now that I've got some servers installed, I am also going to install some HLTV servers. HLTV allows you to record demos of matches or let players spectate a server without occupying a slot. So it's a useful thing if you're into competitive gaming. First, create some sort of directory for it to go in. Code: [gamer@localhost ~]$ mkdir ./hltv mkdir ./hltv/czero cd ./hltv/czeroNow, install a normal game server for whatever game you want HLTV. For example, I want an HLTV for my czero scrim server, so I'm making another czero server. Now, I installed that server in ~/hltv/czero. Within this directory, I need to create an hltv config file. I'm going to call this file hltv_scrim.cfg, because this is the config I'll use to connect the hltv to my scrim server. Code: // set HLTV proxy name as shown in score board name "Absurd Minds' HLTV" // set HLTV name, how it should appear in game server browsers hostname "Absurd Minds' HLTV" //HLTV player slots - the number of people who can connect to HLTV maxclients "20" // set offline info text clients will see as reject reason if HLTV isn't broadcasting yet offlinetext "Sorry, game is delayed. Please try again later." // Delay between actual server play and HLTV broadcast delay 120.0 // allow 3.5 KByte/sec as client rate. This is good a value // for internet broadcasts. On LAN you may set this value to 10000 maxrate 3500 // log HLTV console in proxy.log // logfile 1 // local chatting for HLTV spectators enabled chatmode 1 // if the server the HLTV is connecting to has a password, enter it here serverpassword "xxx" // proxy's adim password for rcon, commentator etc. adminpassword "xxxx" // show message for 5 seconds each 60 seconds in center of X axis (-1) and // above help text bar (0.85). Color given as hexadecimal RGBA . loopcmd 1 60 localmsg "You're watching HLTV. Visit www.valvesoftware.com" 5 -1 0.85 FFA000FF // hltv.tga will be shown instead of the default HLTV logo in spectator GUI // bannerfile "hltv.tga" // these commands will be executed on connecting spectator client and may be used // to adjust settings for HLTV (for example voice parameters) signoncommands "voice_scale 2; voice_overdrive 16; volume 0.5; echo Voice adjusted for HLTV" echo hltv.cfg loaded. //Game Server Connection Info - enter the game server ip and port in the following // format by adding a new line below the example shown. Then start your HLTV server connect xxx.xxx.xxx.xxx:xxxxNow I'm going to launch my server with the following command: Code: ./hltv +exec hltv_scrim.cfg -port 27015Oh snap! An error! Code: Error:libsteam_api_c.so: cannot open shared object file: No such file or directory WARNING! System::DispatchCOmmand: command "name "Absurd Minds HLTV" " not registered. WARNING! System::DispatchCOmmand: command "hostname "Absurd Minds HLTV" " not registered. WARNING! System::DispatchCOmmand: command "maxclients "20" " not registered. WARNING! System::DispatchCOmmand: command "offlinetext "Sorry, game is delayed. Please try again later." " not registered. WARNING! System::DispatchCOmmand: command "delay 120.0 " not registered. WARNING! System::DispatchCOmmand: command "maxrate 3500 " not registered. WARNING! System::DispatchCOmmand: command "chatmode 1 " not registered. WARNING! System::DispatchCOmmand: command "serverpassword "" " not registered. WARNING! System::DispatchCOmmand: command "adminpassword "xxx" " not registered. WARNING! System::DispatchCOmmand: command "loopcmd 1 60 "You're watching Absurd Minds HLTV. www.absurdminds.net" 5 -1 0.85 FFA000FF " not registered. WARNING! System::DispatchCOmmand: command "signoncommands "voice_scale 2; voice_overdrive 16; volume 0.5; echo Voice adjusted for HLTV" " not registered.To fix this, I typed the following: (Note: If you run your server in screen, type this after you open your screen console.) Code: export LD_LIBRARY_PATH=".:LD_LIBRARY_PATH"If you get a continuously scrolling message, for example Code: > No challenge for your address. > No challenge for your address. > No challenge for your address.or Code: > Bad challenge. > Bad challenge.add the following to the end of your hltv.cfg file: Code: nomaster 1 |
Author: | Amaroq [ 21 Jul 2011 16:27 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Adding Rules to iptables As I mentioned in the first post, CentOS default installs a firewall called iptables. This firewall is very powerful and very well built, but it can be difficult to configure it. Basically, iptables monitors all the traffic into your network adapter. It looks at this traffic, where it came from, where it is trying to go, what type of information it is sending, etc. Once it gathers that information, it consults its list of rules and decides what to do with the packets. For example, it may accept the data, or it might reject it and not allow it through. In general, it's a good idea to reject everything other than what you specifically want to accept. iptables lists its rules in a list, and it reads the list one at a time. The very last rule generally says "drop everything else". So I need to add a rule in there that tells the firewall to accept the important ports. The first thing you should do is check out portfoward.com's list of ports. Basically any game you can think should be up there, with a list of ports that need to be forwarded. Then you should turn on iptables, if it's not already started. Code: service iptables startYou can add rules to iptables by typing the rules in the command line. I started out with the following rule, because I am running multiple HLDS servers that I want to run: Code: iptables -A INPUT -p tcp --dport 27015:27020 -j ACCEPTThis said that I added a rule to the INPUT chain (the chain that looks at incoming traffic). If the protocol of that data is tcp (-p tcp) and it's destination is any of the ports between 27015-27020 (--dport 27015:27020), to accept that traffic (-j ACCEPT). I also added these two rules to deal with the UDP traffic of a HLDS: Code: iptables -A INPUT -p udp --dport 27015:27020 -j ACCEPT iptables -A INPUT -p udp --dport 1200 -j ACCEPT. Next I saved the rules: Code: service iptables saveIf I were to stop and restart iptables, it would restart with the rules I just added. If I didn't save them and I restarted iptables, it would flush the added rules and restart with the previous rules. If I type Code: service iptables statusI can see an output of all my rules. Code: Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:1200 3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:27000:27039 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:27000:27039 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:23 11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 12 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 13 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21 14 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443 15 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:137 16 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:138 17 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:139 18 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:445 19 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2049 20 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedIt looked all right to me, but when I started the server, I still couldn't see it. Upon further investigation, I noticed that the firewall was actually taking incoming traffic and sending it to a different chain, RH-Firewall-1-INPUT. So I changed my rules a little bit and saved: Code: iptables -A RH-Firewall-1-INPUT -p tcp --dport 27000:27039 -j ACCEPT iptables -A RH-Firewall-1-INPUT -p udp --dport 27000:27039 -j ACCEPT iptables -A RH-Firewall-1-INPUT -p udp --dport 1200 -j ACCEPT service iptables saveBut this still didn't work, and here is why. If I add a rule by doing -A, it appends the rule to the end of the chain. However, iptables reads the rules in order. So, by adding my rules to the end, it actually added them to after the rule to reject all other traffic. So iptables was rejecting the packets before it was able to see that I wanted to accept them. So I deleted my mistake rules Code: iptables -D RH-Firewall-1-INPUT -p tcp --dport 27000:27039 -j ACCEPT iptables -D RH-Firewall-1-INPUT -p udp --dport 27000:27039 -j ACCEPT iptables -D RH-Firewall-1-INPUT -p udp --dport 1200 -j ACCEPT service iptables saveThen, instead of using the -A command to add it to the end of the rules list, I need to use the -I command, which will put it at the beginning of the list: Code: iptables -I RH-Firewall-1-INPUT -p tcp --dport 27000:27039 -j ACCEPT iptables -I RH-Firewall-1-INPUT -p udp --dport 27000:27039 -j ACCEPT iptables -I RH-Firewall-1-INPUT -p udp --dport 1200 -j ACCEPT service iptables saveOnce I put my rules in like this, it worked fine. |
Author: | Amaroq [ 06 Oct 2011 20:37 ] |
Post subject: | Re: Installing a CentOS server for gaming |
EDIT: The below guide on how to install a TF2 server is out of date. Valve requires all of their games to be installed through the SteamCMD program. That means that installing a TF2 server is exactly like installing a CS:GO server, except you'll use the appropriate Dedicated Server ID for the game you're wanting to start. I also want to install a Source server, in this case, a TF2 server. First, I create a directory in my user's home directory in which to put the server. Then I cd to that directory. Code: mkdir ./source/tf2 cd ./source/tf2Installing the server is very similar to installing a HLDS. Code: wget http://storefront.steampowered.com/download/hldsupdatetool.bin chmod +x hldsupdatetool.bin ./hldsupdatetool.bin yes chmod +x steam ./steam -command update -game tf -dir .Now, when you install it, it will take quite a while. If you are installing it remotely through PuTTY, it would be a good idea to use screen. (Remember, you can always check out this page for a full list of games you can install using the hldsupdatetool.) You have no installed a TF2 server. To launch the server, use a command line very similar to that of the HLDS Code: ./srcds_run -game tf +ip yourIP +port yourPort +maxplayers 24 +map ctf_2fortWhen I first tried this, I got an error: Code: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directoryI fixed that by installing a library as root. Code: su - root Password: yum install zlib.i386 su gamerOnce I did that, the game executed fine. Now it's time to configure it. |
Author: | Amaroq [ 31 Oct 2011 18:23 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing Metamod Source is slightly different from installing Metamod for HLDS servers, but not too much different. First off, you have to download the most recent linux version of Metamod. To do this, make sure you are in the server's base directory (in this case, tf). (Note: These URLs may be out of date. Make sure to check the main metamod page for the most recent Metamod release.) Code: wget http://www.n00bsalad.net/sourcemodmirror/mmsource-1.9.0-linux.tar.gz tar xfz mmsource-1.9.0-linux.tar.gz rm mmsource-1.9.0-linux.tar.gzYou'll see it actually creates the addons/metamod directory, which is different from the HLDS version. Next, you have to generate a metamod.vdf file. Once you have done that, place it in the addons folder. You can now launch your server with metamod. To test to make sure Metamod is running, you can type "meta version" in the server's console. If it gives you an output, you are good. If it says "Command not found", you have installed it incorrectly some how. |
Author: | Amaroq [ 31 Oct 2011 18:31 ] |
Post subject: | Re: Installing a CentOS server for gaming |
You have to install Metamod in order for you to be able to install SourceMod. Once you've gotten Metamod installed, you can continue on by intalling SourceMod. First off, download the SourceMod file into the game's base directory (in this case, tf). Code: wget http://y4kstudios.com/sourcemod/mirror/sourcemod-1.4.6-linux.tar.gz tar xfz sourcemod-1.4.6-linux.tar.gz rm sourcemod-1.4.6-linux.tar.gzAnd that's it! Restart your server. You can test your install by typing "meta list" in the server's console. It should list SourceMod as one of the metamod plugins. |
Author: | Amaroq [ 07 Nov 2011 12:07 ] |
Post subject: | Re: Installing a CentOS server for gaming |
Installing plugins is a lot easier in SourceMod than installing plugins in AMX Mod X. All you have to do is place the files in the appropriate place (plugins will always tell you where the files go), and it's done. For example, I would put the .smx file (the plugin) in the orangebox/addons/sourcemod/plugins directory. Simply placing the plugin in that directory automatically activates it without you having to place the name in a plugins.ini file like with AMXX. If you wish to disable a plugin, simply move the .smx file to the /plugins/disabled directory. To refresh the plugins after installing, either restart the server or type "sm plugins refresh" in the game console. You can also type "sm plugins list" to make sure your plugin is active. |
Page 1 of 1 | All times are UTC-04:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |