This item has been removed from the community because it violates Steam Community & Content Guidelines. It is only visible to you. If you believe your item has been removed by mistake, please contact Steam Support.
This item is incompatible with Garry's Mod. Please see the instructions page for reasons why this item might not work within Garry's Mod.
Current visibility: Hidden
This item will only be visible to you, admins, and anyone marked as a creator.
Current visibility: Friends-only
This item will only be visible in searches to you, your friends, and admins.
I've created this guide due to the amount of people asking me about how I set up a server and if I can help them. This guide will take you through from getting a dedicated server to running and opening your server.
Everything in this guide is my way of doing things/opinion. There are many other ways to do things, so you may disagree with some of my methods. You are free to use your own methods if you prefer. This guide is also very basic, giving the very basics to run a dedicated server, there is much more required to make these servers secure and tuned to run well. Which I won't be going in to in this.
About Me: I've 4 years' experience in running and maintaining Game Servers. I ran one of the top 10 networks on Garry's Mod back in 2014, which had over 100 players across 5 different servers, all spread across a multiple servers across the EU. With redundancy support for when failures happened. At 1 point, I had 7 Dedicated servers spread from San Francisco, US, London, UK to Strasbourg, France handling, supporting and monitoring all the servers to handle those 100+ players.
During those 4 years I have spent 3 and 1/2 years running dedicated servers (It has been much cheaper for me in the long run, as well as giving me some great experience and helped me get my 2 jobs so far) I spent 6 months using Windows Server 2008 before realising that Linux was more powerful and better to run servers and since changing to Linux I haven't looked back. It may be a steep learning curve at first learning Linux but once you learnt the basics it becomes a very powerful tool to use.
Over the last 4 years I have self-taught myself everything I've learnt about Linux and am where I am today because of that. There are plenty of guides and tutorials all over the internet that teach you small things that you can combine together to make some powerful things in Linux, which have all helped me to get to the point where I am today.
Once I got experienced with Linux, I moved on to learning bash with is a very powerful language that makes automating server work 100 times easier. For example, I have created a tool on Github that is a Bash Script that updates all your defined servers with the latest patch of the defined game: https://github.com/BearWoolley/Basic-Steam-Updater as well as my own bash scripts to start and stop servers for Gmod. Which I won't be releasing as this are quite advanced and wish to keep these private.
I am also currently a Software Engineer for a software development company in the UK. I am primarily a backend developer in C# and PHP, but also a frontend developer in HTML, SASS, AngularJS and TypeScript.
Basic Linux knowledge You must understand the basic commands of Linux to be able to follow this guide.
You must at least be able to understand:
Printing all the files in the directory
Running bash files
If you do not know these then there are plenty of guides on Google that can teach you. You can follow this guide but once it's setup you will struggle to understand how to run your servers or change them in the future.
The software below are required to be able to successfully run a server on Debian or Ubuntu.
Used to connect to your servers and executing commands
If you already have a dedicated server and are not interested in getting a new one you can skip this section.
There are plenty of different server hosts on the internet that offer different types of servers. However, I find most server providers either simply resell other hosting companies servers, over charge for their servers or cram as many people as they can on to a single machine.
Why get a Dedicated Server? Dedicated servers only allow you to have access to the machine; you are only the single person using it, which means you can use the resources in any way you want.
This means you can create as many different Game Servers/Services as you want on your server. If you want, 10 Game Servers with 50 players each you can do (Would not recommend it though). This means you would save a lot of money running a single dedicated server instead of buying multiple instances of a hosting company.
Important Information A few things are important to know about servers and Garry's Mod that you should know before buying a Dedicated Server.
1. Garry's Mod is heavily geared towards being single threaded. What this means is that most of Gmod is only ever going to be ran on a single core in your CPU. Some things are Multi-Threaded but not much.
So what does that mean? Well this means that no matter how many cores you get for your dedicated server it will not increase your performance. This means you need to look for a CPU that has the highest clock rate possible to execute each task scheduled for the single core as quick as possible. The quicker the core does it's tasks the less lag there will be for players. (I won't go in to any more detail about this, as this isn't a technical guide about how CPU's work.)
2. RAM does not increase performance. Garry's Mod is not heavy on RAM usage. Therefore, you do not need a server with high amount of RAM unless you are going to be running over 10+ servers.
For example at this exact moment for my 3 Gmod servers that I have running that have been running for 35 days with no restarts, they are only using 1.7GB of RAM out of the 32GB I have on my machine. (That is also included my Web Applications and OS)
3. Bandwidth is important for big servers. When looking for a dedicated server the host should state what bandwidth, the server will get. The more players you have on your server the more bandwidth your server will use. If it gets to the point where the server doesn't have enough bandwidth, then the server has to hold back packets till there's enough bandwidth to send them, which will cause lag for players.
100Mbps to 250Mbps should be fine for any small to medium servers. However, if you are large server you really do want to aim for 1Gbps if possible or at least having bursting on the machine.
4. SSD's or HDD's? Well from my experience running Gmod servers I have seen no real improvements between an SSD or HDD. They both seem to roughly the same.
So if there is a choice and you want to save money then a HDD is a good option.
My recommended hosts: If you don't have a dedicated server already, I highly recommend one of these. This is my own opinion on hosts. I have used all this hosts and can swear by them that they provide what you expect for your money.
Small Servers(Single server up to 30 players):
DigitalOcean[www.digitalocean.com] (If you wish to get $10 in free credit when you sign up, scroll down to the support section) DigitalOcean offers quick deployments of droplets that can be setup in seconds and configured to how much resources that you want. Very easy to use and configure and you are only charged for any droplets that you have. If you have none you aren't charged!
Offers hosting anywhere in the world, which means players will have a low ping to your servers.
I would recommend either the 1GB or 2GB option as Gmod doesn't use much RAM but relies heavily on CPU as it's single threaded.
I have used DigitalOcean for over 3 years for Web Servers and never had a single problem other than planned maintenance that they informed me.
Kimsufi[www.kimsufi.com] Kimsufi is a part of the OVH group that provide quality servers for cheap prices. Kimsufi is the cheapest servers that the OVH group offer. The also offer free Anti-DDoS protection as well, which can stop any attack against your servers. (I've never had a single DDoS attack take down any of my servers whilst with the OVH group and I must have had over 50 attacks now.)
Kimsufi only offers two locations, France and Canada. However, France easily provides to the whole of Europe with low ping and Canada provides to the US with a responsible low ping.
I have used Kimsufi many times for Game Servers and have had no issues untill I tried to push over 30 players on 2 Gmod servers, which started to experience lag. But for around 20 players I experience no problems at all.
I would recommend either the KS-4C or the KS-3C (These are better servers then the ones I used with Kimsufi at the time) these will easily be able to run small to medium size Gmod servers.
Medium size servers(2 - 5 servers with 30 players on each or 1 server with 50 players on):
SoYouStart[www.soyoustart.com] SoYouStart is part of the OVH group; they sell the intermediate range of servers, nothing too small or too powerful. Once again, SoYouStart only offers locations in France and Canada
I have mostly used SoYouStart for the last 4 years and my current servers are running now on their GAME-2 server right now. I was able to run my successful network with over 100 players on at one time on a SoYouStart server fine with no lag. (Be aware none of those servers were DarkRP or had loads of addons on.)
For any medium to large server I highly recommend SoYouStart, it's cheap but powerful and comes with free Anti-Game DDoS protection built for Source games and voice over IP servers.
Large size servers(5+ servers with 30 players on each or 1 - 2 servers with 100 players on):
OVH[www.ovh.co.uk] OVH is one of the global leaders of servers in the world, providing everything required to run anything from a tiny web server to full-fledged multi-nation business.
OVH offers many different configurations for servers. For the Game Servers section alone, there is seven different choices of Game Server, which you can configure, to your needs.
OVH is the most expensive out of three in the OVH group, however they are the most powerful servers you can get. As stated about locations are own provided in France and Canada. However, easily can provide for players in the EU or US. I've hosts all my servers from France for all my EU players for 4 years and had no issues.
As part of OVH you also get Anti-DDoS GAME which is designed to protect from UDP attacks that target Source Servers and Voice servers. Meaning your game and voice servers and never taken down by an attacker once the Anti-DDoS has kicked in.
If you are interested in getting a powerful server from OVH then I would highly recommend either the MC-32 or the MC-64-OC Game Server they offer. This would handle a very big community that relies on loads of addons and CPU usage.
Chapter 2: Setting up the Dedicated server and making the server secure
We can now start the process of getting your dedicated setup and secure. We can then start to get Garry's Mod installed and running on your machine.
Once you bought a server, you should receive an email from your hosting company with the details about the server IP Address, Username and Password. Like the picture below:
Step 1: Setting up Putty and saving the server for future connections.
1. Open up Putty
2. Enter your IP Address in the "Hostname Field".
3. Leave the "Port" as 22.
4. If you wish to save the server so you don't need to enter the IP Address and port each time. Then enter a name in to the "Saved Sessions" field and press Save to the right.
Step 2: Logging in to the server and updating packages to latest versions.
1. On Putty click the open button 2. If the screen below appears then click yes.
3. Enter the username that your hosting company sent you.
4. Enter the password that your hosting company sent you. (You will not see anything when you type/paste the password)
5. You should of been successfully logged in and see a screen like this below (Maybe different depending on your hosting company)
4. Update the packages for the operating systems to ensure that everything is update to date and secure.
apt-get update;apt-get -y dist-upgrade
Step 3: Creating a new user to access the server
As part of securing the server, we need to disable the root account, but doing that means we won't have a way of access the server. Therefore, we need to create a new user account to be able to access the server.
1. Adding a new user
If you want a username that contains capitals, you must add this to the end of the commands
adduser <name> --force-badname
2. Enter the password you want for the user.
3. Press enter on all the information the server wants and enter Y at the end
Step 4: Allow the new user to run commands as root
1. Install sudo (This may already be instead)
apt-get install sudo
If it's already install will look like this:
2. Add your new user to sudo
usermod -a -G sudo <username>
This will now allow your user to run commands as root without having to login as root
3. Check to ensure you can login to your new account Close your Putty and start it up again. Open the server and enter your new Username and Password
4. Check to see if you can run commands as sudo
5. Understand the powers of sudo and when you accept them enter your password in
6. You should now be the root user
Step 5: Changing default SSH port and disabling the root account
1. Open open the SSH config
2. Change the port to a new number. It's recommend to have something over 1024.
3. Disable the root account. (Use the arrow keys to move down until "PermitRootLogin" set it to no
4. Save the file
Press Ctrl + X
The press Y and then Enter
5. Now restart the SSH service to apply our changes
service ssh restart
6. Now close your Putty and open the browser back up.
Update your server to use the new port you set.
This concludes making your server secure on a very basic level. This is the basics to prevent people from breaking in to your server. If you wish to make it more secure you can look in to fail2ban, SSH keys or google for more info on making servers secure.
Chapter 3: Setting up folder structure and basic applications
In this section, we will cover a folder structure for running your servers. This is my preference on structuring folders; you may have your own opinion and your preferred method.
I find that splitting all your servers in to clear servers makes them easy and clear to expand on in the future if you wish to expand your servers.
server1 (I normally name these as their games)
css (Used to mount to Gmod)
steam (Used for Steamcmd explained in next section)
Here's an example of my folder structure from my live server, very similar to the above, apart from I don't have 2 Counter Strike: Source folders, because I know I will never have any other Counter Strike: Source server on my machine.
Use the Linux command mkdir and cd to build up the structure you wish to have. From now on all demos below will be using this structure above so if you are using a different structure you will need to tweak your commands to handle them.
Additional Applications needed
Apache: (I prefer Apache to Nginx; you can use what you like)
Apache is used to run all your web applications that you might use, in this guide, I will only cover FastDL for your web server, but you can add any other web applications you like.
1. Enter in:
sudo apt-get install apache2
Enter your password and if you are prompted enter "y"
Once it's done it should look like:
2. Check to see if it has installed properly:
Go to your web browser and type in your IP address of the server, it should look like this:
1. Enter in:
sudo apt-get install vsftpd
Once it's done it should look like this:
Now we can use our FileZilla to view the server files and upload our own files to it.
Step 1: Open FileZilla
Step 2: Enter in Host of the server.
Replace <ip address> with your machines IP Address.
Step 3: Enter your Username and Password in.
Step 4: Enter the port you set as your SSH port.
(If you used above then most likely will be 2222)
Step 5: Click "Quickconnect" and then you should be able to view your folders and files in your server. You can then navigate around by double clicking folders or ".." to go up a level.
From now on, you can click the arrow next to "Quickconnect" to quickly connect to your server. You can also add the server to your Site Maneger, but I won't cover that.
We now have the basic folder structure set up and we have our 2 basic applications installed. In the next chapter, we will go over installed SteamCMD to our machine to download Garry's Mod.
Chapter 4: Installing SteamCMD
We are required to install SteamCMD to download the game servers to our machine from Steam.
SteamCMD requires you to login in and then you can download any of the dedicated servers that Steam offers. For the full list of the Dedicated servers that Steam has you can view them here: Steam Dedicated servers
In the link above, you will see the App ID's for each game this is used to select which game you wish to download. You will see later on where to use this.
Be sure to be in your Steam folder before running these commands. Use the "cd" command to navigate to it. My Steam folder for example is: /home/BearWoolley/servers/steam
Install Curl, this is used to download the SteamCMD file
sudo apt-get install curl
Install lib32gccl, SteamCMD requires this to be installed to work correctly
sudo apt-get install lib32gccl
Download the SteamCMD file and extract it to your folder.
Now we have SteamCMD installed. In the next section, I will go in to detail on how to use SteamCMD and setup a Garry's Mod server.
Chapter 5: Downloading Gmod from SteamCMD
Now that we have SteamCMD install we can install our first Gmod server.
Be aware this section can work for multiple servers or other games.
Downloading Games From SteamCMD
Step 1: Run the SteamCMD application. (If this is your first time, there will be a big update to it.)
Step 2: SteamCMD requires you to login to access content. Some games you don't need to login and can use an anonymous login. For other games you will need to login with your actual Steam account. (Check the Dedicated Servers List from Steam to see if anonymous login works for the game you want)
For this, we will login with the anonymous user as Gmod doesn't require you to be logged in.
Step 3: Now we are logged in, we need to tell SteamCMD where to install the files.
Replace <name> and <server name> with your options. See the example below for mine.
Step 4: Now SteamCMD knows where to put the files, we need to tell SteamCMD what game to download to that location. (This is where the App ID's for games comes in. 4020 is Garry's Mod App ID.)
With this we add the validate command to the end to ensure the files are downloaded correctly and not corrupted.
app_update 4020 validate
Step 5: Now the files should be installed and your terminal should look like this when completed.
Step 6: We can now safely exit SteamCMD.
Now you should have Gmod installed in your location. We will go in to more detail about running your server in Chapter 8.
Chapter 6: Downloading and setting up Counter Strike: Source for textures for the Gmod server
In this section we will go in to detail about setting up a Counter Strike: Source (CS:S) server on to your machine.
The reason why we are doing this is most things in Garry's Mod require textures, models, materials, sounds or maps from Counter Strike: Source.
So we have to set this up on our server and mount CS:S to our Garry's Mod for it to work correctly.
Downloading Counter Strike: Source From SteamCMD
Step 1: Navigate to your Steam folder and run the SteamCMD application.
Step 2: We need to login to SteamCMD. There is a bug currently with SteamCMD that means that Counter Strike: Source can only be downloaded with the Anonymous user. You cannot use your own login to download the server. (As of March 27th 2017 this is still stated by Valve that it is still a bug.)
Step 3: Now we are logged in, we need to tell SteamCMD where to install Counter Strike: Source.
Replace <name> with your user. See the example below for mine.
Step 4: We now need to download CS:S to that location. So we need to run an app_update for CS:S. (The App ID for CS:S is 232330.)
app_update 232330 validate
Step 5: Now wait for CS:S to finish downloading, once it's finished it should look like this.
Step 6: Quit out of SteamCMD.
Step 7: Navigate to your cfg for your Gmod server in FileZilla.
Step 8: Open mount.cfg by right clicking and selecting "View/Edit" and the file should open and look like this.
Step 9: Now we need to tell the mount file where to find Counter Strike: Source so when the Gmod server starts up it can load of the files needed.
Replace the "cstrike" with the line below; ensure you have the correct location.
Ensure to replace <name> with your user to make it work. As shown below.
Step 10: Save the file and upload it back to FileZilla.
We have now successfully downloaded and installed Counter Strike: Source to our machine. We have also now configured our Gmod server to detect where the Counter Strike: Source files are and load it in to the server, so that players can interact with all items in our server.
In the next section, we will go in to detail about setting up a FastDL server so our players can download our files quick from our server only once ever.
Chapter 7: Setting up a Fast Download server
For a Fast Download server, you will need to have apache setup and running (Should be been done in Chapter 2). You can then manually upload your compressed files (Needs to be bz2 compressed) to your web server or you can use an automatic tool (detailed below) to do it all for you.
SourceRSC[www.brainless.us] (Automated bz2 compression) SourceRSC is a tool that takes your files (It knows which files are required) from your game servers and compresses them and places them in your FastDL folder location for your players. I have used this tool for many years and has always worked for me.
DISCLAIMER: Please be aware this tool is Free for non-commercial use. Commercial or automated/scripted use requires a license.
If you are willing to use SourceRSC then please follow the rest of this section.
Downloading and setting up SourceRSC
Step 1: Before we can run SourceRSC we require to install mono to our server. Because we are running Linux on our machine, we can't run .exe files on the machine. However, mono allows use to run .exe files on a Linux machine. Amazing right? Who would imagine running windows programs on Linux.
sudo apt-get install mono-complete
Step 2: Your machine will warn you that it's a big download and will require a large amount of space, press "Y" to this.
Step 3: Once Mono has finished downloading and installed itself your terminal should look like this.
Step 4: Navigate to the SourceRSC and download the latest zip file.
Step 5: Extract the zip to somewhere on your computer. Best to name it "SourceRSC" to make it easier for next steps.
Step 6: Rename the example-linux.ini to "sourcersc.ini"
Step 7: Now we need to configure the .ini file to work with our server.
Set GameMode to: "GMOD"
Set ServerPath to: "/home/<name>/servers/gmod/<server>/garrysmod" (Replace <name> and <server> with your options you selected earlier)
Set RedirectPath to: "/var/www/html/fastdl"
The rest of the options you won't need to change.
Step 8: Now go to your FileZilla and navigate to your server folder.
Step 9: Upload your SourceRSC folder to FileZilla.
Step 10: Now in your terminal navigate to your server location.
Step 11: Change in to our new folder we uploaded.
Step 12: Now we can run the application that will compress all our files to bzip2 and place them in to our FastDL folder.
sudo mono SourceRSC.exe
Step 13: Enter your password when prompted.
Step 14: (Optional) If you get the following error about the RedirectPath not existing, then that means we haven't created the folder where the FastDL files are placed.
Exit the application and type the following to create the needed folder. Once created rerun Step 12.
Step 15: Now once you have run the command and the application has compressed any needed files it should look like this.
Step 16: Now if we navigate to our FastDL on our browser we should be able to see the folders and files that SourceRSC compressed and uploaded for us.
Replace <ip address> with your servers IP adress as example below.
Now we have SourceRSC up and running. We can now compress any files we upload to our server so our players can quickly and easily download them. However, we haven't setup Gmod to load the files from our server, so we need to do that.
Setting the FastDL location for our Gmod Server
Step 1: On FileZilla navigate to your cfg folder for your server.
Step 2: Right click server.cfg and select "View/Edit".
Step 3: By default, Gmod doesn't come with a predefined server.cfg file. I have uploaded my server.cfg below so you can copy and paste it to your server.
Replace <ip address> with your servers IP Address.
If the server crashes then do the command "Ctrl +C" to exit the server.
Step 3: (Optional if you get this error) If you receive the following error when running the command above. Then we need to install libstdc.
Error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
To install libstdc we run the following command.
sudo apt-get install lib32stdc++6
Attempt to run the command in Step 2 again after this.
Step 4: (Optional if you get this error) If you see the following error then we need to install libtinfo on our server.
Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
To install libtinfo on our server we need to run the following command.
sudo apt-get install lib32tinfo5
Attempt to run the command in Step 2 again after this.
Step 5: If your Garry's Mod server is working and running correctly then your terminal will look very similar to my picture.
Congratulations, you now have a working server. You can now go to your Garry's Mod, go to legacy browser and look for your IP Address and you should be able to join your server!
Making your Garry's Mod server automated and running it in a screen
Now we can automate the server starting up. Currently we are running the server in our terminal, which is never good, as soon as we close our terminal we lose our server.
Thankfully, Linux has a thing called screen that allows applications to be ran without having a terminal open, running them in the background of your machine.
We will need to create a basic bash script to run the server in a screen.
Step 1: Navigate to your server directory
Step 2: We need to create a new file to run the server.
Step 3: Copy and paste the code in to the file.
echo "Starting <server_name> server!"
screen -A -m -d -S <server_name> ./srcds_run -game garrysmod +ip <ip address> -port 27015 +exec server.cfg +maxplayers 16 +map gm_construct +gamemode sandbox
echo "<server_name> server has been started"
echo "To connect to bhop log do: screen -x <server_name>"
Replace <ip address> and <server_name> with your IP Address and your Server Name.
Step 4: Save the file.
Simply do "Ctrl + X" then write "Y" and press enter.
Step 5: We need to give permission to run the command so that the server can start.
chmod +x run.sh
Step 6: (IMPORTANT: This is how you will run your server from now on) Now to run our server with this script, we run the following command.
Step 7: (Optional depending if you see this error) If you see the following error, we need to install screen to our machine.
./run.sh: 4: ./run.sh: screen: not found
To fix this we need to install screen, run the following command.
sudo apt-get install screen
Once you have install screen rerun Step 6 again.
Step 8: If Step 6 worked, your terminal will look this this below. This means your server has started and is running.
Step 9: (IMPORTANT: This is how you will acess your Garry's Mod console from now on) To view the Garry's Mode console and run commands, you will now need to view the screen.
screen -x <server_name>
Replace <server_name> with your Server Name.
Once you are in the screen there's a few things you can do.
1. Running commands you can just type in.
2. To exit the screen but leave your Garry's Mod server up and running, do: "Ctrl + A + D" and you will leave the screen.
3. To kill your server you can either type: "quit" in the console or do: "Ctrl + C"
That's all there is to setting up and running your server. You can go install your gamemodes, addons, models, materials, maps, etc. (I won't be covering that in this guide)
The important things to remember is to run your server you now do:
From your server directory.
To access your server console you now do:
screen -x <server_name>
Help If you have any problems with any of the steps or see any issues with the steps then please leave a comment and I will try my best to help you.
DigitalOcean $10 credit If you wish to receive $10 on DigitalOcean to use towards your first server and wish to support me for this guide and help me fund my servers you can use this referral link: Digital Ocean[m.do.co]
If you use the 1GB RAM droplet that will pay for the whole of your first month with DigitalOcean.
I may update this guide on how to create web applications so that owners can create their own forums, web sites, donation apps, bans, etc.
Might go in to detail about SSH Keys and Fail2Ban to make your servers more secure.
Support I've spent weeks writing this guide for users and normally I would charge someone $30 to do this for them, but decided to write this guide for free. If you found this guide helpful for your servers and wish to support me for it, please either use my Digital Ocean referral or help me fuel my coffee addition and give me a small donation.