I want to say first that this is not the only way of setting up a Steam Game Server (like CSS, DODS, TF2, L4D2, etc). There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you and you carry responsibility at your own!

Precondition:
- Linux basics
- A dedicated Linux (Dedian / Ubuntu) Root Server with SSH access
- programs Putty or SSH Explorer

Install Screen, if it isn’t already:
apt-get install unzip screen nano

Create steam game User and Folder:
cd /home
mkdir steamgame
cd steamgame

useradd -g users -d /home/steamgame -s /bin/bash -c "Your Dedicated Steam Game Server" steamgame

Get Steam:
wget http://storefront.steampowered.com/download/hldsupdatetool.bin

Make hlsupdatetool.bin executable:
chmod 744 hldsupdatetool.bin

Execute updatetool and accept the EULA with “yes”:
./hldsupdatetool.bin

Get Server Files, then let the server update itself and repeat the command:
./steam -command update -game "steamgame" -dir /home/steamgame

Recommendation:
Go make yourself a nice cup of Tea. Updating the Server files will take a while!

Edit the server.cfg file to your requirements.

Startup the server as user “steamgame”, NEVER run a server as root!!!!
Getting Shell Script:

wget http://www.bob.geek.nz/files/css.sh
Rename css.sh to steamgame.sh, if needed
chmod 744 steamgame.sh
chown steamgame:users /home/steamgame -R

Carefully edit steamgame.sh to your requirements.

Become the user steamgame:

su steamgame

Finally, you can now start the server:
./steamgame.sh

Your server should now be loaded check server status by using gametracker.com or hlsw game server tool.

With steamgame.sh you can use start, stop and restart.

So for example if you want to restart your server you would type:

./steamgame.sh restart

I hope this guide helps a few people out there. Let me know if you have any questions.