SRCDS Steam group


[Tutorial, Linux] Dedicated Garry's Mod Server on Linux
#1
The formatting may be a bit off, for that I apologize. I originally wrote this as a guide on Steam, the formatting there looks a little cleaner.

I hope this helps some people out.


Getting Started

Setting up a dedicated server on linux is a bit of a hassle if it is your first time attempting it. There are so many conflicting and outdated tutorials out there that it is difficult to figure out what exactly you need to do. If something goes wrong, is the fix that you found even going to help or is it outdated too?

I hope that through this guide I can help get you on the right track.

To start, you will need a server. You can run one on your own hardware, or you can find a paid hosting service. Personally, I use www.digitalocean.com since their servers can be used for other things as well (handy for FastDL).
[Image: 5097A716D897B501D900B4B8B15684196DD25DEF]
For this guide, I will be running 32-bit Debian 7. You can run the server on 64-bit, but you will need to move around some files. A quick Google search should get you the info you need, but for simplicity's sake, 32-bit will work just fine.

You will also need:
---------------------------------------------------

Users, Directories, and SteamCMD
Whether you are hosting locally or remotely, you will need to have console access to your server. I am using PuTTY as my SSH client to connect to my server using the login information provided by my host. You will need to do the same unless you have direct access to the machine the server will run on.

[Image: 8207BD8B416BDC599E660BCF298B61EA7AEE34A6]

Enter the IP address of your sever in the highlighted area, make sure SSH is selected, and click open. You may get a Security Alert that says, "The server's host key is not cached in the registry." If you do, choose Yes. This just verifies that you trust the server you are connecting to.

When it connects it will open a new session and you should see a prompt like this:

[Image: F9F9A11CAE6665647515ACB1799E7BA9AB1B315B]

Since my host provided me with the Root account information, I will login with that. Once you are logged in and you see this prompt, you are ready to make the user account to run the server (You can use root, but it's frowned upon. Be a rebel.):

[Image: B7B48DF1725FE0B82A36324CAFDD99D8BD410B34]

Create a new user using adduser. I chose the username "gmod".
Code:
adduser gmod
You will need to enter a password and user information. Just press ENTER for the defaults.

We are done with the root account for now, end the session by typing exit, then press ENTER. Start up PuTTY again and use the same settings as before, however this time login as the user we created.

[Image: 265BB8F232664363139B9E5FEC84E2C27271712E]

Now we need to create the folders for our server. I like to keep extra game content separate from the main server files, but your content folder can be anywhere you prefer. I will create these in our current directory (Home directory at login).
Code:
mkdir content gmodds Steam content/css
Once the directories are created, we need to install SteamCMD in the Steam folder.
Code:
cd Steam
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh +login anonymous +quit
You will need to press ENTER to run the last command. If you take a listing of your /Steam directory (you should be in it now) by running ls, you should see this:

[Image: BB87BA36AC8EAF51CB5154F8C0C6374B05870266]

To install the dedicated server we need to run this command in the /Steam directory.
Code:
./steamcmd.sh +login anonymous +force_install_dir "PATH TO gmodds DIRECTORY" +app_update 4020 validate +quit
In my case it looks like this:
Code:
./steamcmd.sh +login anonymous +force_install_dir "/home/gmod/gmodds" +app_update 4020 validate +quit
This will login to SteamCMD anonymously, force the install directory to be my gmodds folder, install the Garry's Mod dedicated server files, validate them, then quit. Once you run it, be prepared to wait at this screen for a bit as it will start downloading what you need.

[Image: 20D68A1F23756C04B68E00A2A02E21C73FDE84BC]

To check if everything is downloaded correctly, we need to see what is in our gmodds folder.
Code:
cd /home/gmod/gmodds
ls
Everything seems to be there for me, hopefully your folder looks like this:

[Image: 378820510596E154CDCC6369E786D74B14D96243]

If it is empty, you may have installed it to the wrong directory. Go back and check what you entered as the force_install_dir path. If it went to the wrong location, delete the files there, edit that command with the correct path, and try again.

-----------------------------------------------------

Starting the Server and Configuring Intro.

By this point, you should have a working, vanilla (no addons, no frills), Garry's Mod server. I believe that at this point, it is good to start it up,see that it runs, and that you can connect to it fine.

Start out by going to your ~/gmodds folder.
Code:
cd /home/gmod/gmodds
Here we will run the "srcds_run" script. This is what starts the server and it will accept additional commands about how to run the server. To run it, I will use this:
Code:
./srcds_run -console -game garrysmod +maxplayers 16 +map gm_construct
[Image: A8161F0A3A8A7CC1AA75F89AB3B5671F6167FB1F]

Upon running that command, you will see this:

[Image: DC4A0659BB07FD7A2357435F5691DE16BF09B39E]

The server is now up and running. If you close your PuTTY session, it will end, so keep that in mind. Go ahead and connect to the server in-game. Let's see if everything works. I connected through the console using connect server_ip_address.

[Image: FA7D3099F5066FEE6B32FC7028345F4C2D9BB359]

Everything seems to be working well. I connected fine.

[Image: E27D9DB362611368E19401BAB243F256B369AF40]

Disconnect and go back to your PuTTY session and enter quit. This will quit the server script and bring us back to the ~/gmodds directory.

Before I install more game content on my server, I want to cover how to configure some general settings. The file that we need to edit is called server.cfg. It is located in our servers /garrysmod/cfg directory.

We can edit this in two ways. The first is through a terminal based text-editor like nano. The second is by downloading the file, editing it in Notepad (etc.), and re-uploading it. This is where FileZilla comes in handy. I recommend using FileZilla for this since we can use it later to add content to the server.

To use FileZilla however, we need to have an FTP server set up.

------------------------------------------

Setting up FTP and FileZilla

FTP is handy have while configuring and adding content to your server. You can edit everything locally, then upload it in one big transfer.

For my server, I will use ftpd as the FTP service. To install it, login as root. You can use the gmod user account, but you will have to add it to the sudoers file.
Code:
aptitude install ftpd
It will ask if you would like to continue. Type y and press ENTER.

[Image: 01DA68CC49BB6F713A0BBC0871E770899FC2F21C]

The FTP service is now set up for your server. You can exit the PuTTY session with exit.

Now on to using FileZilla. This part is easy.

Download FileZilla, install it, and run it. You will see a window like this:

[Image: 87E39F8A1CDD45F3CFDCAFE5FF0E874099D6C619]

The highlighted areas are what we need to worry about. For the host, put your server IP. For Username, put your servers user account (not root). If you are following the tutorial, it should be "gmod". The password is the one you created for the "gmod" user. Enter this information, then click on Quickconnect.

[Image: 45B87B776E8B0ADA0C8E355D9D0FD3E19178ADC3]

In the bottom right section you should now see the contents of your home directory. You can click and drag to copy files to and from these folders to your local file system in the bottom left section. This also works with files on the Desktop or a File Explorer.

--------------------------------------

General Configuring

Now that we have FTP up and running we can start editing our configuration files.

The main file, server.cfg, handles variables such as your server's name, number of players, allowed number of props, etc.

Hopefully you are connected to your server in FileZilla and can see your files in the lower right section. If not, go back and follow through the previous section.

On to editing!

In FileZilla, browse to /home/gmod/gmodds/garrysmod/cfg, right-click on server.cfg and choose Edit.

[Image: 90DE7388685BAB55D569B66B16D47778FFA302A8]

This should download and open the blank server.cfg file in Notepad.

You can copy/paste the default settings I created below or write your own. This tool is handy if you are lazy.
Code:
hostname             "My GMod Server"
rcon_password        ""
sv_password          ""
sv_region            255
sv_lan               0
sv_logbans           1
sv_logecho           1
sv_logfile           1
sv_log_onefile       0
sv_noclipspeed       5
sv_noclipaccelerate    5
logging              on
//Sandbox Settings
sbox_allownpcs      0
sbox_godmode         0
sbox_plpldamage      0
sbox_playergod       0
sbox_noclip          1
sbox_maxprops        250
sbox_maxragdolls     5
sbox_maxnpcs         5
sbox_maxballoons     25
sbox_maxeffects      25
sbox_maxdynamite     5
sbox_maxlamps        10
sbox_maxthrusters    250
sbox_maxwheels       50
sbox_maxhoverballs     50
sbox_maxvehicles     8
sbox_maxbuttons      50
sbox_maxsents        20
sbox_maxemitters     5
sbox_maxspawners     3
sbox_maxturrets      10
//Server Settings
net_maxfilesize      30
sv_minrate           0
sv_maxrate           2500
decalfrequency       10
sv_maxupdaterate     66
sv_minupdaterate     10
//Execute ban files
exec banned_ip.cfg
exec banned_user.cfg

Paste the configuration into the server.cfg file, save, and close Notepad.

[Image: 93085E63FCC0E4B377968E2BD63A241F8E71C3CD]

After closing Notepad, FileZilla will ask if you want to upload the edited file back to the server. Choose Yes.

[Image: 8DC0BD0AC6671806DFFC46E3640B3DB0D8AB809E]

This is all we will be editing for now. Feel free to close or minimize FileZilla, but we will be coming back to it later to mount game content in the next section.

-----------------------------------------

Downloading and Mounting Game Content

This is the fun part. I personally had great deal of trouble with this. There were many conflicting tutorials over it and most of them showed how to write a script to update the game content, but not how to install the content manually. This would be fine if the scripts weren't specific to that one writer's set up and configuration.

So!

I will show you how to install the content manually. If you would like to make a script that updates them all in one swoop, go right ahead. There are other tutorials out there, I'm sure, but since I don't trust myself writing a script for that anyway, I feel that manual is best for all of us.

Start a new PuTTY session and log in to your sever using the gmod user account. Change the working directory to the Steam folder and run SteamCMD. I use /content/css to keep the game files separated and organized, change this when installing different game content.
Code:
cd Steam
./steamcmd.sh +force_install_dir "/home/gmod/content/css"
When you are at the Steam> prompt, enter:
Code:
login anonymous

Note: If you use login anonymous first and it gives you a "No Subscribtion" error when installing a game, login with your Steam account and try again.
Code:
login your_username
It will ask you for your password. It will most likely then deny you access and ask for your Steam Guard code. You will get an email with this in it. Enter the code and press ENTER. Keep in mind that this WILL log you out of Steam.

It will pause for a moment while it logs you into Steam on the server. If everything goes well, you will see Success. and it will go back to the Steam> prompt.

You are now ready to install game content into the content folder we created.

For this tutorial I will install Counter Strike: Source content, however you can install other game content by changing the app ID value to the desired game's ID. A list can be found here.

At the beginning of the tutorial we also created a folder called css inside the content folder. You will want to do the same for other games you install. You can name these folders however you like.

CS:S uses 232330 as its ID, so I will enter this to begin installing:
Code:
app_update 232330
Just like installing Garry's Mod, SteamCMD will download the files for Counter Strike: Source. This may take a while, go get yourself a drink and come back.

[Image: 986C0BEE9438082B2175946766CA55F4970BBDA3]

Once you see that the game was fully installed, type quit or press ctrl-c.

Let's check if the game files ended up where they were supposed to.
Code:
cd /home/gmod/content/css
ls

[Image: A3454FB8DC5918C1AD6F949446A9E866355D43A6]

Looks good to me.

We have our game content for Counter Strike downloaded and in place, now we need to tell our Garry's Mod server where this content is located. To do this we need to edit the mount.cfg file.

Open up FileZilla and go back to the /home/gmod/gmodds/garrysmod/cfg folder. Right-click on mount.cfg and choose to Edit.

[Image: 7CB50C8AC7BF4EE1E365CB85A30B36CD7EFD0BAF]

Doing so will download and open the file in Notepad. Inside you will see an example of what we need to do. Unfortunately, what is shown is for a server hosted on a Windows system. Below is a copy of how I edited mine. Yours should look the same if you followed the tutorial exactly, but if you changed the location or name of anything, be sure to make your file reflect that.
Code:
//
// Use this file to mount additional paths to the filesystem
// DO NOT add a slash to the end of the filename
//

"mountcfg"
{
    // "tf"        "/home/gmod/content/tf2/tf"
    // "ep2"       "/home/gmod/content/ep2/ep2"
    // "episodic"   "/home/gmod/content/ep2/episodic"

    "cstrike" "/home/gmod/content/css/cstrike"
}

I edited the examples as well, to match my file structure. When I install TF2, I will need to install it to the content/tf2 folder in my case.

Save the newly edited mount.cfg and close Notepad. FileZilla will ask if you want to upload the edited file. Choose Yes.

[Image: 9987C80B8EAEAEB5714D44071E680C898AE11278]

We are done with FileZilla for the rest of the tutorial, so feel free to close it. Or not, that's just, ...like, your choice man...

To test if we mounted everything correctly, let's start up the server again in PuTTY.
Code:
cd /home/gmod/gmodds
./srcds_run -console -game garrysmod +maxplayers 16 +map gm_construct

When you see VAC secure mode is activated., we're good to go. Load up Garry's Mod and connect to your server. Once joined, press tab to see your server's name. Hopefully it will be what you put in your config.cfg file.

[Image: D524C33C702A90CB339FCAEA6E0C850A04986D03]

That's the right name, so our config is working nicely. Now to check on Counter Strike, let's spawn some props from the game.

[Image: BBBAD546FB6E8FB143BD4739F6CAA61B8BE6C93D]

Perfect! If you get this working on your first try, I applaud you.

Now you get to repeat that for other game content you want to add to your server. Fun stuff. The longest part is when you are waiting for the content to download so it's not too bad once you get that going.

Close your server by typing quit or pressing ctrl-c. I will show you how to install workshop content and use screen to keep the server running next.

-----------------------------------

Running the Server and the Workshop

Screen is an extremely handy tool if you are managing this server remotely. If not, it's still nice to have around, but not needed.

Start a new PuTTY session and log in as root. We are going to install screen.
Code:
aptitude install screen
It shouldn't prompt you with anything and will return you to where you were.

[Image: 8AC61699645911DB76D9BE8AFDC4249D6923CE8B]

Once screen is installed close your PuTTY session and restart it. Login with the gmod user account.

Screen let's us run commands, scripts, and the like in a different terminal. They stay up even when the PuTTY session is closed and make it easy to manage multiple things at a time.

We will use screen to start our server.

First however, I want to create a new Collection of addons that I want installed onto my server. This collection is created by you in the Garry's Mod Workshop on Steam.

This is actually a step that is fairly well documented, so I will not cover it in this tutorial, but you can edit the example command I provide to match your information.

The wiki page for getting Workshop content on a dedicated server works and is fairly straight forward.

Using screen to start the server without Workshop content:
Code:
cd /home/gmod/gmodds
screen -A -m -d -S gmod ./srcds_run -console -game garrysmod +maxplayers 16 +map gm_construct
Using screen to start the server with Workshop content:
Code:
cd /home/gmod/gmodds
screen -A -m -d -S gmod ./srcds_run -console -game garrysmod +maxplayers 16 +map gm_construct +host_workshop_collection XXXX -authkey YYYY
Replace the Xs with your collection ID and the Ys with the authorization key you created.

When you run the command it will seem like nothing happened. It created a screen in the background, named it gmod, and started the game server. Enter and run:
Code:
screen -r
This will load the screen we created. You should see your Garry's Mod server running as normal.

[Image: 49ABFB89FA6029DA1174EEB12082232389234D18]

If you close this PuTTY session, the game will continue to run in the screen. If you need to get into the console again later, just login as normal and use the screen -r command.

-------------------------------------------------------

Wrapping Up

I do think that is about it. There is much more I could cover, but I believe that the rest easy enough to find with a little Google-fu. If you do have questions about the content or need clarification, please respond in the comments below. I will try my best to point you in the right direction or revise my writing as needed. Any feedback is greatly appreciated.

I hope the process of setting up a server was less confusing to you than it was for me. This tutorial is my own documentation so that I have something to look back on for reference in the future. I do hope it helps.

Thank you for giving this tutorial a go and have fun with your server!

~Allotrope
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)