Jabroni Brawl: Episode 3

Jabroni Brawl: Episode 3

28 ratings
Jabroni Brawl: Episode 3 - The Dedicated Server Guide
By bld.dz and 2 collaborators
This guide will assist you with installing and configuring your JB SRCDS Server.
   
Award
Favorite
Favorited
Unfavorite
Assumptions and Prerequisites
This guide assumes you have SteamCMD installed and ready to use.
For Windows users, please also ensure you have VC2010 redist installed.

Additionally, during our testing we found that servers perform significantly better on high-frequency CPUs, even at lower player counts. If you are using a cheap VPS provider, or have heavily shared CPU cores, you will run into performance issues. I have personally had success with Vultr's "High Frequency" SKU of the "Cloud Compute" series - but even their "High performance" SKU was not sufficient. Look closely at the specs of whatever provider you are using before committing.

Please note that, while JB:EP3 is just a Source engine game, not all techniques will work for it, and not all of them can be applied to the other Source engine games.
DO NOT USE THIS GUIDE TO SETUP SERVERS FOR OTHER SOURCE GAMES.
Installation
Installation via SteamCMD
You can install JB Dedicated Server using SteamCMD and the AppID 869800. Following the steps shown on the Valve wiki for Downloading an App via SteamCMD,

  1. Start SteamCMD and set your JB server install directory using the force_install_dir command.
    force_install_dir <path> WINDOWS EXAMPLE (use backslashes): force_install_dir C:\servers\jb\ LINUX EXAMPLE (use forward slashes): force_install_dir /srv/jb/ SIDE NOTE - You can also use relative directories, such as: force_install_dir ./jb/
  2. Log in as anonymous, or your steam account
    login anonymous
  3. Install or update the app using the app_update command.
    app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate] JB MASTER BRANCH: app_update 869800 validate JB PRERELEASE BRANCH: app_update 869800 -beta upcoming validate
  4. Once finished, use the quit command to properly log off of the Steam servers.
    quit

You can more easily automate this process by using SteamCMD Scripts, which on Linux will allow you to use the -autoupdate command line variable in combination with -steam_dir and -steamcmd_script. Other automated update methods must be undertaken on Windows, which is not covered in this guide.


Firewall rules / Ports
All Source Dedicated Servers follow similar, if not the same, port usage. This is described on the Connectivity section of the Source Dedicated Server page on the Valve Wiki.
The ports SRCDS officially requires are:

  • 27015 TCP/UDP (game transmission, pings and RCON) - Can be changed using -port on startup
  • 27020 UDP (SourceTV transmission) - Can be changed using +tv_port on startup
  • 27005 UDP (Client Port) - Can be changed using -clientport on startup
  • 26900 UDP (Steam Port, outgoing) - Can be changed using -sport on startup

You will need to unblock these ports on your game server via whatever security measures you have in place, whether that is Windows Firewall[blogs.msdn.microsoft.com], Linux UFW[help.ubuntu.com] or IPTables[wiki.centos.org], or some other form of network protection - Linux users should consult their particular distribution's documentation.
You may also need to forward these ports from your router to the computer hosting the JB server, some useful guides can be found here[portforward.com].

No further details on port blocking/forwarding will be covered in this guide. If you require further help, try searching the internet for SRCDS Port or security guides.
Configuration
Server Config (server.cfg)
This file is located jbep3/cfg/server.cfg - new installations will find an example file to copy or rename from server.sample.cfg to server.cfg

Anyone familiar with running source engine servers should immediately recognise how this file works - any commands in this file will be run when the server changes map (including initial map loaded when re-running the server)
Some example commands you may find useful to configure are shown below.
// This is a sample server.cfg for Jabroni Brawl: Episode 3. // Rename this to server.cfg and customize your settings. // ----------------------- // Generic Source commands // ----------------------- // Enable server logging log on // Server name hostname "Jabroni Brawl: Episode 3" // Rcon password (for remote administration) - Change to "" to disable // Storing the rcon password in the server.cfg carries potential security risks, // we recommend either setting it on the commandline or using an admin tool like SourceMod. // If you do so, comment or remove the command below, or it will change on map change. rcon_password "J1zzingMyJ0rts" // Join password (to make the server private) - Change to "" to disable sv_password "jorts" // Time limit, in minutes - NOTE: This isn't strict. Game modes can disable the map change until the end of a round etc. mp_timelimit 20 // Max. number of rounds per map mp_maxrounds 0 // All talk - set this to 1 to allow players to always hear each other via voice chat, whether dead, alive or on a different team. sv_alltalk 0 // Dead talk - Dead players can speak (voice, text) with the living sv_deadtalk 1 // Map cycle file, lists maps for the server to go through, also defines the list of maps to vote for at the end of each match mapcyclefile "mapcycle.txt" // If nonzero, server will cycle to the next map if it has been empty on the current map for N seconds mp_mapcycle_empty_timeout_seconds 300 // ----------------------- // Jabroni Brawl end map voting // ----------------------- // Allow end of game voting jb_sv_voting_enabled 1 // Voting Fallback - What to do if we get no votes. // 0 = Remain on same mutation, continue standard cycle. // 1 = Remain on same mutation and map. // 2 = Pick a random mutation and map. jb_sv_voting_fallback 2 // Enable/Disable mutation voting jb_sv_voting_allow_mutation 1 // Enable/Disable map voting jb_sv_voting_allow_map 1 // ----------------------- // Jabroni Brawl other // ----------------------- // Mapcycle Method // 0 = Sequential, standard Source behaviour. // 1 = Randomized, picks random maps in the cycle. jb_sv_mapcycle_method 0



Admins file
This file is located jbep3/cfg/admins.txt - new installations will find an example file to copy or rename from admins.example.txt to admins.txt

Adding users to this file will grant access to jb_admin_ commands such as
  • jb_admin_allweps <player name/partial player name>
  • jb_admin_strip <player name/partial player name>
  • jb_admin_headscale <player name/partial player name> <scale>
  • jb_admin_kick <player name/partial player name>
  • jb_admin_noclip <player name/partial player name>
  • jb_admin_scale <player name/partial player name> <scale>
  • jb_admin_spawn <name>
    Valid names: cat, chumtoad, scientist, scientist_bouncy, sci_flyer, sci_roller, sci_survival, snark
  • jb_admin_teleport <player name/partial player name>
Some of these commands (that target a player name) can target the person running the command by omitting the name altogether.

As the example file demonstrates, the format is one entry per line, with each entry consisting of a 64-Bit Steam ID (in double quotes), followed by a name (in double quotes). The name is for reference only, and does not need to match the player's Steam name.
You can use // to add comments or disable entries. If you need help finding your 64-bit Steam ID, you can use services like https://steamid.io/.
"admins" { // RENAME THIS FILE TO admins.txt BEFORE USING IT // NOTE: // Admins who are listed on this list will have full control of the server, // they will be able to kick/ban, have full rcon control etc. Don't give // this out lightly. // Format: // "*64bit STEAM ID* "*USERNAME*" // Examples: "76561197995397964" "bld" //"76561197960287930" "Gaben" }



Game Server Login Token (GSLT)
Although technically this step is optional, if you want your server to appear on the in-game server browser using default filters (and therefore more easily discoverable) you will need to generate a GSLT for your server. If you do not do this, your server will still be joinable but will only be shown on the server browser to users who disable the GSLT-enabled filter.

Generate the token
  • Open the Steam Game Server Account Management page - Read an understand the contents of this page - there are some critically important notes within! https://gtm.steamproxy.vip/dev/managegameservers
  • For each server that you are running (one GSLT per server):
    1 - Enter game ID 869480
    2 - Enter a memo (a note for your reference, i.e. JB EU 1)
    3 - Click create

  • Find the Login Token in the list
Use the token
To apply this newly generated token, you will need to add the following property to your srcds launch command-line (replace the example token with your own). More details on the launch parameters below.
-sv_steamaccount 1234567890FAKELOGINTOKEN
Execution
Foreword
If you plan on running your server long-term you should strongly consider running the application as a system service or via monitoring tools with automated reboots on crashes, and automated updates as they are released. Windows can use a simple batch script (search for something like SteamCMD Guardian), and Linux can use something like systemd +tmux, or either OS can use an Source dedicated server compatible game server management tool like TCAdmin, GameCP, LinuxGSM, gsp-panel, etc.
These are not required but will allow your server to run for a longer period of time without attention.

Source is an old engine, and there are some security flaws that exist in it to this day. You should never run your dedicated server under an Administrator account, and as such, I recommend creating a new user account with specific privileges to run the server. You may need to add the newly created user to the folder/file permissions for your JB server, SteamCMD, and any other files/folders the account will need to access.

SourceMod[www.sourcemod.net] is also a great option instead of using an RCON password (Please note: At this current time, SourceMod will crash your server. Hopefully resolved soon!), as you can restrict access to specific commands and specific users, and even extend server functionality. Additionally, if you do choose to use an RCON password, do not place it in your server.cfg file as there have been many upload/download exploits found over the years which a malicious user can utilise to download the server configuration file and find the rcon password within. There are some mitigations, but nothing is bullet proof. If you're interested in more information, try searching the internet for SRCDS Hardening guides.


Command-Line Options
There are some critical options which must be included:
  • -game jbep3
    This is required to launch a JB:EP3 server
  • -ip <ip address>
    IP address to bind to - use an external IP[www.howtogeek.com] if you wish to host an Internet-joinable server, i.e. -ip 1.2.3.4 - or bind to all host addresses using 0.0.0.0
  • -port <port number>
    The standard port for Source games and their servers is 27015, if you are running more than one server on the same computer you will need to use different ports, i.e. -port 27015
  • +map <mapname>
    Specifies the map to load on server start, i.e. +map crossfire
  • +maxplayers <number>
    Specifies the maximum player count, i.e. +maxplayers 24

You can also specify other commands to run at server start, which will not be re-run until the server is restarted. To do this, add a + to any regular console command. Some examples below.
  • +rcon_password <password>
    This will set the remote console admin password for the server. I recommend removing this from your server.cfg file. Please note that this is not a huge improvement in security. i.e. +rcon_password "J1zzMyJ0rts"
  • +sv_lan <0 / 1>
    This turns off/on allowing players to connect via the internet. i.e. +sv_lan 0 to allow internet users
  • -sv_steamaccount <GSLT>
    Please see the configuration section above for info on the Game Server Login Token (GSLT)
    Please also note that you will require one GSLT per server
  • More commands available here

Windows
This section assumes the server files have been installed to C:\servers\jb\.

Open Command Prompt to the correct folder
  • Open CMD in this folder by Shift+Right-clicking the background and selecting Open Command Window Here
  • Alternatively, search for cmd.exe from your start menu,
  • Alternatively, press the Windows+R key to open the Run prompt, then run cmd.exe
  • Make sure you are in the same folder as steam_appid.txt, if not - change directory (cd) to the correct folder, i.e. cd C:\servers\jb.

Run jbep3.exe from bin\win32\ with your command line, i.e.
bin\win32\jbep3.exe -ds -game jbep3 -console -ip 1.2.3.4 -port 27015 +map crossfire +maxplayers 24 +rcon_password "J1zzMyJ0rts" -sv_steamaccount 1234567890FAKELOGINTOKEN

Linux
This section assumes the server files have been installed to /srv/jb/ and that you have some clue as to how Linux works, because otherwise you can suck a fart. You should be able to figure this bit out if you're using Linux... but here it is anyway.

Navigate to your server directory
cd /srv/jb/

Sudo into the user account you created to run the server... you did that, right? Please for the love of Christ do not run this as root.
sudo plsdonthackme

Run srcds_run.sh with your command line, i.e.
./srcds_run.sh -game jbep3 -console -ip 1.2.3.4 -port 27015 +map crossfire +maxplayers 24 +rcon_password "J1zzMyJ0rts" -sv_steamaccount 1234567890FAKELOGINTOKEN
Alternatively run it in a screen session
screen -dmS jbserver ./srcds_run.sh -game jbep3 -console -ip 1.2.3.4 -port 27015 +map crossfire +maxplayers 24 +rcon_password "J1zzMyJ0rts" -sv_steamaccount 1234567890FAKELOGINTOKEN


Further recommendations
At time of writing there is 741 commands starting with the jb_ prefix. Some of these you may want to add to your server's configuration file. Find them by running cvarlist jb_ in the console / rcon. My previous recommendations to run the server as a non-privileged user still stands, and you should also look into using SourceMod instead of RCON so you have more granular control over the admin permissions, if you're planning on giving anyone but yourself admin rights on the server.

The JB discord has lots of folks who can help if you have issues, and I recommend asking there if you have any.
24 Comments
N a n a n a n a n a n a 19 Apr, 2023 @ 2:04am 
i was getting can't connect to steam servers, check my comment below (couldnt edit)
N a n a n a n a n a n a 19 Apr, 2023 @ 2:04am 
if you have issues with -ip, drop the -port and -ip and just use -console

publically available for me anyway. great article
Dman 5 Mar, 2023 @ 10:50pm 
Sorry dont worry about that I figured it out. Your friends can still connect to your server via your IP so you dont need to host a dedicated server. Of course you do still need to port forward.
Zero  [author] 1 Mar, 2023 @ 9:59pm 
> I feel like a game like Jabroni should definitely have just a simple p2p like other source games.
None of Valve's Source 1 games nor SDK2013 based mods support P2P.
Dman 28 Feb, 2023 @ 7:35am 
I agree. I feel like a game like Jabroni should definitely have just a simple p2p like other source games.
CowGamer13 21 Jan, 2023 @ 9:52pm 
Why can't Jabroni Brawl have simple game hosting options? Most of the time my friend would host a game, and the server wouldn't work if I right clicked and join. I hope they can make hosting much more user friendly without this crazy procedure.
bld.dz  [author] 13 Nov, 2022 @ 9:17pm 
re: pterodactyl - the devs are aware; the best guess for the broken console interaction at this time is to do with character encoding -- it was updated to support unicode (widechar) input and this is probably messing with Ptero's ability to interact with it.
Shigbeard 13 Nov, 2022 @ 9:29am 
having issues running it under Pterodactyl Panel, which runs it as a docker container based off of debian:stable-slim. Issues include disrespecting rcon-cli (different protocol perhaps?), and fuddled up text in the server console. Plus we had to bully the ever loving hfil out of it just to get it to run in the first place due to documented missing libs issues.

Would like further documentation on the third party library dependencies required for this to run
Epicdidymis 12 Nov, 2022 @ 1:52pm 
I was getting the invalid platform error last night, but it's working as expected for me as of now :steamthumbsup:
TacoDeBoss 12 Nov, 2022 @ 9:29am 
On Linux (Debian 11, amd64), steamcmd is giving me "ERROR! Failed to install app '869800' (Invalid platform)" regardless of @sSteamCmdForcePlatformType = 'windows' or 'linux'.
What's going on here?