Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 103 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

LinuxGSM_

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Getting Started

To get started is to visit linuxgsm.com and pick a server to install. Follow the simple step-by-step guide to install your game server on Linux.

Once the installation is complete a working game server will be available. Use the various LinuxGSM commands available to manage the game server.

Read through this documentation to ensure you understand how to configure your game server.

The configuration section will help you understand how to configure both LinuxGSM and the game server.

Configuration

Home

The command-line tool for quick, simple deployment and management of Linux dedicated game servers.

  • User docs: docs.linuxgsm.com

  • Dev Docs: dev-docs.linuxgsm.com

Welcome

Welcome to the LinuxGSM documentation covering various topics related to the project.

Contributions to this documentation are welcome and can be submitted via GitHub.

test-alert

The test-alert command is used to send a test alert that is used to ensure that configured alerts are functioning and being recieved.

Commands

Standard: ./gameserver test-alert

Short: ./gameserver ta

debug

The debug command is used to start your server directly in your current terminal (outside of (tmux) and should only be used for diagnosing issues. If a game server is already running in the background debug will stop it to start a debug session.

Commands

Standard: ./gameserver debug

Short: ./gameserver d

To exit debug mode use CTRL+c

update-lgsm

The update-lgsm command updates LinuxGSM to the latest version.

It will automatically update LinuxGSM including the _default.cfg config file to make sure the game server gets the latest settings.

It is a good idea to regularly update LinuxGSM to receive new features and bug fixes.

Commands

Standard: ./gameserver update-lgsm

Short: ./gameserver ul

Trackmania Nations Forever / Trackmania United Forever

The Front [WIP]

Dependencies

Networking

Features

ANSI Colors

network-interfaces

TODO

Other

Linux

Message Display Time

skeleton

The skeleton command created a mirror of the directory structure of a game server. This allows you to create a skeleton directory of custom files, configs, maps etc.

Commands

Standard: ./gameserver skeleton

Short: ./gameserver sk

Skeleton Directory

The skeleton directory is created in skel.

/home/gameserver/skel

Use Case

Skeleton can be used alongside version control software like git or backed up to save custom configurations for a game server. If a change is added to your git repository/backup it is possible to pull/copy the updates to your game server. If you want to re-deploy a game server you can create a fresh installation and pull/copy in the custom changes over the top of the fresh install.

console

The console command allows access the output of the game server executable. Depending on which server you are running it allows you to see the current activity of the game server, check errors in real time, and input commands.

Some game servers provide a verbose output in console.

Some game servers can be managed from the console.

Commands

Run the following command to access console:

Standard: ./gameserver console

Short: ./gameserver c

Answer y at the prompt.

Exiting the console

To exit the console: Press CTRL + b, then, press d

Take your time as this can be confusing at first.

Pressing CTRL+c while in console will kill the session, stopping the game server.

force-update

This is a command for game servers using only.

The force-update command bypasses the update check and runs the SteamCMD update regardless of update availability. This will run the SteamCMD update and restart the game server.

Force update is a useful feature for admins that restart their server daily. It allows LinuxGSM to check for updates while restarting the server.

Commands

Standard: ./gameserver force-update

Short: ./gameserver fu

validate

This is a command for game servers using only.

The validate command will check the server files to make sure they match the SteamCMD repository. This command is useful if game server files are deleted, corrupted or SteamCMD is failing to update.

Validation will overwrite any files that have been changed. This may cause issues with customised servers. For example, if you customise mapcycle.txt, this file will be overwritten to the server default. Any files that are not part of the default installation will not be affected. It is recommended you use this command only on initial installation and if there are server issues.

Commands

Standard: ./gameserver validate

Short: ./gameserver v

map-compressor

The map-compressor command is used to compress maps for some Unreal engine servers, allowing for faster maps downloads to clients.

Supported Servers

  • Unreal Tournament 99

  • Unreal Tournament 2004

  • Killing Floor

  • Red Orchestra

Standard: ./gameserver map-compressor

Short: ./gameserver mc

change-password

This is a command for only.

change-password resets the TeamSpeak 3 server query password. The server will reboot and a new password will be generated.

The password is given on server installation. Passwords can also be found in the logs.

Supported Servers

  • TeamSpeak 3

Commands

Standard: ./gameserver change-password

Short: ./gameserver pw

7 Days to Die

Server Resources

  • Official Dedicated Server Guide

Telnet

7 Days to Die uses telnet to admin the server. This is enabled by default with no password however will only listen on localhost.

Minecraft: Java Edition

Java Requirements

Minecraft: Java Edition required Java 16

Release Settings

Minecraft java edition splits up its release in two ways. Firstly a branch is either classed as a release or a snapshot. A release is a stable version of the game whereas a snapshot is still under development

With LinuxGSM you can specify a specific release/snapshot or the latest release/snapshot. By default, LinuxGSM will use the latest release.

  • List of Minecraft Java releases

Game Server Config

Game server config files are the configuration files used by the game server to store various game server settings, such as the server name, maximum players, map cycle, etc. These settings can be edited to customise a game server. Different game server configs can use different syntax and work slightly differently, but all do the same basic job of editing a game server settings.

The details command will provide you with some config file information. However, some servers do use multiple config files.

./gameserver details

Whenever possible, LinuxGSM provides basic easy-to-use game server configuration files. A dedicated repository has been made so all server admins can benefit, even Windows admins.

This configuration file is automatically downloaded upon server installation.

Whenever possible, LinuxGSM uses a custom name for configuration files that contains the

IP Address Configuration

How LinuxGSM handles IP addresses

By default, LinuxGSM will use the meta-address. This behavior will allow the game server to bind to all interfaces and allow LinuxGSM to all available IP addresses. If there are multiple IP addresses available, will display 0.0.0.0.

Internet IP: LinuxGSM will try to gather the server's internet IP address to be shown in .

Specific IP: If a specific IP address needs to be set it can be done using the ip setting in the or config files. Depending upon the game server this will allow it to bind to a specific IP address.

Display IP: If you want to change the IP address displayed in alerts you can use the

start-stop-restart

LinuxGSM provides an easy way to start, stop and restart your game server. LinuxGSM knows the location of the server binaries and inserts the start parameters to allow the server to start. LinuxGSM will also run various checks to prevent issues and apply any required server fixes to get the game server running.

Will start the server in a session allowing the server to run in the background.

./gameserver start

Stop will attempt a of a game server. Failing this stop will kill the tmux session.

./gameserver stop

check-update

LinuxGSM comes with a game server check-update command. All games servers are supported, as well as some other servers such as Teamspeak, Minecraft, Mumble & Factorio.

Standard: ./gameserver check-update

Short: ./gameserver cu

Unlike the command check-update will check for any available updates and take no action if no update is available. If there is an update it will send an alert.

update

LinuxGSM comes with an game server update command. All games servers are supported, as well as some other servers such as Teamspeak, Minecraft, Mumble & Factorio.

Standard: ./gameserver update

Short: ./gameserver u

Update will check for any available update, taking no action if no update is available. If there is an update it will apply the update, restarting the server if already running.

It is possible to update a game server on start, by editing the LinuxGSM config.

Stop Mode

Stop mode allows a game server to gracefully shutdown by sending a stop signal to the server. The stop signal might be one of the various commands such as stop,quit,exit etc. In some cases, this is important to give the server time to save its state.

Guides

Guides that are used on multiple servers

Commands

List of Minecraft Java snapshots
tmux
SteamCMD
SteamCMD
TeamSpeak 3
.

Make sure you understand basic IP addressing.

0.0.0.0
quer
y
details
details
LinuxGSM
game server
displayip
Install Sourcemod and Metamod:Source
# Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
# 2: CTRL+c
# 3: quit
# 4: quit 120s
# 5: stop
# 6: q
# 7: exit
# 8: 7 Days to Die
# 9: GoldSrc
# 10: Avorion
# 11: end
# 12: shutdown
# 13: Soulmask
stopmode="7"

Alerts

LinuxGSM allows alerts to be received using various methods, should the game server require your attention.

Alert Settings

Alert settings can be changed in LinuxGSM config

More Info

More info allows you to get further info about an alert using hastebin.com. Many alerts only give basic info, unlike email. More info displays the same output as email in a link within a basic alert.

Display IP

The IP address you want to be displayed in alerts.

By default, the LinuxGSM alert will display the external internet facing IP. Failing this will fall back to the server IP. If the IP is incorrect it can be manually set using displayip="".

If stoponlyifnoplayers setting is enabled LinuxGSM will only stop the server if it is empty and prevent it from stopping otherwise. This feature only works with game servers that can use gamedig.

Will simply stop, and then start the server.

./gameserver restart

Commands

Starting a server

Stopping a server

Stop only if empty (optional)

tmux
graceful shutdown

Restarting a server

updateonstart="on"

This will take longer for the game server to start but can be useful for servers that are kept offline most of the time.

A cronjob can be set to run update at any given time.

To edit cronjobs, type:

crontab -e

A cronjob can be run as the gameserver user or as root, this choice is down to personal preference. Remember to amend the examples to match a specific game server.

Here is an example of a user based cronjob to check for an update once an hour.

Here is an example of a root based cronjob to check for an update once an hour.

It is recommended to check for updates once per hour.

crontab.guru is a great resource to generate cronjobs.

Commands

Automatic update

Update on start

SteamCMD

Scheduled updates

The extra su - username -c indicates which user to run the script as.

# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
# Display IP | https://docs.linuxgsm.com/alerts#display-ip
displayip=""
stoponlyifnoplayers="off"
0 * * * * /home/username/gameserver update > /dev/null 2>&1
0 * * * * su - username -c '/home/username/gameserver update' > /dev/null 2>&1
${servicename}
variable in it in order to allow the running of
with different config files. If the game does not allow for that, then the usual name will be used.

For source servers, the default server.cfg is not used with LinuxGSM. Instead if you're running ./csgoserver, then the config file will be called csgoserver.cfg.

LinuxGSM will always check a config file is present when starting a server. If a config file is missing, it will re-download the default one or give a warning.

Game servers have many different ways of managing settings. Some are set within start parameters, while some are set within a configuration file.

One of the goals of LinuxGSM is to make managing these as easy as possible, by providing all important settings out of the box, wherever they are. There is no general rule about where config files are set. It is a good idea to look for the official documentation of the game server that you're trying to run in order to find relevant information about settings.

If you found settings that are absent from the default configuration file provided by LinuxGSM that would be a useful addition, then you can open an issue or a pull request.

./gmodserver details

gmodserver Script Details
==================================================================================
Service name:        gmod-server
gmodserver version:  170110
User:                ultimatebyte
GLIBC required:      2.15
Email alert:         off
Pushbullet alert:    off
Update on start:     off
Location:            /home/gmodserver
Config file:         /home/gmodserver/serverfiles/garrysmod/cfg/gmod-server.cfg

LinuxGSM Configs and Game Server Configs are different. One is the config for LinuxGSM itself and the other is for the game server instance.

Config file's location

Command

Sample output example

LinuxGSM Custom Config's

Config file naming

Example

Missing configuration file handling

Where are the settings I'm looking for?

I found missing settings or an error with config files?

multiple game servers
A cronjob can be set to run check-update at any given time.

To edit cronjobs, type:

crontab -e

A cronjob can be run as the gameserver user or as root, this choice is down to personal preference. Remember to amend the examples to match a specific game server.

Here is an example of a user-based cronjob to check for an update once an hour.

Here is an example of a root-based cronjob to check for an update once an hour.

crontab.guru is a great resource to generate cronjobs.

Commands

Automatic check for update

Scheduled check for updates

SteamCMD
update
0 * * * * /home/username/gameserver check-update > /dev/null 2>&1
0 * * * * su - username -c '/home/username/gameserver update' > /dev/null 2>&1

Ensure that an is configured so you are alerted to any updates

The extra su - username -c indicates which user to run the script as.

Running on Boot

Using systemd

systemd is the default init system for most modern distros.

You need to create a service file in /etc/systemd/system/

Example ts3server.service

[Unit]
Description=LinuxGSM Teamspeak3 Server
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=ts3server
WorkingDirectory=/home/ts3server
#Assume that the service is running after main process exits with code 0
RemainAfterExit=yes
ExecStart=/home/ts3server/ts3server start
ExecStop=/home/ts3server/ts3server stop
Restart=no

[Install]
WantedBy=multi-user.target

Replace the user and paths to fit your setup.

You need to reload the systemd-daemon once to make it aware of the new service file by systemctl daemon-reload

Now you can do

The crontab will allow you to create that allow you to run a command on a set time or on boot. The below example uses @reboot that will run a command on boot.

After a reboot, any game server that has a "started" status will be started on boot. Servers that were manually stopped will remain stopped.

To learn more, see and .

Start a game server unconditionally, even if you manually stop a server.

To learn more, see

rc.local is another method to run scripts on boot. Any commands added to the rc.local file will run on boot.

monitor

monitor checks the game server to ensure the server functioning. First checking the game server process is running then querying the game server to check the game server is responding. monitor is designed to be an automated command that frequently checks the game server, rebooting and alerting if required.

Commands

Standard: ./gameserver monitor

Short: ./gameserver m

How does monitor work?

Monitor first checks that the server process or tmux session is running. If it is, it will then attempt to query the server using gamedig or query_gsquery.py. Should this fail to query it will attempt to query every 15 seconds over 60 second period. Should this fail the server will be rebooted and an alert sent out.

During server start, map change, workshop downloads, the server is unable to answer queries.The monitor will wait for 60 seconds as it is common for servers to stop responding to queries during a map change. This wait prevents monitor from rebooting a server that does not require it.

Monitor is designed to be and automated task, using to allow a game server to be frequently checked.

As a reminder, you can edit your cronjobs, typing :

Use these cron examples to setup automated monitoring.

  • A user based cronjob to monitor your server every 5 minutes .

  • A root user based cronjob to monitor your server every 5 minutes .

To learn more about automation, see .

To be notified when a server fails alert notifications can be setup , see .

Game Servers do not respond to queries while the server is booting. Query delay prevents monitor from giving a false positive should it query while the server is booting. A timed delay prevents monitor from using query at all during a set time (normally either 1 or 5 minutes) after start, giving the server time to boot and become ready to accept queries. Query delay timer can be adjusted using the querydelay setting.

Starting and stopping the game server activates and deactivates monitor. This prevents the server being manually stopped only to be started again by monitor.

details

The details command allows access to various useful information about the game server. Details are gathered from configs, parameters and server queries.

Commands

details

Standard: ./gameserver details

Short: ./gameserver dt

postdetails

postdetails (using hastebin) is used to share server details, to help with support, while hiding sensitive information:

Standard: ./gameserver postdetails

Short: ./gameserver pd

Various relevant details are provided including:

  • Distro Details

  • Performance

  • Disk usage

  • Server Name

Game Servers

LinuxGSM cannot always provide support for specific game servers. However, there are various support forums available for specific game server support that may be useful. Below is a list of useful links support forums:

  • ARK: Survival Evolved

  • ARMA 3

Insurgency: SandStorm

Custom Mods and Maps

Custom Mods and Maps are supported in Insurgency: Sandstorm via mods.io. Please use this basic guide to get started using custom mods more in-depth information can be found at mod.io Server Admin Guide

This guide will show you how to install the custom map as an example

Get an Auth Token

To get started you will need a mod.io account, once you have signed in, click your username as the top right, and click API Access from the left navigation.

Under OAuth 2 Management > Generate Access Token, enter a name to give your token and give it read access and click Create Token.

Once the token is generated you will need to copy it to your game servers Engine.ini. Paste the following into Engine.ini and replace TOKEN HERE with your access token.

Add the -Mods parameter to your game server .

Next you will need to specify which mods you want to add to your game server.

Create the Mods.txt file located Insurgency/Config/Server/Mods.txt

In the txt file you will need to specify each mod ID line by line. The mod ID can be found on the mods details page at . Once restarted the mod will be available to use.

To use this custom map you will need to add it to your mapcycle and if required, your default map

Create MapCyle.txtand add the custom map to your mapcycle.

If you want the custom map to be the default edit your

Once the server is restarted the custom map should be available on your game server.

Sven Co-op

Information for Sven Co-op servers

Server Resources

Official Resources

Sven Co-op Forums

Sven Co-op Official Discord

The discord contains information for Sven Co-op under the information tab including mapping guides, server config information, and angelscript documentation, among other things.

Sven Co-op Map Database

Sven Co-op Tips

Reminder: Sven Co-op is incompatible with both CentOS and Fedora as libssl.so.1.0.0 is not available

Survival Mode settings, can be set in svenserver.cfg

Discord

Discord is a VoIP app that allows other applications to send messages via a webhook. This functionality is used to allow users to recieve alerts about LinuxGSM.

Create a Discord Webhook

A webhook is required to post alerts to a Discord text channel

  1. Right-click on the text channel you want to use and select Edit channel.

  2. Select Webhooks > Create Webhook

  3. Name: LinuxGSM

  4. Icon:

  5. Copy the Webhook URL

  6. Turn on discord alert and enter the URL in to the . (~/lgsm/config-lgsm/<gameserver>/common.cfg)

Pushover

Pushover allows the sending of push notifications to various devices such a PC, phone and tablet. This functionality is used to allow users to receive alerts about LinuxGSM.

Setup Pushover Alerts

A Pushover application and your user key is required to send messages to Pushover.

Visit here to create a new application.

  • name: LinuxGSM

  • Check the box agreeing to the Terms Of Service.

Once the application has been created get the API key and user key (which can be found in the pushover dashboard). Turn on Pushover alerts and paste in API key and user key in the .

Pushbullet

Pushbullet allows the sending of push notifications to various devices such a PC, phone and tablet. This functionality is used to allow users to recieve alerts about LinuxGSM.

Enable Pushbullet alerts

To enable Pushbullet alerts an Access Token needs to be generated. Access Tokens are available from Pushbullet setting found here.

Once you have created a token insert it in to you LinuxGSM config.

# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet
pushbulletalert="on"
pushbullettoken="o.noWN6jpIeBUkLraw24saHKd7ksOkn7on"
channeltag=""

Enable Channels

Alerts can also be sent to Pushbullet channels. Channels are push notification feeds that can be subscribed to. Anything you push to a channel will instantly go to all of the channel's subscribers. Only the owner of a channel can push to it.

Visit here to generate a channel.

Once you have created the channel set the channeltag in the script without using hash #.

tmux

LinuxGSM uses tmux to run servers in the background so the server instance is not terminated when you close a terminal session.

LinuxGSM requires tmux => 1.6

Tmux is a key component of LinuxGSM and replaced screen which was used on earlier versions. tmux has a few improvements over screen; mainly being better at handling standard Linux users, this was a major issue when developing with screen. tmux allows LinuxGSM to call up a game server running in the background so you can see what it is doing; this feature is available with console feature.

LinuxGSM using tmux in console

tmuxception

Some server admins have attempted to run LinuxGSM within a tmux or screen session. As LinuxGSM calls tmux it is not possible to run LinuxGSM within a tmux or screen session.

tmux 1.8 has an issue that prevents console logging from working. This is because the pipe-pane feature is broken in tmux 1.8 causing it not to output the console to the console log files. The only solution is to use another version of tmux.

This issue normally occuires with CentOS and is caused by the standard user not having permissions to user /dev/ptmx.

To fix this the user needs to be part of the tty group.

To confirm the user has been added check /etc/group.

If the default version of tmux (1.8) installed on CentOS 7 it will fail to log the console output. To fix this it is possible to upgrade to a newer version of tmux using the repository.

Install Ghettoforge with the following command.

Install tmux using the Ghettoforge repo.

Once installed restart the server to complete the upgrade.

Valheim

Server Resources

  • Official Dedicated Server Guide

Valheim Servers require Passwords

Valheim servers require a server password to start a server. This means it is not possible to connect to a Valheim server unless you know the password.

Direct connect to a Valheim Server

The Valheim in-game browser can be slow, as a workaround you can directly connect to a server in-game through the Join Game tab by pressing the Join IP button, or by adding a server to your Steam server browser favorites. To access the Steam server list, at the top left of the Steam library window go View > Game Servers > Favorites, and click the blue + button. Use ./vhserver details to list the current query port. The default port is 2457.

Valheim has been previously known to have problems with long server names and special characters, if you are having trouble connecting to a server try making its name shorter or remove special characters.

Add admins to Valheim server:

Source Engine

Default ports

Both Source engine and GoldSrc engine use the following ports by default.

  • Game Port: 27015

  • Query Port: 27015

  • RCON Port: 27015

  • Client Port: 27020

  • Source TV: 27005

The port that is configured in the start parameters must be the port that is exposed to the Internet. This is because the game server reports the port that it is configured in start parameters to use to the master server. If this does not match the game client will not be able to connect to the server.

Slack

Slack is a cloud-based set of proprietary team collaboration software tools and online services.

Create a Slack Webhook

A webhook is required to post alerts to a slack.

  1. Follow slack's guide to setting up an incoming webhook.

  2. Copy the Webhook URL

  3. Turn on slack alerts and enter the URL in to the . (~/lgsm/config-lgsm/<gameserver>/common.cfg)

Multi Theft Auto

Server Information

An MTA server comes in two parts. MTA itself and then the resources you install. There is the option to install the default MTA resources to your server within LinuxGSM on install or using the ./mtaserver install-default-resources option. There are many resources available so it is recommended that you take a look at the MTA community resources page Community

Resources

Resources are a key part of Multi Theft Auto. A resource is essentially a directory that contains a collection of files - including essential script and content files, plus a meta file that describes how the resource should be loaded - and runs on a Multi Theft Auto dedicated server.

A resource can be seen as being partly equivalent to a program running in an operating system - it can be started and stopped, and multiple resources can run at once. Its worth remember though, that unlike programs on an operating system, there is no multi-tasking between resources. Resources generally contain content and Lua scripts for game modes, user interfaces and other tasks affecting the players that are connected to the dedicated server on which the resources are running.

For a collection of user created resources, head over to our web page which serves as a place for hosting our community's resources.

LAN Discovery

Many admins who have tried, reported a local server does not appear on the LAN tab in the steam browser.

LAN Discovery

Workarounds

Console Command

Connect using the console command.

connect IP:PORT

If the port is 27015, then you can just use : connect IP

connect 192.168.1.10:27025

Add server to favourites

Add the server to the server browser's favourites. If in-game, then go to the legacy browser if applicable to find it. The syntax to use is the same as for the console connection.

Make sure your server actually works and is reachable on LAN, otherwise what you need is rather first.

Fix

As this github issue shows, there might be a possible configuration that fixes the issue, but LinuxGSM devs were not able to reproduce it at the time of writing the doc, so this information is purely experimental and you are welcome to update it or post on the issue if you have useful information to share about it.

  1. Edit your using your files

  2. Change ip="0.0.0.0" to an actual interface IP, for example ip="192.168.1.10" ; this will allow LinuxGSM to and query your server properly.

  3. In the fn_parms section, add +sv_lan 1 and make sure you replace -ip ${ip} with -ip 0.0.0.0

  4. Make sure your server main port listens to one of these IP or IP ranges: 4242 ; 26900-26905 ; 27015-27020 ; 27215

Sourcemod and Metamod:Source

Sourcemod Resources and Known Problems

Sourcemod is a plugin for source games that can add functionality like voting systems, minigames, and server utilities. Sourcemod requires Metamod to run.

LinuxGSM includes a command that is able to install Sourcemod automatically.

LinuxGSM Mod Command

Sourcemod Resources

Sourcemod Official Resources

Official Sourcemod Install Guide

Sourcemod Download Link

Sourcemod Plugins

Plugins can be downloaded from Alliedmodders website:

If players are kicked after joining, make sure Sourcemod does not have any errors and is up to date

Check folder hierarchy in archives before unpacking, each plugin creator organizes their archives differently.

The server may need to be set to sv_pure 0 in some cases.

If the server changes to dust or mirage instead of the chosen map, disable the nextmap plugin.

Rocket.Chat

Rocket.chat is an open-source collaboration tool.

Create a Rocket.chat Webhook

  1. Follow the Rocket.chat guide on how to create an incoming webhook.

  2. Copy the Webhook URL.

  3. Turn on Rocket.chat alerts and copy the URL into the . (~/lgsm/config-lgsm/<gameserver>/common.cfg)

Log Management

Logs are an important part of monitoring a server as it allows you to know what has been happening. LinuxGSM has a log directory that allows you to track the gameserver, console and LinuxGSM itself.

If your user is gameserver, then LinuxGSM logs are located in the following directory:

/home/gameserver/log

This "log" directory contains two other directories:

  • script, logs LinuxGSM script activity

  • console, logs gameserver [console](../commands/console.md) output

  • game, is a redirect to the game server log files if available.

    Settings

You can alter these settings to change LinuxGSM behavior:

Note: logdays="0" means logs will be removed if older than 24h.

LinuxGSM clears outdated logs according to logdays variable setting. This will affect script and console logs, as well as common game logs.

LinuxGSM also clears logs from common locations to prevent them from using gigabytes of disk space, including:

  • ${systemdir}/logs

  • ${systemdir}/*/logs

  • ${systemdir}/addons/sourcemod/logs

Note: ${systemdir} designates the location of your game server installation

Symlinking and ln command

Symlinks create multiple paths to a file or directory and are useful for saving space or having 1 set of files for multiple installs.

Using Symlinks to Save Storage Space

This guide is for pointing multiple directories to the same folder using ln command. Ln creates hardlinks and softlinks, the -s variable creates softlinks. These can be compared to shortcuts on windows, and are going to be used in this guide.

Example guide using two "one server + one user" installs with Sven Co-op:

Gameserver folder 1: /home/svencoop/serverfiles/svencoop_downloads/

Gameserver folder 2: /home/svencoop2/serverfiles/svencoop_downloads/

Shared folder /home/svencoop_content/svencoop_downloads/

The command to link these would be ln -s /shared_folder/ /gameserver_folder/

ln -s /home/svencoop_maps/svencoop_downloads/ /home/svencoop/serverfiles/

ln -s /home/svencoop_maps/svencoop_downloads/ /home/svencoop2/serverfiles/

Change the game server folder ownership to be under their respective users and you are done.

chown svencoop /home/svencoop/serverfiles/svencoop_downloads

chown svencoop2 /home/svencoop2/serverfiles/svencoop_downloads

The files in the symlinks do not need be owned by the gameserver users and will not be recognized by linuxGSM's ownership check. That being said, make sure they can be read by the gameserver users.

Branch

Allows the selection of specific builds of a game server in SteamCMD

Game developers sometimes make available several builds of the game server on Steam, often to allow beta testing of new releases. These builds are made available via branches (betas) and can be entered in the LinuxGSM Config.

Find Branches

A list of all available branches for a game server are listed on SteamDB under the appid depots.

Select a Branch

The default SteamCMD branch is public. However, it is possible to use other builds by entering a branch name in the branch setting in your LinuxGSM config.

# Steam App Branch Select
# Example: "latest_experimental"
branch="staging"

Beta Password

Some branches require a password. This can be done by entering a password in thebetapassword setting in your LinuxGSM config.

Steam Master Server

Some game servers are listed on the steam master server list

For a game server to be seen online it normally has to register itself on a master server list. Valve maintains a master server for many different games. The master server is used to populate the server browser.

Master Server Check

LinuxGSM can check that supported game servers are listed on the steam master server. This is useful for confirming that the server is actually registering and to help diagnose issues.

You can check that your server is listed on the master server by using ./gameserver details

Master server:    listed

Not all game servers support this option but if it does the setting is set to true by default.

steammaster="true"

Troubleshooting: Server Missing from Master Server List

There are instances when a game server might not appear in the server list due to several common reasons:

  • Server Loading Time: Please be patient while the server loads, as it may take some time before it becomes visible. Depending on the game server type, certain servers require additional time for tasks like map seeding or loading mods.

  • Blocked or Misconfigured : Ensure that the ports are correctly set up and not blocked. To verify the connection, try connecting directly to the server.

  • Filtering in Server List: Check that you have not applied any filters in the server browser. Filters like specific maps, "Empty Server," or "Password Protected" should be unchecked to display all available servers.

  • Server Browser Limitations: It's possible that the server browser functionality of the game might not list all available game servers. In such cases, not all servers may be visible in the server list.

Email

A Linux server's own email solution can be used to receive alerts about LinuxGSM.

Sending emails

LinuxGSM will send an email using the mail command.

Postfix or equivalent must be setup and correctly configured before sending emails. Failure to correctly configure Postfix and a domain for your server will mean the email alert may be flagged as spam or not arrive at all. Configuring postfix is not covered here, but there are many tutorials online to help.

is a paid service with 3 month free trial that can be used as an email relay to reduce the chances of email alerts being blocked as spam.

Enable Email alerts

To enable email alerts you will need to add an email address to the LinuxGSM config.

# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email
emailalert="off"
email="email@example.com"
emailfrom=""

cronjobs

To automate LinuxGSM you can set scheduled tasks using cronjobs, to run any command at any given time.

Commonly used scheduled tasks are:

  • Automatically check for updates

  • Automatically check for server crash and restart if needed

LinuxGSM Stats

is an opt in voluntary feature that allows you to provide selected information about your game server to be displayed on by enabling the stats setting.

All data collected is used to provide insight into which game servers, distros, and servers are popular with game server admins. This will assist in prioritising LinuxGSM development and give me (Daniel Gibbs) a never before insight into the number of people using LinuxGSM. This is a massive personal motivator as it has previously been difficult to know how many people actually use LinuxGSM.

The collected data is publicly available to view in a dashboard on

Below is a list of types of data collected

Dont Starve Together

Don't Starve Together server requires an Authentication Token.

  1. Go to the Klei website .

  2. After logging into your account to get your game server authentication token.

  3. Enter a friendly name for your server and copy the access token and paste it into the file cluster_token.txt

Garry's Mod

Autorefresh can lag the server when certain Lua files are edited. This happens when the refreshing cascades. This can be unwanted behavior when editing the scripts of a large project on a live server.

To disable autorefresh, add -disableluarefresh to parms.

Loading screens are added by defining a website with sv_loadingurl, which is in gmodserver.cfg by default. This file overrides other files.

Gamemode is changed by editing start parameters in the LinuxGSM config file.

Unreal Tournament 2004

LinuxGSM uses the most recent version of UT2K4 server available for Linux.

v3369.3

This includes the various map packs such as the UT2004 Mega Pack.

Complete list of maps available with the LinuxGSM installer

ftp-scp

SFTP (Secure File Transfer Protocol) is the transfer protocol to view and transfer files over SSH. SFTP works the same as FTP but is encrypted.

  • Encrypted

  • Nothing extra to install (such as FTP server)

firewalls

A firewall is a security device that blocks or allows network traffic on to a system or network to prevent unauthorised access and help protect from malicious attack. Firewalls can also assist in rate limiting traffic to prevent too much traffic being sent to a system. This is useful for game servers to help prevent a DDoS (Distributed Denial-of-Service) attack that can overwhelm a game server.

Firewalls can be physical hardware devices that sit on a network, or software that sits on a server or desktop device. This page will focus mainly on software firewalls.

A (DDoS) attack occurs when multiple systems flood the bandwidth or resources of a targeted system, usually one or more web servers. Such an attack is often the result of multiple compromised systems (for example, a botnet) flooding the targeted system with traffic. A botnet is a network of zombie computers programmed to receive commands without the owners' knowledge. Server providers may offer DDoS protection, such as Arbor, that will mitigate such attacks before it reaches a server. However, this feature is often provided as a premium feature meaning often only available on more expensive servers. Some providers may also provide sub-standard protection that may incorrectly filter traffic. So be aware of what protection if a server provider has to protect your server.

is the most commonly used and supported Linux firewall utility, with many other tools interfacing with it To see iptables rules:

glibc

Most servers require a specific version of glibc installed. Newer distros normally have the required version. However the older the distro the less likely the server will run. Check the requirements below. If you have an older distro the game server may still run with a .

A complete list can be found .

List of distros and there glibc version.

permissions

In Linux, files and directories are owned by a user and a group (see ). On top of that, this user, group, and other ones (groups and users), have different permissions on these files. That's what we call file permissions. You might need to change them. If this can be boring to new users, remember that this is a huge part of what makes Linux as secured as it is, and you are required to know this if you wish to do anything serious with Linux.

ls -al /path/to/file/or/dir

Sample output:

Explaination:

  • First character is a a - for files, or a

Make Webserver Case Insensitive

Make apache2 webserver case insensitive with apache2 mod_speling

Some games require FastDL to be case insensitive, apache2 is case sensitive by default. Enabling apache2 mod_speling ignores case sensitivity on a LAMP stack. This guide applies to debian and ubuntu. At the bottom of this page are external guides that include CentOS/Fedora. This workaround will not work on shared webhosting where editing apache2 files is not available.

Enable mod_speling:

Restart apache:

Apache needs to be told which directories mod_speling is applied to, open the webserver's .conf file located inside /etc/apache2/sites-available/ and set AllowOverride to All.

Example:

Set apache2 to use the .conf file you just edited:

Security

TO-DO

(NOTE: This method is detailed further . The web page also describes how to give certain users the default full access to listing all processes.)

By default, a user can see all started processes from other users, which is bad, but also their start parameters, which is pretty dangerous. Those start parameters can contain sensitive information, such as RCON password, Steam API keys and GSLT upon start, a Rust dedicated server is checking if the process name started by any user, and will prevent you from running it again if it finds it, displaying "Player is already running".

To avoid that, run:

And to keep the changes upon machine reboot:

You still need to make one user per server, change ports, and repeat the install process. (See for more info)

IFTTT

There are hundreds in integrations available on allowing you to send alerts in all sorts of different ways to various services and devices. This functionality is used to allow users to recieve alerts about LinuxGSM.

To enable IFTTT you will need to setup a Webhooks integration.

  1. Visit

  2. Login and connect the Webhooks integration

jq

jq allows LinuxGSM to filter json files to extract specific useful data.

Counter-Strike: Global Offensive
Counter-Strike 1.6
Counter-Strike: Source
Day of Defeat: Source
Day of Infamy
Garry's Mod
Insurgency
Killing Floor 2
Minecraft
Quake 3
Rust
Terraria
Team Fortress 2
Teamspeak 3
Unreal Tournament 2004
Unreal Tournament 3
Unreal Tournament 99
Xonotic

General Sourcemod Tips

CS:GO Sourcemod Tips

Metamod Download Link
Plugins Forum
High Traffic Plugins Forum
Take note that some servers require a manually generated and placed .vdf file(link).

Symlink resources

Excellent description of differences between Symlinks and Hardlinks by OSTechNix
Official Ubuntu ln Documentation
alert

Static Port Mapping (NAT/Docker)

Changing port using Docker or firewall
Changing port using the start parameters

Long Server Names

Other Resources:

https://nodecraft.com/support/games/valheim/adding-admins-to-your-valheim-server

1.5

Debian 8

1.4

Debian 9

1.5

Debian 10

1.5

CentOS 7

1.6

CentOS 8

1.5

Distro

Version

Ubuntu LTS 16.04

1.4

Ubuntu LTS 18.04

Game Server - Knowing the game server you are running gives insights into which servers are popular and can help shape development priorities.

  • Distro - It is useful to know which distros LinuxGSM is being used on to help focus development.

  • LinuxGSM Version - The currently installed version of LinuxGSM.

  • Alert Types - The alert types that have been turned on.

  • Gathering game server usage helps set the minimum required hardware for each game server. This is particularly useful for resource-intensive servers.

    • CPU Used - The CPU usage in MHz (rounded to the nearest 100MHz) of the game server.

    • RAM Used - The memory usage in MB (rounded to the nearest 100MB) of the game server.

    • Disk Used - The storage taken by the game server (serverfiles directory) of the game server.

    Gathering information on the server hardware being used to host a Game Server. This provides useful stats on the sorts of hardware game server admins are deciding to use.

    • CPU - Gathers the CPU Manufacturer and Model.

    • RAM - Total server RAM.

    • Disk Space - Total server disk space.

    The country of origin is shown identifying where in the world LinuxGSM is being used.

    The country of origin is no longer working with GA-4 but might be available again in the future

    LinuxGSM Stats uses Google Analytics (GA-4) event-driven API to collect information to allow Daniel Gibbs to get an idea of which game servers and distros are popular identify system requirements for game servers and know the sort of servers game server admins are using.

    Short answer - Yes

    Long answer - All information gathered is anonymous, the server IP address, hostname, etc., or other identifying information is not collected. When LinuxGSM Stats is first run it creates a UUID (Unique identifier) which is a randomly generated ID to allow Google Analytics to identify your unique information anonymously. Since this ID is random there is no way to know where the info is from, only that it is from the same sender.

    The UUID is located inlgsm/data/uuid.txt,if this file is deleted a new UUID will be generated.

    Since LinuxGSM is open-source you can also see how the data is gathered by looking at the info_stats.sh file.

    Data is sent every time the monitor runs as this is the only way to regularly send data.

    To enable LinuxGSM Stats simply add the stats="on" setting to the common.cfg file. This can also be enabled on install.

    How is the information used?

    What information is collected?

    Basic Info

    LinuxGSM Stats
    linuxgsm.com
    LinuxGSM.com

    Game Server Usage

    Server Hardware

    Country of origin

    How is Information collected?

    Is my data anonymous?

    How frequently is the data sent?

    How can I enable this feature?

    Works like any other FTP server
  • Compatible with the popular clients such as Filezilla and WinSCP

  • You can login to any SSH accessable Linux user.

    • Connect like any FTP except it uses the port (default 22)

    • Use your linux username / password

    • You might need to set protocol to SFTP in your FTP client.

    1. Connect to a server as root.

    2. Use FTP if SFTP is available.

    Here is why you shouldn't

    • By logging in as root, you might accidentally remove essential system files or put useless files into the wrong place and mess up with your system.

    • But even more annoying, any file you'll write will belong to root, and the user won't be able to either read, change, or execute writtent files as root.

    • FTP is an unencrypted protocol, therefore it is very unsecure to edit sensitive files using it.

    How to operate without root FTP login ?

    • If you need to edit system config files, then do like everyone else : use an SSH text editor like "nano" or "vi".

    • Set your FTP so that you can login as users with a valid shell from the machine. Eventually, disable root FTP login.

    • Oh, one more thing... Did we talk about SFTP ?

    SFTP Advantages

    How to use SFTP

    Bad practice to avoid

    By all means, you should never

    Root login to an FTP

    CentOS 7

    2.17

    CentOS 8

    2.28

    Debian 9

    2.24

    Debian 10

    2.28

    Debian 11

    2.31

    Ubuntu 16.04 LTS

    2.23

    Ubuntu 18.04 LTS

    2.27

    Ubuntu 20.04 LTS

    2.31

    distrowatch.com is also a great source to find this information.

    glibc version history available on Wikipedia.

    • distrowatch.com

    • glibc Homepage

    Distro

    glibc

    Summary

    Server Requirements

    Distro glibc Versions

    glibc fix
    here

    External Links

    Mailgun

    Crontab

    Most admins will also have a timed monitor cronjob configured. If you do not want to have extra cronjobs the timed monitor will also start a server but with a timed delay.

    Using monitor command

    Using start command

    rc.local

    cronjobs
    cronjobs
    automated monitoring
    Start-Stop-Restart

    Automated Monitoring

    Monitor Cronjob

    Replace the username and gameserver according to your requirements.

    Alert Notifications

    Query Delay

    Monitor Activation

    cronjobs
    Cronjobs
    alerts

    Server IP

  • Server Ports

  • Passwords

  • Config File

  • Backups

  • Server parameters

  • Details Provided

    Example output

    ${systemdir}/data/darkrp_logs

  • ${systemdir}/data/ulx_logs

  • Log clearing

    Gamelogs management

    https://steamdb.info/app/258550/depots/
    mount -o remount,rw,hidepid=2 /proc

    Avoid a security breach and allow you to run multiple servers

    needs to be verified

    here
    this
    Automatically keep LinuxGSM up to date (update-lgsm command)
  • Automatically restart the server at a given time (restart command)

  • Automatically update and restart the server (force-update command)

  • To access and edit your cronjobs use crontab.

    It is possible to set up cronjobs as any user including root. The recommended way is to set up cronjobs using the game servers user account. However, If you run several game server installations on your server you may want to centrally manage cronjobs then using root.

    If you are not used to setting up cronjobs you can use crontab.guru as a great reference to get started.

    Here is an example of a user based cronjob for a daily restart at 5 am.

    Here is an example of a root based cronjob for a daily restart at 5 am.

    Here is an example of a user based cronjob to monitor your server every 5 minutes.

    Here is an example of a root based cronjob to monitor your server every 5 minutes.

    Below is a recommended basic example and will do the following:

    • Monitor your server every 5 minutes.

    • Check for an update every 30 minutes, update and restart only if an update is detected.

    • Restart and check for an update every day at 4:30 AM

    • Update check and update LinuxGSM every Sunday at midnight.

    (update command)
    (monitor command)

    Crontab

    Cronjob as a user or root

    User cronjob

    Root cronjob

    Cronjob Timing Examples

    Every single minute

    Every 30 minutes

    Every hour

    Every two hours

    Every two hours at 30 minutes past the hour

    Every day at 5:10 PM

    Every Wednesday at 1 AM

    Every Five Days at 1 AM

    Cronjob Generator

    LinuxGSM Cronjobs examples

    Replace username and gameserver with your own details.

    Daily cronjob

    Every X Time cronjobs

    Complete Example

    .

    You can quickly do this by running the following command, replacing [AUTHTOKEN] with your authentication token.

    A Don't Starve Together server consists of clusters and shards.

    One cluster can contain multiple shards. A shard is simply a map/level. Multiple shards are connected by cave entrances/exits found on the map. These are functioning as portals to allow players to travel between actual game servers.

    By default, the cluster will be single-sharded. So you only need one server but you will also only have one map.

    Default start parameter setting:

    Take a look at Multiple-Servers to get a general idea of how to create multiple game servers.

    There are two types of shards:

    1. master shard: the shard you enter when joining the server / the shard/server you have to join (one per cluster)

    2. slave shard: shard that will connect to the master (arbitrary number per cluster)

    In this example, we will only use two shards, one overworld shard and one cave shard, on the same machine using the same installation. If you want to use more shards or run the shards on different machines, take a look at the guides mentioned at the bottom. First of all we need two scripts:

    dstserver-1 will be the master shard with an overworld as level.

    ~/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini

    dstserver-2 (this will be the slave shard with a cave as level):

    ~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini

    If you want to Caves and Overworld to display on the same server, you also to change the cluster.ini, otherwise it will run two instances, one with the Overworld and another with the Caves:

    ~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini

    Set all installation variables BEFORE running the ./dstserver-[1,2] install commands. Feel free to change these settings but make sure that you set them to the same clusters. You also should not change them afterwards.

    For clarity it is recommended recommend naming the master shard Master.

    Lastly you have to start both servers. The order does not matter because the slave server will auto-retry connecting to the master server which is listening.

    • Quick Setup

    • Server Settings

    • Command Line Options

    • Understanding Shards and Migration Portals

    Authentication Token

    https://accounts.klei.com
    visit this page

    Clusters and Shards

    Each shard (level of the world) has to be run as an individual game server instance.

    Single-Shard

    Multi-Shard

    Server #1

    Server #2

    Guides / Documentations:

    Other game modes like Zombie Survival can be found on the steam workshop.

    For Garry's Mod, add the collection ID in LinuxGSM config using wscollectionid setting. This will download the collection when the server starts.

    Some Garry's Mod addons like TTT use content from other games. To do this the content will need to be "mounted".

    This guide is for installing another game server with LinuxGSM and using that content, copying that game's files, and mounting the game to Garry's Mod. This guide is for CS:S but should work for any other game.

    First install a Counter-Strike: Source server, if you already have a server installed this step can be skipped. If the server will be deleted after copying files.

    Install CS:S Server with LinuxGSM

    Copy the cstrike the directory from the Counter-Strike: Source to the Gmod folder.

    Ensure that the copied files are owned by the gmodserver user.

    Open mount.cfg file.

    Add game to mount.cfg

    Restart the server. Check if the mount was successful by changing the level to a mounted map with console or rcon.

    Game Resources

    Auto Refresh

    Loading Screen

    Links should not have http:// or an ending/ .

    Gamemode

    Garry's Mod Wiki

    Workshop

    Garry's Mod does not require an API/Auth Key anymore.

    Mounting Game Content

    All source engine games should be mountable.

    There are multiple ways to potentially mount content. The below example is just one example

    Workshop
    iptables -L
    To flush (erase) iptables rules:
    iptables -F

    One way to protect a game server is to rate-limit incoming connections to the game server. Iptables will do this by dropping packets from a connection if it is sending too much traffic. This is particularly important if using the LinuxGSM monitor feature, as monitor relies on the query port being available. Should the query port be flooded with traffic it may become unavailable and LinuxGSM will assume the game server has crashed and reboot. The below example will rate-limit traffic on port 27015 (the default for source engine games) to 10 requests every 60 seconds. Different game servers may require different rate limits, so it may be important to adjust the limits to ensure legitimate traffic does not get blocked.

    Once you have created your port forwards and want to see if the internet can access the ports, there is a website called canyouseeme.org. Simply change the port to your game port (27015 for example) and it will tell you if it can access it on your computer. This will help you verify your port forward was created successfully.

    Some game servers (like Rust) register their external IP with steam when they startup. When you create port forwards to the game server, you need to make sure the port forward is on the address the outbound traffic is on. For example, say you have a router with two IPs from different ISPs;

    If your traffic is going out WAN0 you need to put the port forwards on the 71.2.5.23 address. If your outbound traffic is going out WAN1 you would need to put your port forwards on 65.13.29.46.

    DDoS protection

    iptables

    distributed denial-of-service
    iptables

    Protecting a game server

    Checking connectivity

    Networks with multiple gateways

    d
    for directories
  • Three next ones are owner permissions: rwx

  • Three next ones are group permissions: rwx

  • Three next ones are "others permissions: rwx for groups and users that are now owning the file

  • First user listed is the owner

  • Next entry is the group owning the file

  • "r" stands for "read", "w" stands for "write", "x" stands for execute. If any letter from rwx is showed as a -, it means that the permission is not granted.

    Change permissions from files or directories

    chmod

    Append -R to your chmod

    chmod -R

    Set all permissions at once

    chmod 777 == chmod -a+rwx chmod 000 == chmod -a-rwx

    First number is for user, second is for group, third for others

    Default permissions are 755. If you wish to prevent other users from interacting with your files, then 750 can be great.

    chmod -R 750 /home/userdir

    We used rwx for these, but of course, you should pick the permissions you wish to add or remove.

    chmod +rwx filename Will add read, write, and execute permissions to this file anyone on the machine. r stands for "read", w for "write", and x for "execute"

    Example : chmod +x filename Will make the file executable by anyone on the machine.

    chmod -rwx filename Will remove read, write, and execute permissions to this file anyone on the machine. Note : root user is the only exception.

    chmod -u+rwx chmod -g+rwx chmod -o+rwx chmod -a+rwx

    chmod -u+r,g-w,o-rwx

    Of course, you can replace +rwx by anything previously mentioned

    Advanced permissions management, you will likely not need this for game servers.

    No GUID

    chmod -R a-s /path/to/dir chmod -R 0xxx /path/to/dir

    Example : chmod -R 0640 /home/user/website

    Set UID

    Files will run as the user

    chmod -R u+s /path/to/dir/ chmod -R 2xxx /path/to/dir

    Set GID

    Any subdir and subfile will have the same group

    chmod -R g+s /path/to/dir/ chmod -R 4xxx /path/to/dir

    Set GUID

    Set both UID and GID

    chmod -R a+s /path/to/dir/ chmod -R 6xxx /path/to/dir

    Check current permissions

    Check permissions from a file or all files of any directory

    File Ownership

    Change permissions

    Command

    Recursive syntax (include sub files and directories)

    Syntax 1)

    Values

    Example

    Syntax 2)

    Permissions add

    Permissions remove

    Permissions for user/group/others/all

    Multiple permissions at once

    Set GUID and GID

    Set GUID

    In /var/www/html/ or your webserver directory, create a .htaccess file with this:

    Test the configuration by creating a file, like test.txt, and see if it can be opened in browser by typing TEST.txt, test.TXT, etc. If it works, you are finished.

    mod_speling Documentation

    Guides from other sources:

    Wikitechy mod_speling Guide

    a2Hosting mod_speling Guide

    a2enmod speling
    systemctl start ts3server # Start the server
    systemctl stop ts3server  # Stop the server
    systemctl enable ts3server # Enable start on boot
    systemctl disable ts3server # Disable start on boot
        @reboot '/home/username/gameserver monitor' > /dev/null 2>&1
    crontab -e
    @reboot su - username -c '/home/username/gameserver monitor' > /dev/null 2>&1
    crontab -e
    @reboot su - username -c '/home/username/gameserver start' > /dev/null 2>&1
    nano /etc/rc.local
    su - username -c '/home/username/gameserver start'
    crontab -e
    */5 * * * *  /home/username/gameserver monitor > /dev/null 2>&1
    */5 * * * *  su - username -c '/home/username/gameserver monitor' > /dev/null 2>&1
    ## Monitor | https://docs.linuxgsm.com/commands/monitor
    # Query delay time
    querydelay="1"
    Distro Details
    ===============================================================================================================================================================
    Distro:    Debian 7.7
    Arch:      x86_64
    Kernel:    2.6.32-042stab102.9
    Hostname:  vps86887.ovh.net
    tmux:      tmux 1.6
    GLIBC:     2.13
    
    Performance
    ===============================================================================================================================================================
    Uptime:    0d, 17h, 36m
    Avg Load:  0.00, 0.02, 0.00
    
    Mem:       total   used   free
    Physical:  1.0G    1.0G   17M
    Swap:      128M    25M    102M
    
    Disk Usage
    ===============================================================================================================================================================
    Disk available:  5.4G
    Serverfiles:     1.6G
    Backups:         4.8M
    
    Fistful of Frags Server Details
    ===============================================================================================================================================================
    Server name:  Fistful of Frags Server
    Server IP:    192.168.1.1:27015
    RCON password:  rconpassword
    Status:       OFFLINE
    
    Service name:  fof-server
    User:          fofserver
    Location:      /home/fofserver
    Config file:   /home/fofserver/serverfiles/fof/cfg/fof-server.cfg
    
    Backups
    ===============================================================================================================================================================
    No. of backups:    1
    Latest backup:
        date:          Fri Jan 23 15:54:52 CET 2015
        file:          /home/fofserver/backups/fof-server-2015-01-23-155447.tar.gz
        size:          4.8M
    
    Command-line Parameters
    ===============================================================================================================================================================
    ./srcds_run -game fof -strictportbind -ip 192.168.1.1 -port 27015 +clientport 27005 +tv_port 27020 +map fof_depot +servercfgfile fof-server.cfg -maxplayers 16
    
    Ports
    ===============================================================================================================================================================
    Change ports by editing the command-line
    parameters in ./fofserver.
    
    Useful port diagnostic command:
    netstat -atunp | grep srcds_linux
    
    DESCRIPTION  DIRECTION  PORT   PROTOCOL
    > Game/RCON  INBOUND    27015  tcp/udp
    logdays="7" # How long logs are kept
    consolelogging="on" # Turning this to off will disable console logging
    betapassword="branchpassword"
    nano /etc/fstab
    # Here are the modification to apply to the "proc" line
    proc    /proc    proc    defaults,hidepid=2    0    0
    crontab -e
    * * * * * [/path/to/script] [command] > /dev/null 2>&1
    * * * * * su - username -c '[/path/to/script] [command]' > /dev/null 2>&1
    * * * * *
    */30 * * * *
    0 * * * *
    0 */2 * * *
    30 */2 * * *
    10 17 * * *
    0 1 * * * 3
    0 1 */5 * *
    0 5 * * *  /home/username/gameserver restart > /dev/null 2>&1
    0 5 * * *  su - username -c '/home/username/gameserver restart' > /dev/null 2>&1
    */5 * * * *  /home/username/gameserver monitor > /dev/null 2>&1
    */5 * * * *  su - username -c '/home/username/gameserver monitor' > /dev/null 2>&1
    */5 * * * * /home/username/gameserver monitor > /dev/null 2>&1
    */30 * * * * /home/username/gameserver update > /dev/null 2>&1
    30 4 * * *  /home/username/gameserver force-update > /dev/null 2>&1
    0 0 * * 0 /home/username/gameserver update-lgsm > /dev/null 2>&1
    echo '[AUTHTOKEN]' > ~/.klei/DoNotStarveTogether/[CLUSTER]/cluster_token.txt
    sharding="false"
    ./dstserver-1
    ./dstserver-2
    ## Predefined Parameters
    sharding="true"
    master="true"
    shard="Master" 
    cluster="Cluster_1"
    cave="false"
    [NETWORK]
    server_port = 11000
    
    [STEAM]
    authentication_port = 8768
    master_server_port = 27018
    ## Predefined Parameters
    sharding="true"
    master="false"
    shard="Caves" 
    cluster="Cluster_1"
    cave="true"
    [NETWORK]
    server_port = 11001
    
    [STEAM]
    authentication_port = 8769
    master_server_port = 27019
    [SHARD]
    shard_enabled = true
     -disableluarefresh
    sv_loadingurl "www.website.com/loading/screen"
    TTT     gamemode="terrortown"
    Sandbox gamemode="sandbox"
    wscollectionid="157384458"
    cp -R /home/cssserver/serverfiles/cstrike /home/gmodserver/serverfiles/cstrike
    chown -R gmodserver /home/gmodserver
    nano /home/gmodserver/serverfiles/garrysmod/cfg/mount.cfg
    "mountcfg"
    {
             "cstrike"      "/home/gmoduser/serverfiles/cstrike"
    }
    changelevel cs_italy
    iptables -A INPUT -p udp -m udp --dport 27015 -m state --state NEW -m recent --set --name DEFAULT --rsource
    iptables -A INPUT -p udp -m udp --dport 27015 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DEFAULT --rsource -j DROP
    [eth0] 192.168.1.1 (LAN)
         |  |
    -----------------
    |                | --[WAN0] 71.2.5.23 (ISP A)  
    |                | --[WAN1] 65.13.29.46 (ISP B)  
    ------------------
    ultimatebyte@game:~$ ls -al twserver
    -rwxr-x--- 1 ultimatebyte ultimatebyte 5691 Jan 30 01:14 twserver
    0 no permissions
    1 x
    2 w
    3 wx
    4 r
    5 rx
    6 rw
    7 rwx
    service apache2 restart
    <Directory /var/www/html/>
    	Options Indexes FollowSymLinks
    	AllowOverride All
    	Require all granted
    </Directory>
    a2ensite name_of_.conf_file
    <IfModule mod_speling.c>
    CheckSpelling On
    CheckCaseOnly On
    </IfModule>

    Select Documentation to get your IFTTT API key.

  • Paste the API key into LinuxGSM settings.

  • An event name is a word used to trigger IFTTT event. This word is used when setting up an applet and can be any word you choose.

    IFTTT allows 3 different values to be sent using the webhook; Value1, Value2 and Value3. LinuxGSM sends different data for each value as listed below.

    • Value1: Sends the name of the server e.g csgoserver

    • Value2: Sends an alert subject e.g Alert - csgoserver - Test

    • Value3: Sends an alert summary message.

    1. Create a New applet

    2. Select the Webhooks service

    3. Choose Receive a web request

    4. Enter your Event Name and click Create Trigger

    5. Select an action service.

    6. Give the applet a name and save.

    Setup IFTTT Webhook

    IFTTT
    https://ifttt.com/maker_webhooks
    # IFTTT Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/IFTTT
    iftttalert="off"
    ifttttoken="e-Yg8blVGDA15ewWvtZjUe"
    iftttevent=""
    # IFTTT Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/IFTTT
    iftttalert="off"
    ifttttoken="e-Yg8blVGDA15ewWvtZjUe"
    iftttevent="linuxgsm_alert"
    Testing LinuxGSM Alert. No action to be taken.
    Game Squad
    Server name LinuxGSM Server 1
    Hostname ubuntu.example.com
    Server IP 1.2.3.4:27015

    Create an IFTTT event name

    Values

    How to create an applet

    [/Script/ModKit.ModIOClient]
    bHasUserAcceptedTerms=True
    AccessToken=TOKEN HERE
    mkdir -p Insurgency/Config/Server
    touch Insurgency/Config/Server/Mods.txt
    touch Insurgency/Config/Server/MapCyle.txt
       
    (Scenario="Scenario_TORO_Checkpoint_Security",Lighting="Day",Mode="Checkpoint")
    (Scenario="Scenario_TORO_Checkpoint_Insurgents",Lighting="Day",Mode="Checkpoint")
    defaultmap="TORO"
    defaultscenario="Scenario_TORO_Checkpoint_Security"

    Add a Mod/Map

    You can also specify your ownMods.txt file using ModList=MyCustomModList.txt or adding the mod id's to your start parameters using -CmdModList="mod1,mod2,mod3"

    Resources

    start parameters
    mod.io
    start parameters
    Official Server Admin Guide
    TORO
    mod ID: 94277
    //Default Survival state (enabled by default) 1=on 2=off
    mp_survival_mode 
    
    //1=Players can vote to enable/disable survival 2=Players can't vote on this
    mp_survival_voteallow 
    
    //Number of retries before "next map" vote starts. -1 is infinite,  3 is default
    mp_survival_retries 
    
    //Minimum number of players needed to start Survival mode
    mp_survival_minplayers 
    

    Sven Co-op Guides

    Make FastDL Webserver Case Insensitive
    # Discord Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Discord
    discordalert="on"
    discordwebhook="https://discordapp.com/api/webhooks/3539332633367897009/5t_K4GkuBaR2-69TsKqXmHIya1ck1tirnu_Fst-DUC00dye98eaa_I6uTIcHEsi7a17K"

    You must have Discord User Settings > Text & Images > Link Preview: 'Show website preview...' enabled or you will just see blank messages from the alert bot.

    LinuxGSM settings
    # Pushover Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushover
    pushoveralert="on"
    pushoveruserkey="yourpushoverid"
    pushovertoken="b5u24t1wua34gmh14kr1s3erkwi7tl"
    LinuxGSM config
    channeltag="myepicserver"
    create session failed: ./srcds_linux -game csgo: Operation not permitted
    usermod -G tty csgoserver
    grep tty /etc/group
    tty:x:5:csgoserver
    yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
    yum --enablerepo=gf-plus install tmux
    restart

    Known Issues

    Tmux 1.8

    tmux 1.8 is installed on CentOS 7 by default see guide below to installed a newer version

    create session failed: Operation not permitted

    Upgrade tmux CentOS 7 using Ghettoforge

    Ghettoforge
    # Slack Alerts | https://docs.linuxgsm.com/alerts/slack
    slackalert="on"
    slackwebhook="your webhook url"
    LinuxGSM settings
    AS-BP2-Acatana.ut2           CTF-Avaris.ut2               CTF-Smote.ut2                DM-CBP1-Elegance.ut2         DM-DE-Ironic.ut2             DM-UCMP-PleasantValley.ut2   DOM-ScorchedEarth.ut2
    AS-BP2-Jumpship.ut2          CTF-BP2-Concentrate.ut2      CTF-TwinTombs.ut2            DM-CBP1-Emperor.ut2          DM-DE-Osiris2.ut2            DM-UCMP-RancidMetal.ut2      DOM-SepukkuGorge.ut2
    AS-BP2-Outback.ut2           CTF-BP2-Pistola.ut2          CTF-UCMP-Aithanarid.ut2      DM-CBP1-Finale.ut2           DM-Deck17.ut2                DM-UCMP-ThePits.ut2          DOM-Suntemple.ut2
    AS-BP2-SubRosa.ut2           CTF-BridgeOfFate.ut2         CTF-UCMP-Aquatica.ut2        DM-CBP1-GoldenDawn.ut2       DM-DesertIsle.ut2            DM-UCMP-Xanadu.ut2           DOM-UCMP-Cerebral.ut2
    AS-BP2-Thrust.ut2            CTF-CBP1-Betrayal.ut2        CTF-UCMP-DecaneCaldera.ut2   DM-CBP1-Neandertalus.ut2     DM-Flux2.ut2                 DM-UCMP2-Adamantium.ut2      DOM-UCMP2-1on1-Smelter.ut2
    AS-CBP2-Thrust.ut2           CTF-CBP1-Concentrate.ut2     CTF-UCMP2-Campgrounds.ut2    DM-CBP1-Ougaldwin.ut2        DM-Forbidden.ut2             DM-UCMP2-Churn.ut2           DOM-UCMP2-Meskhenet.ut2
    AS-Confexia.ut2              CTF-CBP1-Ferris.ut2          CTF-UCMP2-Enlightenment.ut2  DM-CBP1-Shifter.ut2          DM-Gael.ut2                  DM-UCMP2-Dynarak.ut2         Entry.ut2
    AS-Convoy.ut2                CTF-CBP1-TechDream.ut2       CTF-UCMP2-Orcus.ut2          DM-CBP2-Achilles.ut2         DM-Gestalt.ut2               DM-UCMP2-Hieron.ut2          ONS-Adara.ut2
    AS-FallenCity.ut2            CTF-CBP2-Bahera.ut2          CTF-UCMP2-RottenCity.ut2     DM-CBP2-Archipelago.ut2      DM-Goliath.ut2               DM-UCMP2-Saiko.ut2           ONS-ArcticStronghold.ut2
    AS-Glacier.ut2               CTF-CBP2-Botanic.ut2         CTF-UCMP2-Sublimity.ut2      DM-CBP2-Azures.ut2           DM-HyperBlast2.ut2           DM-UCMP2-Taron.ut2           ONS-Aridoom.ut2
    AS-Junkyard.ut2              CTF-CBP2-Decadence.ut2       CTF-UCMP2-Vadamerca.ut2      DM-CBP2-Buliwyf.ut2          DM-Icetomb.ut2               DM-UCMP2-Thebes.ut2          ONS-Ascendancy.ut2
    AS-MotherShip.ut2            CTF-CBP2-Deep.ut2            CTF-UCMP3-Tidal.ut2          DM-CBP2-Drakonis.ut2         DM-Inferno.ut2               DM-UCMP3-Altitude.ut2        ONS-CBP2-Argento.ut2
    AS-RobotFactory.ut2          CTF-CBP2-Gazpacho.ut2        CTF-UCMP4-Talya.ut2          DM-CBP2-Griffin.ut2          DM-Injector.ut2              DM-UCMP3-Gantham.ut2         ONS-CBP2-Brassed.ut2
    AS-UCMP2-Cruciatus.ut2       CTF-CBP2-Pistola.ut2         CTF-UCMP4-Virility.ut2       DM-CBP2-Kadath.ut2           DM-Insidious.ut2             DM-UCMP3-Glorian.ut2         ONS-CBP2-Mirage.ut2
    AS-UCMP3-IslandStrike.ut2    CTF-CBP2-Skorbut.ut2         DM-1on1-Albatross.ut2        DM-CBP2-Kerosene.ut2         DM-IronDeity.ut2             DM-UCMP3-Sympathy.ut2        ONS-CBP2-Pasargadae.ut2
    BR-Anubis.ut2                CTF-Chrome.ut2               DM-1on1-Crash.ut2            DM-CBP2-Khrono.ut2           DM-Junkyard.ut2              DM-UCMP4-Elucidation.ut2     ONS-CBP2-Tropica.ut2
    BR-Bifrost.ut2               CTF-Citadel.ut2              DM-1on1-Desolation.ut2       DM-CBP2-KillbillyBarn.ut2    DM-Leviathan.ut2             DM-UCMP4-Mania.ut2           ONS-CBP2-Valarna.ut2
    BR-BridgeOfFate.ut2          CTF-Colossus.ut2             DM-1on1-Idoma.ut2            DM-CBP2-Koma.ut2             DM-Metallurgy.ut2            DM-UCMP4-Propaganda.ut2      ONS-CBP2-Yorda.ut2
    BR-CBP1-BreakLimit2004.ut2   CTF-DE-ElecFields.ut2        DM-1on1-Irondust.ut2         DM-CBP2-KroujKran.ut2        DM-Morpheus3.ut2             DM-UCMP4-Speos.ut2           ONS-Crossfire.ut2
    BR-CBP2-Aquarius.ut2         CTF-DE-LavaGiant2.ut2        DM-1on1-Mixer.ut2            DM-CBP2-Masurao.ut2          DM-Oceanic.ut2               DOM-Access.ut2               ONS-Dawn.ut2
    BR-CBP2-Bahera.ut2           CTF-December.ut2             DM-1on1-Roughinery.ut2       DM-CBP2-Meitak.ut2           DM-Phobos2.ut2               DOM-Aswan.ut2                ONS-Dria.ut2
    BR-Canyon.ut2                CTF-DoubleDammage.ut2        DM-1on1-Serpentine.ut2       DM-CBP2-Niflheim.ut2         DM-Plunge.ut2                DOM-Atlantis.ut2             ONS-FrostBite.ut2
    BR-Colossus.ut2              CTF-Face3.ut2                DM-1on1-Spirit.ut2           DM-CBP2-Reconstruct.ut2      DM-Rankin.ut2                DOM-CBP1-Aphrodite.ut2       ONS-Icarus.ut2
    BR-DE-ElecFields.ut2         CTF-FaceClassic.ut2          DM-1on1-Squader.ut2          DM-CBP2-Summit.ut2           DM-Rrajigar.ut2              DOM-CBP1-Hathor.ut2          ONS-IslandHop.ut2
    BR-Disclosure.ut2            CTF-Geothermal.ut2           DM-1on1-Trite.ut2            DM-CBP2-TelMecoMEX.ut2       DM-Rustatorium.ut2           DOM-CBP1-Verde.ut2           ONS-Primeval.ut2
    BR-IceFields.ut2             CTF-Grassyknoll.ut2          DM-Antalus.ut2               DM-CBP2-Tempest.ut2          DM-Sulphur.ut2               DOM-CBP2-Gerroid.ut2         ONS-RedPlanet.ut2
    BR-Serenity.ut2              CTF-Grendelkeep.ut2          DM-Asbestos.ut2              DM-CBP2-TensileSteel.ut2     DM-TheDeck2004.ut2           DOM-CBP2-Summit.ut2          ONS-Severance.ut2
    BR-Skyline.ut2               CTF-January.ut2              DM-BP2-Calandras.ut2         DM-CBP2-Torkenstein.ut2      DM-TokaraForest.ut2          DOM-Conduit.ut2              ONS-Torlan.ut2
    BR-Slaughterhouse.ut2        CTF-Lostfaith.ut2            DM-BP2-GoopGod.ut2           DM-CBP2-Tydal.ut2            DM-TrainingDay.ut2           DOM-Core.ut2                 ONS-Tricky.ut2
    BR-TwinTombs.ut2             CTF-Magma.ut2                DM-CBP1-Arkanos.ut2          DM-Compressed.ut2            DM-UCMP-1on1-Derelict.ut2    DOM-Junkyard.ut2             ONS-UCMP-ABC-ECE.ut2
    BR-UCMP2-Sublimity.ut2       CTF-Maul.ut2                 DM-CBP1-AugustNoon.ut2       DM-Corrugation.ut2           DM-UCMP-BloodRun.ut2         DOM-OutRigger.ut2            ONS-UCMP-ABC.ut2
    CTF-1on1-Joust.ut2           CTF-MoonDragon.ut2           DM-CBP1-BlackJackal.ut2      DM-Curse4.ut2                DM-UCMP-Contrast.ut2         DOM-Renascent.ut2            ONS-Urban.ut2
    CTF-AbsoluteZero.ut2         CTF-Orbital2.ut2             DM-CBP1-Downgrave.ut2        DM-DE-Grendelkeep.ut2        DM-UCMP-ImMortalis.ut2       DOM-Ruination.ut2            VCTF-UCMP2-RiverCanyon2.ut2

    Server Files

    Community
    Start Parameters
    LinuxGSM Config
    monitor
    Troubleshooting
    LinuxGSM settings
    Ports

    LinuxGSM Config

    LinuxGSM Configs and are different. One is the config for LinuxGSM itself and the other is for the game server instance.

    The configuration of LinuxGSM is handled through several config files, which are loaded in a specific order. Understanding this process is crucial to ensure that settings are appropriately placed within the correct config files.

    Config Files Location

    Relative to your installation directory, config files are located in:

    lgsm/config-lgsm/gameserver

    Configuration Mechanism

    The LinuxGSM configuration mechanism is intentionally designed to provide users with several advantages. These include the ability to access new features, retain default settings, effectively handle multiple instances, and allow LinuxGSM to update the configuration when necessary.

    Configuration files

    An understanding of how LinuxGSM handles instances helps.

    _default.cfg

    _default.cfg is the template config, this file is a base of all available default settings. It can not be edited and is updated by LinuxGSM when using ./gameserver update-lgsm. This config is loaded first.

    Do not edit _default.cfg any changes to this file will be overwritten.

    common.cfg

    common.cfg is used for common settings that apply to all game server instances of the same installation. This saves having to apply the same settings multiple times.

    instance.cfg is the configuration file used for each individual game server instance. Settings here will only apply to this specific game server instance. This config file takes the same name as the game server instance name ./gameserver. For example, if ./csgoserver is used the instance.cfg will be called csgoserver.cfg. This config is last to be loaded.

    Secret configs serve as a designated space for storing sensitive information, such as steam login details, separately from the main config files. This separation allows server administrators to back up their configurations while excluding sensitive data, enhancing security and privacy. It proves especially valuable for administrators who wish to create a version-controlled skeleton configuration using git that might eventually become publicly accessible.

    It's essential to understand that the secret config is not encrypted or inherently more secure than other config files. However, it provides a convenient way to keep sensitive information isolated from the rest of the configurations.

    To distinguish secret configs from others, their names are typically prefixed with the word "secrets." This naming convention aids in identifying and managing these specific files.

    When the configuration files are loaded by LinuxGSM, they adhere to a specific order. Initially, settings are fetched from _default.cfg, followed by common.cfg, and finally instance.cfg. As a result, any setting specified in instance.cfg will take precedence over the same setting in common.cfg, which, in turn, overrides the setting in _default.cfg. This hierarchical loading ensures that settings become increasingly specific, with instance configurations having the highest priority.

    This configuration fits most scenarios, where you have a simple installation with only one instance.

    1. Browse to the config-lgsm directory

    1. Use ls to list the directory contents and find the name of your instance.cfg.

    2. Use cat or nano to see the contents of _default.cfg .

    1. Copy the individual settings you want to change to instance.cfg

    This configuration is useful for .

    1. Browse to the config-lgsm directory

    1. Use ls to list the directory contents.

    2. Use cat or nano to see the contents of _default.cfg .

    1. Copy any settings you want to apply to a specific instance to its instance.cfg.

    Load de_nuke as default map on csgoserver:

    Load cs_office as default map on csgoserver:

    Load de_dust2 as default map on csgoserver:

    Load de_nuke as default map on csgoserver instance and de_inferno on csgoserver-2 instance:

    Load de_nuke as default map on csgoserver instance and cs_office on csgoserver-2 instance:

    Start Parameters

    Also known as Command-Line Parameters, Command line arguments, or Launch Parameters.

    Many game servers require start parameters, these are command-line options that are set with the server executable when the server starts.

    Using game server configs over parameters is preferred, however, sometimes this is not an option. When this is the case only parameters or a mixture of game server config and parameters will be used.

    Parameters being used by the game server can be found in ./gameserver details. To alter them, you will need to edit LinuxGSM config files.

    Predefined Parameters

    LinuxGSM often uses predefined parameters that can be edited. This makes adjusting common settings easier and allows them to be displayed in ./gameserver details.

    Additional command-line parameters can be added to the startparameters setting.

    Anything added will be appended to the server executable binary.

    • 7 Days to Die

    • Gold Source Servers

    Call of Duty 4

    Call of Duty 4 Server Files

    Many tutorials state that the game disk is required to install a CoD4 server. This is because the server is built into the client. This made it difficult to distribute and create a CoD4 server.

    After investigating this issue, it was found that it is possible to run a server with most of the client files removed. This greatly reduces the file size and prevents the client from being used. Because of this LinuxGSM provides a download to only the files required to run the server. Preventing the use of the client, removing the opportunity to use the server to pirate the game.

    CoD4x

    cod4server uses CoD4x project for its server, rather than the original, as it fixes various bugs and adds a few features over the vanilla server.

    https://cod4x.ovh

    Updating CoD4x

    CoD4x has its own update functionality. It will automatically check for updates and does not require LinuxGSM to check for updates.

    CoD4x Master Server

    CoD4x game servers (since version 17.6) require a server token to be listed on the CoD4x master server.

    To generate a token visit .

    Once a token is generated add it to the sv_authtoken cvar in server.cfg or command-line parameters.

    The server then needs to be restarted to allow the game server to be listed.

    Mods for Call of Duty 4 have to be manually added to the game server.

    To run a mod the servers fs_game variable must be set correctly. Mods reside in the mods folder inside fs_homepath. Example directory tree:

    To start the server with a mod set the fs_game variable accordingly.

    Modded CoD4 servers have the ability to run with user-created maps. To run a server with a custom map, it has to first be placed in the usermaps directory (if missing simply create it yourself).

    Typically, maps are prefixed by mp_ following the maps name.

    Running custom maps on unmodded servers is not supported, but there is a neat workaround to still load custom maps. First, create a mods folder and some empty folder inside it.

    Now set fs_game to mods/myemptymod and you will be able to run custom maps.

    is possible with CoD4 to allow custom maps and mods to be hosted on a webserver.

    here sv_wwwBaseURL has to point to a URL served by your web server.

    An example directory tree for a served folder may look as below:

    install

    LinuxGSM allows for the simple installation of game servers. The installer is designed to get a game server to a working state allowing the game server to be started right away.

    The installer will:

    • Create required directories

    • Install/advise on required dependencies

    • Download the game server files

    • Load config files

    • Apply any fixes required to get the game server working

    The standard installation is the default installation method that requires user interaction.

    Standard: ./gameserver install

    Short: ./gameserver i

    Auto install is useful for automatic server deployments as no user prompt is required.

    Standard: ./gameserver auto-install

    Short: ./gameserver ai

    1. Make your script executable:

    chmod +x gameserver

    1. Run the install command: ./gameserver install or ./gameserver auto-install to bypass any prompts.

    2. Follow on-screen instructions.

    Installation of dependencies requires either sudo or root access. LinuxGSM can automatically install dependencies if the user has sudo or is root.

    As root run ./gameserver install and the installer will complete a dependency installation only, ignoring the other installation steps.

    If a user has sudo access the installer will prompt to enter the sudo password to automatically install dependencies. If sudo is not available the installer will advise on the command required to install dependencies.

    LinuxGSM may fail to run if the correct permissions have not been used. This fault commonly occurs if an admin has not correctly followed installation instructions found on

    Common faults include:

    • Trying to install the LinuxGSM as root.

    • Trying to install LinuxGSM in a directory not owned by the correct user.

    • Not making gameserver file executable using the chmod +x command.

    If trying to run as root LinuxGSM will fail to run. See .

    To check if the correct user owns the directory or gameserver file, use ls -al

    Example output

    If some files/directories are not owned by the correct user, use the chown command. Login as root and use the following command, changing the details to match your server

    chown -R username:username /home/gameserver

    chown -R csgoserver:csgoserver /home/csgoserver

    If the connection to the Steam servers is poor (quite common), the SteamCMD download can fail. This is why LinuxGSM will always ask you if the installation was successful allowing admins to retry the download should it fail.

    If there are still issues downloading try the option.

    ./gameserver validate

    If downloading is still failing it may be worth contacting your server provider to confirm Steam servers are not being blocked for any reason.

    It is also worth searching the internet for issues relating to the error message you receive.

    Some game servers take up a significant amount of disk space. If you are having issues downloading check that your server has enough space available.

    To check your available storage, use:

    df -h or ./gameserver details

    Make sure you can ping using a hostname.

    Should this fail, your server may not have DNS lookup correctly configured.

    fastdl

    FastDL (Fast Download) allows the client to download custom server content (maps, materials, models, particles, sounds, fonts, images) from a web server.

    It is used to offload content downloads to a web server instead of relying on source servers (SRCDS) that only allows 20KBps downloads to clients. Content on the web server can be compressed to further speed up the download process. This means that custom content downloads much faster.

    Valve now use steam workshop for most custom content however FastDL is still required in some cases.

    LinuxGSM FastDL automatically creates the web directories and compresses the content for you.

    Supported Servers

    • All Source engine servers

    Commands

    Standard: ./gameserver fastdl

    Short: ./gameserver fd

    • Maps (.bsp)

    • Materials (.vtf, .vmt, .png, .svg)

    • Models (.vtx, .vvd, .mdl, .phy)

    • Particles (.pcf)

    • Web server on the game server (Apache/Nginx).

      or

    • Access to a remote web server.

    Run the FastDL command on your main LinuxGSM script. This will create a new directory /home/gameserver/public_html/fastdl

    ./gameserver fastdl

    If Apache2 is being used a virtual host pointing to the newly created public_html directory can be used.

    Tip: Apache2 mod "userdir" is useful if the Linux server is hosting , as it creates a url for the current user http://yourwebsite.ltd/~username.

    Here is an example of setting up Apache2 using a subdomain.

    This works for Apache 2.4+ and when using a domain name. If you have got a different configuration, refer to the Apache2 documentation.

    Firstly make sure your subdomain redirects to your game server and that Apache2 is correctly installed and started. Create a virtual host in order to be able to host a website :

    nano /etc/apache2/sites-available/yourvirtualhost.com.conf

    See the example below and edit the relevent details.

    Enable your website by restarting Apache2

    Test the domain, to make sure it is working http://subdomain.domain.com/fastdl

    The new url will need to be added to the

    nano serverfiles/gamename/cfg/game-server.cfg

    Make sure you have this:

    If the custom server content is updated or removed re running the fastdl command is required to ensure that the webserver is in sync with the game server.

    Note for addons developers : Note that clients won't download a file that they already downloaded unless you rename it.

    Custom server content can be compressed using bzip2 which is supported by source games, allowing clients downloads will be faster. It is a must-have if you're hosting large files, as it will save you bandwidth, and speed up downloads for clients. However, using bzip2 on many small files can slow down client loading times.

    In order for a client to download files from a FastDL in Garry's Mod, the developer of an addon must put files from the addon into lua code resource.Addfile ( "/path/to/file.ext" ). However, some addon developers do not do this. In order for clients to download the required files, an lua file needs to be generated for it to work, which is what the lua enforcer feature does. The only downside is that clients may download files that are not required on the server.

    Workshop

    Many Steam games support the Steam Workshop. It is an easy way to share community game modes, maps, skins, and other community-made content.

    For game servers, the Workshop allows community content (mainly maps and game modes) to be made available to play on game servers. The Workshop content is automatically downloaded by the game client of the player connecting to the server. This removed the need to set up a FastDL server.

    LinuxGSM adds workshop pre-configuration to game server scripts when available.

    Supported Games Servers

    This is a list of game servers that are known to support Workshop

    • Ark: Survival Evolved

    • ARMA 3

    • Day of Infamy

    • Counter-Strike 2

    • Garrys Mod

    • Hurtworld

    • Insurgency: Sandstorm

    • Killing Floor 2

    • Natural Selection 2

    • Starbound

    Some game servers require a Steam API key to access Workshop content. To get this key visit the and follow the instructions.

    The Steam Workshop is made up of individual items such as maps, game modes, skins, etc, and also collections of these items. Game servers can download these items and collections by getting their unique ID number and adding it to the game server config or parameter. For collections, it is possible to find and use an existing one or create your own.

    To get and item or collection ID browse to the item you want to add and look at the URL; it will contain the required ID number. In the example below the ID is 3075706807.

    Creating a collection is a great way to manage and group all the content that you want on your game server.

    To create your collection go to the collections section of your games Workshop, and select Create Collection.

    Fill out the form.

    Add any maps to the collection, then publish the completed collection. Then get the collection ID which can be found on the page URL. The collection ID in the url below is 157384458.

    Killing Floor 2

    Ports

    • Game Port Default: 7777 UDP Handled by: LinuxServer-KFEngine.ini

    • Query Port Default: 27015 UDP Handled automatically or handled by parameters. The formula for finding query port assigned automatically is 19238 + assigned game port.

    • Web Admin Default: 8080 TCP Handled by: KFWeb.ini

    • Steam Port Default: 20560 UDP Handled automatically. The formula for finding the steam port is 12783 + Game Port.

    LinuxGSM installations contain configSubDir=servername in the command line by default, which creates a folder for config files named after the server. The default directory is /home/user/serverfiles/KFGame/Config/kf2server . Use these files to change server settings.

    Workshop content is added in LinuxServer-KFEngine.ini in the OnlineSubsystemSteamworks.KFWorkshopSteamworks section

    This will only work for Workshop items that the server downloads itself, that are listed in the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section as described above.

    1. Make sure that the server is not running. If it is running, the Workshop setup will be overridden the next time you restart the server.

    2. Find the section [IpDrv.TcpNetDriver] in the PCServerEngine.ini config file.

    3. Add the line "DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload" to that section. If there are other "DownloadManagers=" lines, make sure this one is the first.

    backup

    The backup command allows the creation of .tar.gz archives of a game server. This can be used to transfer a game server to another Linux server, to backup the game server before a risky change, to save the current state of the game server.

    Standard: ./gameserver backup

    Short: ./gameserver b

    Alter these three settings by editing .

    IP Address

    Depending upon the configuration of your server you may need to be more aware of its IP address configuration and how it relates to your game server.

    Your game server can be hosted online using a server provider such as Linode or on a at home for either local-only LAN parties or allowing online players in through your router.

    If your server is hosted on the internet using a server provider you should have been allocated a public internet IP address that will be accessible by everyone on the internet.

    Using a home server or virtual machine on your desktop is a great way to get started with LinuxGSM. However, a local network (LAN) may require a better understanding of networking equipment, how local IP addressing works, and technologies such as and .

    When a server is hosted on a local network it will be given a private IP address that is only accessible to other devices on your local network. This is fine if you want to get friends around host a game server for a good old-fashioned LAN party. But if you want to allow online players access to your local game server you will need to configure your home router's firewall and setup port forwarding using NAT.

    Unreal Tournament 99

    Unreal Tournament 99 Requires a few alterations from the official server download. Because of this, the LinuxGSM version of the server files includes the following.

    • OldUnreal-UTPatch469a-Linux.tar.bz2 ()

    • ut-server-436.tar (Latest Official Version)

    file-ownership

    Linux files and directories always belong to a user and group. That is what we call ownership. If this can be boring to new users, remember that this is a huge part of what makes Linux as secure as it is.

    ls -l

    Example output:

    Syntax of the output is:

    • d for directory or

    SteamCMD

    SteamCMD is a command-line based Steam client developed by Valve that is used to remotely download game files. This is very useful for game servers, as it is significantly easier to keep them up-to-date. Any game that supports dedicated servers will have its server files available on SteamCMD. All you need is the AppID which can be found on Valve's or .

    SteamCMD requires a login to download some game servers.

    It is recommended that you just for the server.

    The majority of game servers using SteamCMD only require an anonymous login. LinuxGSM will not require any configuration if this is the case.

    Copy any settings you want to apply to all instances to common.cfg.

    instance.cfg

    Secret Configs

    Secret configs are not encrypted, but a place to store sensitive info away from other configs.

    Config Load Priority

    LinuxGSM config load order

    How to Use

    Simple Configuration

    It is recommended you only copy the settings you want to change from _default.cfg into instance.cfg. If any settings in _default.cfg are updated with a new release of LinuxGSM they may not be picked up if all the settings have been copied.

    Multiple Instances Configuration

    It is recommended you only copy the settings you want to change from _default.cfg into instance.cfg. If any settings in _default.cfg are updated with a new release of LinuxGSM they may not be picked up if all the settings have been copied.

    Examples

    Example 1

    Example 2

    Example 3

    Example 4

    Example 5

    multiple instances
    Game Server Configs
    multiple game server
    Memories Of Mars
  • Natural Selection 2

  • Rust

  • Squad

  • Killing Floor 2

  • Parms variable

    Executable

    startparameters="-game nmrih"

    ./srcds_run -game nmrih

    Additional Parameters

    Basic Example

    Full Example

    Parameters reference

    Source Dedicated Servers

    server.cfg

    command-line parameters

    Mod Support

    Adding Mods

    Custom Maps

    Running custom maps on unmodded servers

    Fast Download

    here
    CoD4x master server list
    Fast download

    Commands

    Standard Install

    Auto Install

    Installation

    Install Dependencies

    If dependencies are not installed the server may not start.

    Dependencies as root

    Dependencies as sudo user

    Common Installation Issues

    User Permission Issues

    Poor Network Connection to Steam servers

    Not Enough Storage

    DNS Issue

    https://linuxgsm.com
    FAQ
    validate
    https://www.cyberciti.biz/faq/linux-setup-dns-lookup/

    Sounds (.wav, .mp3, .ogg)

  • Fonts (.otf, .ttf)

  • Images (.png, .svg)

  • Supported file formats

    Requirements

    Usage

    Generate Compressed files

    Create A virtual Host (local Apache web server)

    Tutorial on setup of Apache2 server with Virtual Hosts

    Edit Game Server config

    Re-generate FastDL

    Bzip2 Compression

    Garry's Mod Download enforcer

    multiple game servers
    game server config

    Steam Web API Key/Auth Key

    Do not share your private API key.

    Items and Collections

    Get an Item or Collection ID

    Create a Collection

    Server Configurations

    Steam API key page

    All computers will have some sort of physical or virtual network interface (ethernet, fiber optic, wi-fi) to connect to a network. On Linux, you can see your server's interfaces by using the following command.

    Typically you may see (depending on distro) a localhost loopback interface and an eth0 interface. The eth0 (Ethernet) is used for your standard copper network cable and is what you will likely see. If you have multiple interfaces you may also see eth1, eth2, etc. More advanced setups can choose to bond together interfaces to work as one to increase bandwidth and resilience.

    An IP (Internet Protocol) address is a numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication. It serves two primary functions: host or network interface identification and location addressing. IP addresses enable devices to send and receive data within a network, facilitating communication and data transfer across the Internet.

    1. LAN IP Address:

      • Example: 192.168.1.10

      • Explanation: In a typical home or office network, devices are often assigned private IP addresses within the range defined by the Internet Engineering Task Force (IETF) for private networks. The "192.168.1.10" address is an example of a private IP address commonly used within a LAN. Each device on the local network would have a unique private IP address for internal communication.

    2. Internet IP Address:

      • Example: 203.0.113.45

      • Explanation: Internet IP addresses, also known as public IP addresses, are assigned by Internet Service Providers (ISPs) and are globally unique. The "203.0.113.45" address is an example of a public IP address. Websites, servers, and other devices connected to the Internet have public IP addresses that are used for communication between different networks on a global scale. These addresses are essential for routing data across the Internet.

    Some servers may be connected to a VPN (Virtual Private Network) using software such as Wireguard or OpenVPN. This normally creates its own interface that gets allocated an IP address. It is possible to use a VPN to create a private connection to a LAN server

    A relatively new technology is starting be become popular that allows applications hosted (think self-hosted web applications) on a private network to be accessed on the internet via a network "tunnel". This typically involves running a tunnel client in the private network that points to a specific internal IP and port. This bypasses the need to port forward on a router. Currently, there is a service called playit.gg that is specifically designed for game servers. However other solutions may work.

    Each network interface can be allocated an IP address either manually on the server or via DHCP. If you are using a provider an internet IP address is normally automatically allocated to your server. For a local network, your router DHCP server will allocate a local IP address. A local IP address can be reserved using DHCP or you can manually set an IP on the server.

    Game Servers will typically bind (attach a network socket) to all available IP addresses making the game server available on all networks. However, sometimes a particular IP address may need to be specified if you only want a particular network to access it or the game server requires it.

    The simplest and most common server configuration will have one network interface and thus one IP address. When your game server starts it will simply listen and bind to this IP address.

    Some servers will have multiple network interfaces available, allowing for multiple IP addresses to be assigned to your server. In this configuration, a server might listen and bind itself to all IP addresses or just one (depending on the game server).

    If you have multiple interfaces you may choose to multihome your server. This simply means each interface is on a different network. For example, eth0 is on the 192.168.0.0 network and eth1 is on the 192.168.1.0 network and wg0 (WireGuard VPN) is attached to 10.0.0.0. While it is unlikely there is a specific use case for game servers to use multiple networks you need to be aware of what IP addresses your server is bound to.

    The 0.0.0.0 IP is a meta-address means non-specific or all addresses. When you set up a game server you may notice the IP address 0.0.0.0 in command line parameters and settings. It is the default IP for game servers just signifies that the game server can bind to all available server IP addresses.

    This guide is not designed to be an in-depth guide to networking, instead focusing on parts relevant to game servers.

    Network Locations

    Internet (Public)

    Local Networks (Private)

    DHCP
    NAT

    Network Interfaces

    IP Address

    Virtual Private Networks

    Tunneling

    IP Address Allocation

    Single Server IP Address

    Multiple Server IP Addresses

    Multihome

    0.0.0.0

    Unless a specific IP address is required the game server IP can be set to 0.0.0.0.

    local network
    -
    for file
  • user, then group, then others permissions

  • number specifies the number of links or directories inside of a directory

  • The user that owns the file, or directory

  • The group that file or directory belongs to

  • The size in bytes

  • The date of last modification

  • The name of the file

  • ls -al /path/to/file/or/dir

    Sample output:

    Change owner from files or directories

    chown

    As usual, chown --help will provide you with all available arguments

    chown newowner /path/to/file/or/directory

    chown -R newowner /path/to/directory

    chown -R myuser /home/myuser

    Change group ownership on files or directories

    chgrp

    As usual, chgrp --help will provide you with all available arguments

    chgrp newgroup /path/to/dir/or/file

    chgrp -R newgroup /path/to/dir/

    Change user and/or ownership for files and directories at the same time

    chown

    As usual, chown --help will provide you with all available arguments

    chown user:group /path/to/dir/or/file

    chown -R user:group /path/to/dir

    chown -R myuser:myuser /home/myuser

    Introduction

    Check current ownership

    Check ownership in the current directory:

    Check ownership from all files and hidden files of any directory

    All these commands require elevated privileges!

    Change owner

    Command

    Single file syntax

    Recursive syntax (include sub files and directories)

    Example

    Group ownership

    Command

    Single file syntax

    Recursive syntax (include sub files and directories)

    User and group ownership

    Command

    Single file command

    Recursive

    Example:

    _default.cfg -> common.cfg -> instance.cfg
    cd lgsm/config-lgsm/
    cat _default.cfg
    cd lgsm/config-lgsm/
    csgoserver.cfg
    csgoserver-2.cfg
    _default.cfg: defaultmap="de_dust2"
    common.cfg: NOT SET
    csgoserver.cfg: defaultmap="de_nuke"
    _default.cfg: defaultmap="de_dust2"
    common.cfg: defaultmap="cs_office"
    csgoserver.cfg: NOT SET
    _default.cfg: defaultmap="de_dust2"
    common.cfg: NOT SET
    csgoserver.cfg: NOT SET
    _default.cfg: defaultmap="de_dust2"
    common.cfg: defaultmap="de_inferno"
    csgoserver.cfg: defaultmap="de_nuke"
    csgoserver-2.cfg: NOT SET
    _default.cfg: defaultmap="de_dust2"
    common.cfg: NOT SET
    csgoserver.cfg: defaultmap="de_nuke"
    csgoserver-2.cfg: defaultmap="cs_office"
    ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
    defaultmap="map_name"
    gamemode="game_mode"
    maxplayers="42"
    port="27015"
    sourcetvport="27020"
    clientport="27005"
    ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
    startparameters="-game nmrih -strictportbind -ip 91.121.72.41 -port 27015 +clientport 27017 +tv_port 27016 +map nmo_broadway +servercfgfile nmrih-server-1.cfg -maxplayers 8"
    set sv_authtoken "mytokenhere"`
    +set sv_authtoken "mytokenhere"
    mods/                                  
         ├── pml220                         
         │   ├── mod.ff                         
         │   ├── pml220.iwd                     
         │   ├── z_c_r.iwd
    parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap} +set fs_game "mods/pml220""
        ├── usermaps
        │   ├── mp_nuketown
        │   │   ├── mp_nuketown.ff
        │   │   ├── mp_nuketown.iwd
        │   │   ├── mp_nuketown_load.ff
        ├── mods
        │   ├── myemptymod
    set sv_allowDownload "1" // allow clients to download gamefiles
    set sv_wwwDownload "1" // enable download redirection
    set sv_wwwBaseURL "http://domain.tld/cod4fastdl/" // defines url to download from
    set sv_wwwDlDisconnected "0" // disconnect clients while downloading
        cod4fastdl/
        ├── mods
        │   ├── pml220
        │   │   ├── mod.ff
        │   │   ├── pml220.iwd
        │   │   ├── z_c_r.iwd
        ├── usermaps
        │   ├── mp_nuketown
        │   │   ├── mp_nuketown.ff
        │   │   ├── mp_nuketown.iwd
        │   │   ├── mp_nuketown_load.ff
    drwxrwxr-x  5 nmrihserver nmrihserver 4096 Jul 17 20:25 lgsm
    drwxr-xr-x  4 nmrihserver nmrihserver 4096 Aug 27  2015 log
    -rwxrwxr-x  1 nmrihserver nmrihserver 3885 Aug  9 23:04 nmrihserver
    drwxrwxr-x  8 nmrihserver nmrihserver 4096 Jul 17 20:32 serverfiles
    drwxrwxr-x  3 nmrihserver nmrihserver 4096 Jul 17 20:25 .steam
    drwxrwxr-x  8 nmrihserver nmrihserver 4096 Aug 19 16:00 Steam
    drwxrwxr-x  6 nmrihserver nmrihserver 4096 Aug 19 16:00 steamcmd
    ping google.com
    <VirtualHost *:80>
            ServerAdmin adminemail@domain.com
            ServerName subdomain.domain.com
            ServerAlias subdomain.domain.com
            DocumentRoot /home/gameserver/public_html
            <Directory /home/gameserver/public_html>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Require all granted
            </Directory>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    a2ensite yourvirtualhost.com.conf
    service apache2 reload
    sv_downloadurl "http://subdomain.domain.com/fastdl"
    sv_allowdownload 1
    https://steamcommunity.com/sharedfiles/filedetails/?id=3075706807
    https://steamcommunity.com/sharedfiles/filedetails/?id=157384458
    ip -o link show
    ultimatebyte@game:~$ ls -l
    total 32
    drwxr-xr-x 5 ultimatebyte ultimatebyte 4096 Jan 29 22:26 lgsm
    drwxr-xr-x 5 ultimatebyte ultimatebyte 4096 Jan 29 22:23 log
    drwxr-xr-x 4 ultimatebyte ultimatebyte 4096 Jan 29 22:26 serverfiles
    drwxr-xr-x 8 ultimatebyte ultimatebyte 4096 Jan 29 22:26 Steam
    drwxr-xr-x 5 ultimatebyte ultimatebyte 4096 Jan 29 22:24 steamcmd
    -rwxr-x--- 1 ultimatebyte ultimatebyte 5691 Jan 30 01:14 twserver
    ultimatebyte@game:~$ ls -al /home/ultimatebyte
    total 132
    drwxr-xr-x 11 ultimatebyte ultimatebyte  4096 Feb  2 07:36 . # Ownership from the current given dir
    drwxr-xr-x 22 root         root          4096 Feb  2 07:36 .. # Ownership from the parent dir
    -rw-------  1 ultimatebyte ultimatebyte 49744 Feb 12 03:04 .bash_history
    -rw-r--r--  1 ultimatebyte ultimatebyte   220 Apr 15  2016 .bash_logout
    -rw-r--r--  1 ultimatebyte ultimatebyte  3515 Apr 15  2016 .bashrc
    drwxr-xr-x  4 ultimatebyte ultimatebyte  4096 Jan 15 23:26 .config
    drwxr-xr-x  5 ultimatebyte ultimatebyte  4096 Jan 29 22:26 lgsm
    drwxr-xr-x  3 ultimatebyte ultimatebyte  4096 Jan 14 18:10 .local
    drwxr-xr-x  5 ultimatebyte ultimatebyte  4096 Jan 29 22:23 log
    -rw-------  1 ultimatebyte ultimatebyte  1005 Jan 30 01:14 .nano_history
    -rw-r--r--  1 ultimatebyte ultimatebyte   675 Apr 15  2016 .profile
    -rw-r--r--  1 ultimatebyte ultimatebyte    66 Sep  1 17:43 .selected_editor
    drwxr-xr-x  4 ultimatebyte ultimatebyte  4096 Jan 29 22:26 serverfiles
    drwxr-xr-x  3 ultimatebyte ultimatebyte  4096 Jan 15 01:40 .steam
    drwxr-xr-x  8 ultimatebyte ultimatebyte  4096 Jan 29 22:26 Steam
    drwxr-xr-x  5 ultimatebyte ultimatebyte  4096 Jan 29 22:24 steamcmd
    -rwxr-x---  1 ultimatebyte ultimatebyte  5691 Jan 30 01:14 twserver
    -rw-r--r--  1 ultimatebyte ultimatebyte    29 Jan 30 02:17 .tw-server.lock

    Do not delete anything from this section, except (optionally) other DownloadManagers= lines.

    KFGame/Config/kf2server/LinuxGSM-KFEngine.ini
    [OnlineSubsystemSteamworks.KFWorkshopSteamworks]
    ServerSubscribedWorkshopItems=605633924
    ServerSubscribedWorkshopItems=605551918
    ServerSubscribedWorkshopItems=605549089
    ServerSubscribedWorkshopItems=605532351

    Resources

    Server Config Information

    Workshop

    Players on the Epic Store will not be able to download files hosted with the Steam Workshop.

    Ensure the game server is stopped before editing the file to prevent it being overwritten.

    Killing Floor 2 Official Server Wiki
    Killing floor 2 Official Forums
    Official Guide Here
    Set the maximum number of backups with
    maxbackups
    . If the number of backups exceeds this value, the oldest backup will be removed after a successful backup.

    Set the maximum age of a backup using maxbackupdays. Any backups older than X days will be removed after a successful backup.

    Set if the server should be stopped for a backup using stoponbackup. If the server is running it will be stopped while the backup is running and started again once complete. This is useful to prevent any file changes during compression that could result in a corrupt or failed backup.

    Automated backups can be set using cronjobs. It is recommended that frequently you backup and your retention policy to prevent your server is carefully considered to prevent storage issues.

    see cronjobs

    By default backups are saved in the backup directory.

    You can change this using the configuration file and the property backupdir.

    Use ./gameserver details to view information about created backups.

    Using the backup feature is not the only way to backup a game server. There are other methods that have more features are are more powerful than the basic LinuxGSM backup feature. Below are are few applications that can be used instead of, or with LinuxGSM backups.

    rsync is one of the most common ways to backup. It is a remote sync tool that is created for sending files/directory's to another location. Particularly good for syncing to another server.

    Is an incremental backup solution that allows backups to all sorts of different locations including many different cloud storage solutions like BackBlaze B2 and Amazon S3. Once configured it can be a powerful and efficient backup solution.

    duplicity-backup.sh is a very useful bash wrapper to help automate duplicity.

    rclone is similar to rsync however can easily sync to cloud storage solutions.

    mumbleserver@game:~$ ./mumbleserver b
    [ INFO ] Backup mumble-server: A total of 34M will be compressed into the following backup:
    /home/mumbleserver/backups/mumble-server-2016-10-28-194346.tar.gz
    Warning! mumble-server will be stopped during the backup.
    [  OK  ] Stopping mumble-server: Mumble Port 64738
    [  OK  ] Backup mumble-server: Backup created: mumble-server-2016-10-28-194346.tar.gz is 36M size

    Each time a backup runs the whole game server will be backed up, this can take up significant storage space. Consider a backup policy to prevent your Linux server from running out of storage.

    Commands

    Example Output

    Backup Settings

    maxbackups

    LinuxGSM config
    maxbackups="4"
    maxbackupdays="30"
    stoponbackup="on"
    crontab -e
    0 5 * * *  /home/username/gameserver backup > /dev/null 2>&1
    ├── home
    ├── csgoserver
        ├── ** backup **       
        ├── lgsm
        ├── log       
        ├── serverfiles
    backupdir="${lgsmdir}/backup"
    Backups
    ===============================================================================
    No. of backups:    1
    Latest backup:
        date:          Fri Jan 23 15:54:52 CET 2015
        file:          /home/csgoserver/backups/csgo-server-2015-01-23-155447.tar.gz
        size:          1.6G
    
    Disk Usage
    ===============================================================================
    Disk available:  5.4G
    Serverfiles:     1.6G
    Backups:         6.2G

    Setting the value to 0 will prevent any backups from being saved, including the one just created.

    maxbackupdays

    Setting the value to 0 will retain the backup for 24 hours.

    stoponbackup

    Automated Backups

    cronjob example

    Backups Location

    Checking Backups

    Alternative Backup Methods

    rsync

    Duplicity

    duplicity-backup.sh

    rclone

    UTBonusPack.zip

  • UTBonusPack2.zip (maps only)

  • UTInoxxPack.zip

  • UTBonusPack4.zip

  • UT99.org is a community website for UT99

    OldUnreal is another community website

    With a default LinuxGSM Install, server settings can be configured in this file:

    /home/user/serverfiles/System/ut99server.ini

    You can change most of these settings in a browser by enabling the webserver and putting in settings there.

    Server Files

    OldUnreal Patch
    [Engine.GameReplicationInfo]
    ServerName= 
    ShortName=
    AdminName=
    AdminEmail=
    Region=0
    MOTDLine1=
    MOTDLine2=
    MOTDLine3=
    MOTDLine4= 
    
    [Botpack.ChallengeBotInfo]
    Difficulty=4
    
    [Botpack.DeathMatchPlus]
    bNoviceMode=True
    bHardCoreMode=True
    bUseTranslocator=False
    bCoopWeaponMode=False
    MinPlayers=10
    AirControl=0.350000
    FragLimit=30
    TimeLimit=0
    bChangeLevels=True
    bMegaSpeed=False
    bAltScoring=False
    bMultiWeaponStay=True
    bForceRespawn=False
    bTournament=False
    NetWait=10
    RestartWait=15
    MaxCommanders=0
    InitialBots=9
    bNoMonsters=True
    bHumansOnly=False
    bClassicDeathMessages=False
    MinFOV=80.000000
    MaxFOV=130.000000
    MaxNameChanges=0
    
    [UWeb.WebServer]
    Applications[0]=UTServerAdmin.UTServerAdmin
    ApplicationPaths[0]=/ServerAdmin
    Applications[1]=UTServerAdmin.UTImageServer
    ApplicationPaths[1]=/images
    DefaultApplication=0
    ListenPort=8076
    bEnabled=True
    
    [UTServerAdmin.UTServerAdmin]
    AdminUsername=
    AdminPassword=

    Server Resources

    Config File Settings

    Some game servers require you to login to SteamCMD using a steam login to allow download of the server. Some also require you to own a copy of the game on the steam account.

    If this is the case LinuxGSM will prompt you on installation to set a steam username and password. This can be set by editing the following settings within the LinuxGSM config.

    If you get the error ERROR! Failed to install app '2430930' (No subscription) then you do not own a copy of the game in your account and will need to login on the standard steam client and buy the game. If the game is free you will need to "add to account".

    SteamCMD prints out passwords in plain text meaning that the Steam login password is visible to anyone on the server. LinuxGSM saves logs and the Steam login password will be view-able in the logs.

    Steam Guard

    Steam Guard is an additional layer of security that can be applied to a Steam account. The first layer is the account login credentials: the Steam account username and password. With Steam Guard, a second layer of security is applied to the account, making it harder for a Steam account to fall into the wrong hands.

    If Steam Guard is enabled on an account when a login to from an unrecognized device happens an access code will be required as verification. Depending on the account Steam Guard settings, either an email with a code or a code from the Steam Mobile app on a smartphone is required.

    1. Username and password - No Steam Guard

    2. Username and password - Steam Guard via Email

    3. Username and password - Steam Guard via Smartphone (not compatible with LinuxGSM)

    Username and Password - No Steam Guard

    Simply requires your Steam username and password.

    Username and Password - Steam Guard via Email

    Requires your Steam username and password and you will also receive an email on the first login to SteamCMD and be required to enter a code. Once the code is entered your server is authorised to use the steam account you entered.

    Username and Password - Steam Guard via Smartphone (not compatible with LinuxGSM)

    Requires your Steam Username & Password but also requires you have the Steam app on your phone to use 2-factor Authentication.

    Both options 1 & 2 work with LinuxGSM.

    Steam Guard via Smartphone is not compatible because it requires a code every time you login to SteamCMD. This is problematic if you want your game servers to auto-update.

    If you have Steam Guard via email enabled the first time you start SteamCMD you will be prompted to enter a steam Guard code and you will receive an email with the code. Copy and paste the code into the prompt and press enter. You will not need to enter a code again.

    You can only download server files for the operating system that you are using SteamCMD on.

    SteamCMD Login

    Anonymous Login

    Steam User Login

    wiki
    SteamDB
    create a new Steam username
    SteamCMD Terminal
    ## SteamCMD Login
    steamuser="username"
    steampass="password"

    Do not use your own steam login. Create a new Steam login just for the game server. As the steam login password is stored in .

    Check for a list of game servers that require a login.

    Plain Text Passwords

    Steam Guard

    For more info visit .

    Authentication Methods for SteamCMD

    Using Steam Guard with LinuxGSM

    Ports

    Ports are communication endpoints for an application. A port will either listen to or transmit network traffic on specific ports.

    There are port standards set by IANA for common protocols such as HTTP (port 80), SSH (port 22), SMTP (port 25), etc. Game servers tend to use standard ports depending on the game engine. For example source engine games by default use port 27015 as the port it listens on.

    Vocabulary

    • Port listening is what a service like a game server does in order to receive packets from incoming connections: by listening to a port, the program waits for incoming packets on a given port.

    • Port opening happens on a firewall, it consists of allowing traffic to a port.

    • Port redirection is part of NAT and happens on a router or firewall. It consists of forwarding incoming traffic on a given port to a specific local IP.

    • Network Address Translation (NAT) is a method of remapping an IP address into another by modifying information.

    Game Servers typically have ports for the following functions.

    Game port: The port that players connect to. Query port: Used by software to gather information from the server such as server name, map, and number of players. Rcon port: Some game servers have remote console port allowing remote administration of a game server. Web port: used for game servers that have web interface.

    Depending upon which game server is being used, you can set game server ports within your or config file.

    LinuxGSM allows you to see the ports your game server is using with the ./gameserver details command.

    Default ports are set in either the or .

    You can use ./gameserver details to find out where to edit port settings

    To alter them you will need to edit the file using nano.

    Example: for source games, you need to alter the following:

    You can use any port as long as it is not already in use and it is up to you to set up port allocation. It is recommended that ports are close together and sequential i.e. 27015, 27016, 27017 to save confusion. Some server's ports by default are not sequential, however, there is nothing stopping you from changing this. For example for source engine game servers; you could set port 27015, source TV port 27016, client port 27018. The next game server instance could simply follow on from this.

    Should a server have multiple dedicated IP addresses allocated, it is possible for game servers to have the same ports but bound to different IP addresses. Admins will need to set the specific IP address in the LinuxGSM config or game config.

    Each type of server has a default set of ports. This is fine to use if only one server is being set up. However, if multiple servers are being used a port scheme needs to be considered. There is no requirement to stick to specific ports but it is recommended they are in a logical order.

    Source Default Ports

    You can allocate ports incrementally, one after the other. With each server following on from the last.

    This scheme is the simplest option to avoid confusion when managing ports. Plus this is the most efficient scheme for reducing unused ports.

    This method increments each type of port keeping the scheme closer to the default. It is not as efficient but keeps ports more "standard".

    Then increment those ports by 1 for every new server. 25 servers are using 75 ports. After making 25 servers, if you need more it is a good idea to add +100 to this 27000 range.

    You can get new IP addresses for your dedicated server, and assign each server a new IP. This scheme is quite inefficient.

    If you are running several game servers it is a good idea to create a spreadsheet of the ports you have used. Allowing you to keep track of what you have already used.

    Ensure the game server ports are bound and listening before anything else. You can check if your server is actually listening by using ./gameserver details if a port is bound and listening then the LISTEN column will not be zero.

    Running the ss command will bring up any ports that are listening. If not, the game server has not started or not correctly binding to its allocated ports.

    • Check that ports are not already in use by another application.

    • Check that you are trying to listen to an actual interface IP.

    • Check that the server does not crash upon start by checking console logs or try starting the server with ./gameserver debug

    are a regular source of connectivity issues. When diagnosing connection issues temporarily disabling a firewall will help identify if it is the source of the problem.

    Ensure that the router correctly redirects incoming traffic to the correct ports and local IP displayed with ./gameserver details with the correct protocol (TCP and/or UDP).

    Game Server Login Token

    Game Server Login Token is a new system by Valve for managing game servers.

    Games using GSLT

    • Ballistic Overkill

    • Brainbread 2

    • Black Mesa: Deathmatch

    • Blade Symphony (required)

    • Counter-Strike: Global Offensive (required)

    • Counter-Strike: Source (required)

    • Counter-Strike 2 (required)

    • Day of Defeat: Source

    • Empires Mod

    • Garry’s Mod (required)

    • Insurgency

    • Insurgency: Sandstorm

    • No more Room in Hell (required)

    • Nuclear Dawn

    • Team Fortress 2

    • Tower Unite

    • Unturned

    • Zombie Panic! Source

    GSLT creates a persistent token for a game server. This allows any users who added your server to favourites to join, even if you change your ip address. This is very useful if you change your server/hosting provider.

    To fully understand the reasoning behind GSLT, we need to back up a bit to July 2015. , meaning it could not connect to the master servers and people wouldn’t be able to connect to the server.

    This created a lot of problems for game server providers, large communities, and anyone providing configurable servers to third parties, as bans were handed out by IP, meaning that an entire machine could be banned because of one malicious or uninformed user.

    To address this, Valve is moving the ban to the account level instead of the IP address level, which means that the end-user is always responsible for what they run on their server. Of course, game server providers and the like still have a responsibility to educate their users on these policies, as some might mistakenly upload blacklisted plugins.

    An added benefit is that people who add your server to favourite will still be able to find and connect to your server, even if you change hosting provider and/or the IP / port of your server. This is something that previously was impossible.

    To generate a token follow this .

    GSLT can be registered on your server(s) by using the sv_setsteamaccount command either in or from a .

    start parameter

    +sv_setsteamaccount [token]

    game server config

    sv_setsteamaccount [token]

    Tower Unite has a command within its

    SteamLoginToken=

    Yes, all the tokens on your account will be blacklisted if one of your servers are found to be running a blacklisted plugin. Make sure you read up on Valve’s plugin policies before running a game server so nothing unfortunate happens to your tokens.

    Depending on the game Valve will punish the account that generated the token, On CS:GO you get a global cooldown of 7 days (you cannot join any community/valve server) Most likely, it won’t be VAC banned, but Valve’s requirement that anyone creating GSLTs is not community banned, you may be community banned for running blacklisted plugins.

    No. You must create a unique GSLT for each simultaneously running server.

    Yes, you can add your GSLT to a new server, you just can’t run two servers with the same GSLT, at the same time.

    Unfortunately, despite registering a GSLT to your server, CS:GO servers will still need a Steam WebAPI key to host maps from the Workshop.

    As of yet, no official confirmation has been made that TF2 servers will also require GSLTs, but they do support them, so it’s not a wild guess that this is to come.

    Don’t use the same GSLT for multiple servers. When a server starts with a specific GSLT, it will disconnect any other servers already running that same GSLT. You need to create a unique GSLT for each server.

    Yes, you can have a maximum of 1000 GSLTs on your account.

    Your Steam account must not be currently community-banned or locked. Your Steam account must not be limited. Your Steam account must have a qualifying registered phone. Your Steam account must own the game for which you are creating a GSLT. Your Steam account may not have more than 1000 tokens.

    For further information, see this useful blog post:

    gamedig

    GameDig is a tool that queries game servers and returns outputs data from a query into json format. It can not only check if the game server is online but also return various data such as current maps and players. This allows ./gameserver details to display live information.

    GameDig super-seeds gsquery as the tool to monitor game servers. GameDig is currently optional but recommended and gsquery is kept to ensure compatibility as gamedig requires Node.js to be installed.

    Install Node.js

    GameDig requires Node.js a JavaScript runtime environment installed to work. Use the following instructions to install Node.js.

    Remove existing NodeJS

    If you already have an older version of nodejs installed or be having issues with node dependencies. It may be worth reinstalling Node.js.

    Ubuntu/Debian

    sudo apt remove --purge nodejs npm
    sudo apt clean
    sudo apt autoclean
    sudo apt install -f
    sudo apt autoremove

    CentOS

    Work in progress

    Install NodeJS

    Installing nodejs can be problematic, however, using the below should work well.

    Ubuntu/Debian

    Enterprise Linux Based Distributions

    Install GameDig npm

    Once nodejs is installed use npm to install gamedig with the following command.

    Updates to GameDig are regularly made. It is possible to update by running the npm update command.

    You can also see which version of gamedig is installed by running the following.

    Extra info becomes available for game server details.

    Xonotic

    Xonotic Logo

    Server Resources

    FAQ

    Ports

    • Game Port Default: 26000 UDP

    Default Config Location

    Client Specific

    As written in the FAQ, the default Configuration files are located in:

    System
    Location

    You can start Xonotic with the startparameter '-userdir'. With this parameter, Xonotic expects in that folder a subfolder data with the server.cfg. For example for choosing ./xonotic-linux64-dedicated -userdir /home/xonotic/server1 your server.cfg location should be /home/xonotic/server1/data/server.cfg

    A list is currently located in . with the following server parameters

    Gametype
    Servervalue
    Description

    Xonotic has Custom Maps support in fileformat pk3. Maps should be located in the data folder like server.cfg on your dedicated Server.

    Xonotic doesn't provide a Filedownloader inside the gameserver, have need to host your custommaps on HTTP Webspace and set the correct values in server.cfg.

    • Userdir: -userdir /home/xonotic/server1: add foo.pk3in /home/xonotic/server1/data/

    • server.cfg: Add sv_curl_defaulturl="http://xonotic.foo.bar"

    Look at for more infos about Custom Map Hosting

    Every Server cvar can be overwritten in an starting argument, but it's recommended to setup as much as possible in server.cfg

    Telegram

    Telegram is an instant messaging app that provides a powerful API that enables applications to send messages through bots. LinuxGSM leverages the Telegram Bot API to dispatch alerts to users, enhancing monitoring and management of gaming servers.

    Creating a Telegram Bot

    1. Initiate Bot Creation: Chat with @BotFather on Telegram to start creating your bot. Begin the conversation by clicking "Start".

    2. Register Your Bot: Send /newbot to @BotFather and follow the provided instructions to set up your bot. Upon completion, you will receive an API token.

    3. Configure LinuxGSM: Fill in the API token into your as follows:

    1. Select New Group within Telegram.

    2. Name your group.

    3. Add your bot by searching its @Username.

    1. Open group info.

    2. Choose to add members.

    3. Search and select your bot by its @Username.

    1. Activate Your Bot: Interact with your bot in Telegram.

    2. Form the getUpdates URL: Replace the placeholder with your bot's token in https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates.

    3. Visit the URL: Use a web browser to access the URL.

    1. Verify that Topics are enabled for your group by checking the group's settings.

    2. If you don't already have a topic created. Create a new Topic by clicking the three dots in the top right corner of the group chat and selecting New Topic.

    3. Send a message in the Topic you want to use.

    Execute a test alert with ./gameserver test-alert to verify the setup.

    If you receive an alert on Telegram in the right place (group or private chat), the configuration is correct.

    For specific needs such as bypassing network restrictions, you can specify custom cURL arguments in the configuration.

    Java

    Some game servers require using Java Runtime Environment (JRE) such as Minecraft and Project Zomboid.

    If you are unsure which version to choose simply pick the default JRE.

    To install the most up to date JRE for the distro run:

    For openjdk, run the following changing the version number:

    Run the following command, changing the version number:

    JRE Availability Table Different Distros have different versions of Java. This page will outline the different versions that are available.

    mods

    LinuxGSM supports the installation, updating, and removing of selected mods and add-ons for some games and engines. Zip add-ons are currently the only supported installations.

    ./gameserver mods-install

    ./gameserver mi

    ./gameserver mods-update

    ./gameserver mu

    TeamSpeak 3

    To enable server query certain permissions have to be enabled or the guest server group.

    • Virtual Server

    • b_virtualserver_info_view

    What is GSLT?

    Generate a Token

    GSLT requires the app ID of the base game (e.g. 440 for TF2, 730 for CS:GO, 4000 for Garry's Mod) when generating a token, not the server appid

    Every single server must use a unique GSLT.

    GSLT Server Parameter

    LinuxGSM may provide the variable gslt= that gets added to the start parameter.

    Tower Unite

    FAQ

    If one of my tokens is banned/blacklisted, will all tokens be banned?

    If my GSLT gets banned for running a blacklisted plugin, will my steam account be community and/or VAC banned?

    Can I use the same GSLT for multiple servers?

    Can I re-use GSLTs?

    Do I still need a Steam WebAPI key to host workshop maps?

    My server loses connection to the registered Steam account

    Is there a limit on how many GSLTs my account can have?

    What are the requirements for my account to be able to create a GSLT?

    Valve announced that running certain plugins would get your server blacklisted
    link
    game server config
    start parameter
    config file
    http://dathost.net/blog/important-information-regarding-our-csgo-servers/
    ./gameserver mods-remove

    ./gameserver mr

    (This list was last updated on 2020-11-19)

    • Metamod

    • AMX Mod X

    Additional Game Specific AMX Mod X addons:

    • Counter-Strike 1.6

    • Day of Defeat

    • Team Fortress Classic

    • The Specialists

    • Natural Selection

    • Metamod: Source

    • SourceMod

    • ACF

    • ACF Missiles

    • DarkRP

    • DarkRP Modification

    • PAC3

    • UClip

    • ULib

    • ULX

    • UTime

    Rust, Hurtworld, 7 Days To Die

    • Oxide Mod

    • All available mods are defined in the mods_list.sh.

    • Mods hosted on github use the latest archive link available. Others are scraped through a mods download mirrors in order to find the latest version.

    • If some mods are already installed, a list of installed mods shows up. If a user tries to install a mod that is already installed, there will be a warning that any custom files will be overwritten.

    • A list of available mods is displayed to the user, including the developers website.

    • After the user selects a mod, the file gets downloaded and extracted to a temporary directory.

    • A list of the mod files is created at lgsm/mods/modname-files.txt. This list allows the mod to be removed if required. LinuxGSM developers have whitelisted important customisable files such as mod config files that will not be removed. If there are any important files that have been missed please raise an issue.

    • Files and directories then get copied to the correct destination.

    • LinuxGSM updates a file containing a list of installed mods lgsm/mods/installed-mods.txt.

    • The list lgsm/mods/installed-mods.txt is used to identify which mods are installed. If a non-referenced mod is found, the updater will stop with an error.

    • Three update types are available

      • OVERWRITE will overwrite all mod files.

      • NOUPDATE will prevent this mod from being updated. Useful for a framework that is designed to be entirely customized.

      • RETAIN keeps the whitelisted files and updating everything else.

    • As there is no easy way to check for mod versions, the update process will update every single installed mod every time the command is run.

    • The process is pretty similar as the installation, mod gets downloaded, extracted, files get removed. Removed files go to a temp file list, then file list list built and temp file list added to it. Finaly the mod gets copied to destination using cp -Rf.

    • If an admin wants to overwrite custom files, then he can either uninstall/reinstall the mod, or just install over it.

    • A list of installed mods is displayed, user has to pick one to remove.

    • Any file listed in lgsm/mods/modname-files.txt gets removed.

    • The file list gets removed, as well as the entry in installed-mods.txt.

    Any as long as the archive can be found online and the installation consists of extracting an archive to the serverfiles directory.

    If there is a mod you wish to see supported by LinuxGSM please raise a GitHub issue with any relevant info about the mod.

    If you wish to create a pull-request yourself for this, please make sure you read the "Developer" section at the bottom right of the wiki.

    Usually, editing mods_list.sh should be enough to add mod support. This script contains comments helping you to understand how to use it.

    Basically: Add an array variable containing mod info, then add the array to the global array.

    Long explanation: The list is based on arrays, used to define all mod properties. You need to make sure that every value is filled up and in the correct order, that mod commands are unique and that multiple choices values are ended with a semicolon (;), otherwise the last value will be ignored. You might need to add an entry in fn_mod_tidy_files_list from mods_core.sh in order to remove lines from mod's file list so that they do not get wrongly removed with the mods-remove command. For further assistance on developing this contact UltimateByte who developed those functions and dgibbs that reworked it should be able to help.

    Commands

    Install mods

    Update mods

    Remove mods

    Supported mods/add-ons

    Goldsrc Engine Games (v20.6.0+)

    Source Engine Games

    For Garry's Mod

    Unity3D Games

    Technical Details

    Install

    Update

    Remove

    Adding mod support

    What mods can be added

    Asking to add support for a mod

    Developers

    Capture the Flag

    ctf

    Teambased Gamemode where the enemy flag has to be captured and brought back to their own base

    Clan Arena

    ca

    Team and Round-based Mode where the surviving team gets a point. Pickup Items are absent

    Freeze Tag

    ft

    Like Teamdeathmatch, where killed players are frozen and can be revived by team members. Ammo Pickups are absent

    Key Hunt

    kh

    Multiteam- and Roundbased Mode Mode where one player of each team gets a key and the team goal is to get all keys

    Assault

    as

    Team- and Round-based Mode where one Team is attacking and the other defending. Attackers try to destroy objects as fast as possible

    Domination

    dom

    Multiteambased Gamemode where the teams capture and control points on the map

    Last Man Standing

    lms

    Free for All Gamemode where you only respawn a certain amount of time

    Keepaway

    ka

    Free for All Gamemode where you take a ball and with that equipped frag people

    Invasion

    inv

    Roundbased PvE Gamemode where players fight against monsters

    Onslaught

    ons

    Team and Roundbased Mode where the Team tries to destroy the enemy generator

    Race

    rc

    Free for all Gamemode where players try to run over a track as fast as possible

    Complete the Stage

    cts

    Like Race Gamemode with additional Checkpoints to pass

    Nextball

    nb

    Team and Round-based Mode where teams try to shoot a ball to the enemy goal

    Put foo.pk3 in the HTTP Root Folder to make it accessable via http://xonotic.foo.bar/foo.pk3

    Linux

    $HOME/.xonotic/data/

    Windows

    %USERPROFILE%\Saved Games\xonotic\

    MacOS

    $HOME/Library/Application Support/xonotic/

    Deathmatch

    dm

    Classic Free for All Gamemode where the player with the most frags wins

    Team Deathmatch

    tdm

    Teambased Gamemode where the team with the most frags win

    Serverhosting Locations

    Game Modes

    Custom Maps

    Server side

    Make it useable for Clients

    Example

    Start parameters

    Xonotic Gitlab
    Xonotic Wiki

    Game Server Ports

    Changing Default Ports

    Which ports can be used?

    If you're running multiple game servers, make sure you're using different ports on all of your game servers to avoid a port conflict.

    Multiple IP addresses

    Port Allocation Scheme

    Incremental (recommended)

    Standard Port Increment

    Separate IP Addresses

    Track your ports

    Diagnosing server accessibility

    Check ports are bound

    Depending on the game server not all ports will listen. However, a good rule is that the game and query ports will typically listen.

    Check the Firewall

    Check Port Forwarding (Local Networks)

    network address
    start parameters
    game server
    start parameters
    game config
    Firewalls
    Useful port diagnostic command:
    ss -tuplwn | grep RustDedicated
    
    DESCRIPTION  PORT   PROTOCOL  LISTEN
    Game         28015  udp       1
    Query        28017  udp       1
    RCON         28016  tcp       1
    App          28082  tcp       1
    # Ports
    # =====================================
    # Change ports by editing the parameters in:
    # /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg
    # Start Variables
    port="27015"
    sourcetvport="27020"
    clientport="27005"
    ip="0.0.0.0"
    port="27015"
    sourcetvport="27020"
    clientport="27005"
    port="27015"
    sourcetvport="27016"
    clientport="27017"
    port="27016"
    sourcetvport="27021"
    clientport="27006"
    port="27125"
    sourcetvport="27150"
    clientport="27100"
    Useful port diagnostic command:
    ss -tuplwn | grep RustDedicated
    
    DESCRIPTION  PORT   PROTOCOL  LISTEN
    Game         28015  udp       0
    Query        28017  udp       0
    RCON         28016  tcp       0
    App          28082  tcp       0

    Locate the Chat ID: In the JSON response, find the id field under the chat object.

    "chat": {
        "id": 123456789,
        "first_name": "Your Name",
        "username": "YourUsername",
        "type": "private"
    }

    Note: The Chat ID for private chats is a positive number and for a group, it's a negative number.

  • Update LinuxGSM Config: Place your Chat ID in the LinuxGSM config file.

    # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
    telegramapi="api.telegram.org"
    telegramalert="on"
    telegramtoken="XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    telegramchatid="123456789" # Fill in your chat ID
    telegramthreadid=""
    telegramsilentnotification="false"
    curlcustomstring=""
  • Repeat Retrieving Your Telegram Chat ID to retrieve the thread ID by looking for the message_thread_id field in the message object.
  • Update the telegramthreadid field in the LinuxGSM config with the thread ID.

    # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
    telegramapi="api.telegram.org"
    telegramalert="on"
    telegramtoken="XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    telegramchatid="123456789"
    telegramthreadid="5" # Fill	in your thread ID
    telegramsilentnotification="false"
    curlcustomstring=""
  • # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
    telegramapi="api.telegram.org"
    telegramalert="on"  # Enable alerts by changing "off" to "on"
    telegramtoken="XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # Replace with your bot token
    telegramchatid=""
    telegramthreadid=""
    telegramsilentnotification="false" # Set to "true" to disable notification sounds and send alerts silently
    curlcustomstring=""  # Optional: For proxies, etc.
        # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
        # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring".
        # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
        telegramapi="api.telegram.org"
        telegramalert="on"
        telegramtoken="XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        telegramchatid="123456789"
        telegramthreadid="5"
        telegramsilentnotification="false"
        curlcustomstring="--socks5 ipaddr:port" # Fill in your custom cURL string
        ```

    Configuring Alerts for a Group

    New Group Creation

    Adding to an Existing Group

    Retrieving Your Telegram Chat ID

    Enabling Telegram Topics (Threads)

    Testing the Configuration

    Advanced Configuration: Custom cURL String

    LinuxGSM config
    BotFather Chat
    New Bot
    {
        "update_id": 123456,
        "message": {
            "message_id": 123,
            "from": {
                "id": 12345,
                "is_bot": false,
                "first_name": "Sender",
                "username": "SenderUsername",
                "language_code": "en"
            },
            "chat": {
                "id": -123456789,
                "first_name": "Your Name",
                "username": "YourUsername",
                "type": "supergroup"
            },
            "date": 1709691014,
            "message_thread_id": 11, // Use this number as your telegramthreadid
            "forum_topic_created": {
                "name": "LinuxGSM",
                "icon_color": 12345
            },
            "is_topic_message": true
        }
    }

    Distro

    JRE 6

    JRE 7

    JRE 8

    JRE 11

    JRE 13

    JRE 16

    JRE 17

    CentOS 7

    YES

    Distrowatch also contains details of JRE versions.

    Further Reading https://help.ubuntu.com/community/Java

    apt install default-jre
    apt install openjdk-8-jre
    apt install openjdk-11-jre
    apt install openjdk-16-jre
    apt install openjdk-17-jre
    yum install java-1.8.0-openjdk
    yum install java-11-openjdk

    Installation of Java Runtime Environment

    Debian/Ubuntu

    JRE

    OpenJRE

    CentOS

    JRE Availability Table

    b_virtualserver_channel_list
  • b_virtualserver_client_list

  • Group

  • b_virtualserver_servergroup_list

  • b_virtualserver_channelgroup_list

  • To enable these permissions first navigate to TeamSpeak3 Options and enable Advanced permissions system.

    Navigate to server groups server permissions and select guest.

    Select the values shown below and close the menu.

    • Virtual Server

      • Information

        • b_virtualserver_info_view

        • b_virtualserver_channel_list

        • b_virtualserver_client_list

    • Group

      • Information

        • b_virtualserver_servergroup_list

    Because a user has to manually enable server query with TeamSpeak 3, LinuxGSM has gamedig query disabled by default. Enabling will allow more information to be displayed in details and enable monitor to use gamedig.

    Copy the query mode settings from _default.cfg to common.cfg and change querymodefrom 5 to 3.

    You can connect to a TeamSpeak 3 server to input commands without the need for a TeamSpeak 3 client. This can be done by connecting to the query port using telnet.

    Using PuTTY or equivalent select a telnet connection and enter the server IP and TeamSpeak 3 query port (default:10011).

    Note: Your server ID is usually 1

    See change password.

    The TeamSpeak 3 database contains all user information, groups, and statistics for your server.

    By default, TeamSpeak 3 uses an SQLite database file, which allows good performance for most users, and easy server transfers from one server to another. This method is recommended for most admins as it is the simplest database method to use.

    TeamSpeak 3 also allows admins to use MariaDB (MySQL alternative) manage the database. MariaDB is entirely optional and is not required so it is recommended that admins only use if they are comfortable.

    Information about installing TeamSpeak 3 with MariaDB can be found here.

    TSDNS is a system allowing admins to redirect a domain name to a given TeamSpeak 3 port.

    If TeamSpeak 3 port is using the default port, you do not need to provide the port when you are giving your server address, you can use the IP or domain name directly.

    TSDNS is useful to admins that are hosting multiple TeamSpeak 3 servers on a single dedicated server.

    Further documentation can be found using the following command.

    Additional information can be found here.

    Then you can copy the sample, edit it accordingly and restart your TeamSpeak 3 server to apply the changes.

    Some users with IPv6 enabled might encounter a server failing to start properly. To fix this edit serverfiles/ts3-server.ini to add a standard IPv4 (voice_ip; filetransfer_ip; query_ip) and remove the , :: from IPv6. Then as the server failed to start at the installation, the privilege key hasn't been generated. So you will need to use server query (ID/Password have been generated for them) to generate a new Server Admin privilege key.

    If you find the above in the TeamSpeak 3 log you may need to remove the following file.

    If the following message appears in the log of the Teamspeak 3 Linux Server Error creating ephemeral license: EXPIRED You need to upgrade the version of the TeamSpeak 3 Server to a more up-to-date version.

    Enable Server Query

    Tools > Options > Application
    Permissions > Server Groups
    ## Query mode
    # 1: session only
    # 2: gamedig (gsquery fallback)
    # 3: gamedig
    # 4: gsquery
    # 5: tcp
    querymode="3"
    querytype="teamspeak3"
    login serveradmin <password>
    use sid=<server-id>
    tokenadd tokentype=0 tokenid1=6 tokenid2=0
    cat ~user/serverfiles/tsdns/tsdns_settings.ini.sample
    cd serverfiles/tsdns/
    cp tsdns_settings.ini.sample tsdns_settings.ini
    nano tsdns_settings.ini
    cd ~
    ./ts3server restart
    ERROR |Accounting | |failed to register local accounting service: File exists
    /dev/shm/7gbhujb54g8z9hu43jre8

    Enable Query on LinuxGSM

    Connect to TeamSpeak 3 Server

    Useful Commands

    Login

    Generating a new Privilege key

    Reset your query password

    TeamSpeak 3 Databases

    SQLite Database

    MariaDB

    TSDNS

    Known issues

    IPv6

    Accounting failed to register

    Server Crashed after a while (outdated and no licence)

    npm install gamedig -g
    npm update -g
     npm list -g gamedig
    Players:          0/8
    Current Map:      Outpost
    gamedig --type "protocol-valve" --host "1.2.3.4" --port "27015"
    {
      "name": "LinuxGSM Server",
      "map": "StationKappa",
      "password": false,
      "raw": {
        "protocol": 17,
        "folder": "StickyBots",
        "game": "StickyBots",
        "steamappid": 0,
        "numplayers": 0,
        "numbots": 0,
        "listentype": "d",
        "environment": "l",
        "secure": 0,
        "version": "0.0.6.22",
        "port": 7777,
        "steamid": "90122418420694019",
        "tags": "BUILDID:622,OWNINGID:90122418420694019,OWNINGNAME:LinuxGSM Server,P2PADDR:90122418420694019,P2PPORT:7777,SESSIONFLAGS:171",
        "gameid": "889400",
        "rules": {
          "BUILDID_i": "622",
          "NP_i": "0",
          "OWNINGID": "90122418420694019",
          "OWNINGNAME": "LinuxGSM Server",
          "P2PADDR": "90122418420694019",
          "P2PPORT": "7777",
          "SESSIONFLAGS": "171",
          "SN_s": "LinuxGSM Server"
        }
      },
      "maxplayers": 8,
      "players": [],
      "bots": [],
      "query": {
        "host": "1.2.3.4",
        "address": "1.2.3.4",
        "port": 27015,
        "port_query": 27015,
        "type": "protocol-valve",
        "duration": 90,
        "attempts": 1
      }
    }

    Update GameDig

    Sample output

    Details

    Raw output

    plain text
    here
    steam support

    Arma 3

    Server Resources

    • Official Dedicated Server Guide

    Headless Client

    Headless Client Overview

    https://community.bistudio.com/wiki/Arma_3_Headless_Client

    • A headless Client is used to offload AI calculations from the server.

    • Headless Client is integrated into the game client and dedicated server executable (Windows and Linux, use -client parameter).

    • The server does not allow arbitrary connections from headless clients if you do not define the headless clients' IPs in the server.cfg.

    Starting up a headless client and having it connect to your server is easy, Creating a mission that uses the Headless Client is not.

    Create a using LinuxGSM ./linuxgsm.sh arma3server. This will become the headless client instance and rename the new instance to arma3server-hc.

    Edit the config file lgsm/config-lgsm/arma3server-hc.cfg.

    Change the port= increasing the number by a factor of 12 e.g 2303 becomes 2314.

    Update startparameters= changing it to the following.

    Edit the game server config of arma3server (not the headless client) arma3server.server.cfg and add the headless client IP address to headlessClients[]=. If the headless client is on the same physical server as the ARMA 3 server then also add the IP to localClient[]=.

    Navigate to your profile directory.

    edit Player.Arma3Profile and add the line battleyeLicense=1;.

    Start your server with ./arma3server start

    Start your headless client with ./arma3server-hc start.

    Only an admin can see the headless clients in the player menu on the server. The headless client will connect and automatically assume the first available headless client slot.

    Arma 3 mods are managed using the or manual downloads.

    Firstly, you need to select the mods you want to use from the .

    Here is a popular mod to get started:

    Download the Mod using the workshop id is 450814997

    Create a directory called @cba_a3 in serverfiles/mods

    Copy the contents of the mod archive to the @cba_a3 directory.

    Copy the contents of the @cba_a3/keys directory to the server keys directory.

    Add @cba_a3 to the mods="" setting in the .

    If you are adding multiple mods make sure you put a semicolon with the escape character in between each mod.

    Arma 3 server requires that mods have lowercase names. Some mods do not do this and will need to have their file names converted to lowercase.

    This can be done by using the following script.

    Run the script from the serverfiles/mods directory.

    Start the server and check that your mods all have valid hashes. You should see the "Community Base Addons" mod appear in your console file.

    Factorio

    Server Resources

    • World generation

    • Factorio server Wiki

    • Factorio console commands

    Configuration for Factorio is split between both the and .

    port, rcon and branch configuration is set using stat parameters

    To use a specific version of Factorio, you can change the branch to the version you want to use :

    One the branch changed, do not forget to update the server :

    All other settings are located in the Factorio .

    Useful settings include:

    If you want your server to be publicly listed on the server browser you will need to enter your profile credentials from the . You can use either a token or password.

    Specifying world generation settings is a fairly simple task when creating a new world.

    The steps to do so are as follows:

    1. Delete any existing world data

    2. Modify map-gen-settings.json

    3. Use the Factorio executable to generate a world with that json

    Follow the Guide below for detailed instructions on doing the above.

    Firstly, delete any existing worlds that are found in the serverfiles directory.

    In the data directory, copy the example files, then and customise them to your requirements.

    In map-gen-settings.json, the can be:

    Once complete you will need to generate your World. Go back to the serverfiles directory and run the Factorio binary.

    I prefer the added customisation of the to the built-in generation.

    The easiest way that I've found to generate a world with the RSO mod (and add mods in general) is as follows:

    1. Startup Factorio on a client and install the RSO mod

    2. Start generation of a new world and configure mod generation settings

    3. Grab the mod files and mod-settings.dat

    To configure the generation, go to Play > New World > Mod Settings > Map, then adjust options accordingly. Doing so will generate a file called mod-settings.dat which stores these settings.

    You can locate the mod files on your system in the path :

    Transfer all of the mods and mod-settings.dat file to your server with a tool like or the rsync command on Mac/Linux, or even a USB drive.

    Note: DO NOT TRANSFER FILES OVER FTP

    If you have SSH open on the server, you will want to use SFTP. If you're using Filezilla, setting the port to 22 will tell it to use SFTP. If you're using rsync, the command would look something like this:

    You will want to drop those files in the serverfiles/mods directory. You will also need to delete the existing save so that it generates a new one with the new generation rules. (This is a great time to make backups if you have any progress you would like to save).

    Navigate to the root folder of your Factorio installation, then delete the save:

    Once you've done that, you're good to start the server.

    GitHub - GameServerManagers/Game-Server-Configs: A repo of game server configuration files used by LinuxGSMGitHub
    GitHub - GameServerManagers/Game-Server-Configs: A repo of game server configuration files used by LinuxGSMGitHub

    YES

    YES

    YES

    NO

    NO

    NO

    CentOS 8

    NO

    NO

    YES

    YES

    NO

    NO

    NO

    Debian 9 "Stretch"

    NO

    NO

    YES

    YES (backport)

    NO

    NO

    NO

    Debian 10 "Buster"

    NO

    NO

    NO

    YES

    NO

    NO

    NO

    Debian 11 "Bullseye"

    NO

    NO

    NO

    YES

    NO

    NO

    YES

    Ubuntu 16.04 LTS

    NO

    NO

    YES

    NO

    NO

    NO

    NO

    Ubuntu 18.04 LTS

    NO

    NO

    YES

    YES

    NO

    NO

    NO

    Ubuntu 20.04 LTS

    NO

    NO

    YES

    YES

    YES

    YES

    YES

    b_virtualserver_channelgroup_list
    Run Factorio as normal

    Transfer them to the server

  • Delete or rename any previous worlds

  • ## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters
    ip="0.0.0.0"
    port="34197"
    rconport="34198"
    rconpassword="Change_Me"
    # (stable|experimental)
    branch="stable"
    ## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters
    branch="1.1.87"
    ./fctserver update
    serverfiles/data/fctrserver.json
    "name": "Name of the game as it will appear in the game listing",
    "description": "Description of the game that will appear in the listing",
    "tags": ["game", "tags"],
    
    "_comment_max_players": "Maximum number of players allowed, admins can join even a full server. 0 means unlimited.",
    "max_players": 0,
    
    "game_password": "",
    
    "_comment_autosave_interval": "Autosave interval in minutes",
    "autosave_interval": 10,
    
    "_comment_autosave_slots": "server autosave slots, it is cycled through when the server autosaves.",
    "autosave_slots": 5,
    "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public",
    "username": "",
    "password": "",
    
    "_comment_token": "Authentication token. May be used instead of 'password' above.",
    "token": "",
    cd serverfiles
    rm save1.zip # this will delete your world.
    rm -r saves # this directory will only exist if you have ran the server.
    cd data
    cp map-gen-settings.example.json map-gen-settings.json
    cp map-settings.example.json map-settings.json
    "none" - equivalent to 0
    "very-low", "very-small", "very-poor" - equivalent to 1/2
    "low", "small", "poor" - equivalent to 1/sqrt(2)
    "normal", "medium", "regular" - equivalent to 1
    "high", "big", "good" - equivalent to sqrt(2)
    "very-high", "very-big", "very-good" - equivalent to 2
    cd ../
    ./bin/x64/factorio --create ./save1.zip --map-gen-settings data/map-gen-settings.json --map-settings data/map-settings.json
    Windows (Zip file): <install directory>\mods
    Windows (Installer): C:\Users\<username>\AppData\factorio\mods
    Windows (Steam): C:\Users\<username>\AppData\Roaming\factorio\mods
    OSX: ~/Library/"Application Support"/factorio/mods
    Linux: ~/.factorio/mods
    rsync -a <source files> <user>@<ip>:<remote destination>
    cd serverfiles/
    rm -rf save1.zip # this will PERMANENTLY delete your world
    rm -rf saves/* # this folder will only exist if you have ran the server

    Server Configuration

    LinuxGSM Server Config

    Specific verison

    Game Server Config

    Server Credentials

    World Generation Settings

    Overview

    Adjusting World Generation Settings

    Remember to backup your server

    Adjusting World Generation Settings (Mods)

    game server config
    start parameters
    game server config
    Factorio website
    ore generation values
    Resource Overhaul Mod
    your Factorio installation saves to
    Filezilla
    Factorio Profile
    startparameters="-client -connect=${ip}:${port} -password=CHANGEME"
    headlessClients[]={"1.2.3.4"}; 
    localClient[]={"1.2.3.4"};
    ~cd ~/.local/share/Arma\ 3\ -\ Other\ Profiles
    serverfiles/mods/@cba_a3
    cp serverfiles/mods/@cba_a3/keys/* serverfiles/keys
    mods="mods/@cba_a3"
    mods="mods/@mod1\;mods/@mod2"
    #!/bin/bash
    depth=0
    for x in $(find . -type d | sed "s/[^/]//g")
    do
    if [ ${depth} -lt ${#x} ]
    then
       let depth=${#x}
    fi
    done
    echo "the depth is ${depth}"
    for ((i=1;i<=${depth};i++))
    do
      for x in $(find . -maxdepth $i | grep [A-Z])
      do
        mv $x $(echo $x | tr 'A-Z' 'a-z')
      done
    done
    15:27:37 ============================================================================================= List of mods ===============================================================================================
    15:27:37 modsReadOnly = true
    15:27:37 safeModsActivated = false
    15:27:37 customMods = true
    15:27:37 hash = 'B44C8332DD951EC30619282DAC7A59519AA0BCB6'
    15:27:37 hashShort = '185e1b29'
    15:27:37                                               name |               modDir |    default |   official |               origin |                                     hash | hashShort | fullPath
    15:27:37 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    15:27:37                      Community Base Addons v3.15.3 |              @cba_a3 |      false |      false |             GAME DIR | fa100065ad10a6ab7a5e16d53efc2b26f3df3b58 |  7f1d8e45 | /home/lgsm/arma3server/serverfiles/@cba_a3
    15:27:37                                  Arma 3 Art of War |                  aow |       true |       true |             GAME DIR | 93cf5270ce855921dcfd261c583983d4e0bb6899 |  2930da71 | /home/lgsm/arma3server/serverfiles/aow
    15:27:37                          Arma 3 Contact (Platform) |                enoch |       true |       true |             GAME DIR | 61e8060b8dce2727f235695e59de01089546d9ad |  2dd9b92b | /home/lgsm/arma3server/serverfiles/enoch
    15:27:37                                       Arma 3 Tanks |                 tank |       true |       true |             GAME DIR | 37296b3dd900117d055e6c13e1ce21e54cd8067b |  dfc0778f | /home/lgsm/arma3server/serverfiles/tank
    15:27:37                                     Arma 3 Tac-Ops |               tacops |       true |       true |             GAME DIR | dec763aedfdc28eab838361370a48f2411535e5a |  70a109b7 | /home/lgsm/arma3server/serverfiles/tacops
    15:27:37                                 Arma 3 Laws of War |               orange |       true |       true |             GAME DIR | a786e1c2e7b3aec524cc1ce932039dc18da0351d |  128b066b | /home/lgsm/arma3server/serverfiles/orange
    15:27:37                                      Arma 3 Malden |                 argo |       true |       true |             GAME DIR | b9edefa0cd211d0961282ce9b69eabeb59bda780 |  1954e272 | /home/lgsm/arma3server/serverfiles/argo
    15:27:37                                        Arma 3 Jets |                 jets |       true |       true |             GAME DIR | cd6561bc9148fec23b136de7fa02bfbd71e12221 |  1f2e3b6f | /home/lgsm/arma3server/serverfiles/jets
    15:27:37                                        Arma 3 Apex |            expansion |       true |       true |             GAME DIR | 2d573cab31befb9729503ed00c211628c73622cc |  e5ad6f6c | /home/lgsm/arma3server/serverfiles/expansion
    15:27:37                                    Arma 3 Marksmen |                 mark |       true |       true |             GAME DIR | f0784723164eb212a22fa2d49e589bead97a9735 |  2d4eada7 | /home/lgsm/arma3server/serverfiles/mark
    15:27:37                                 Arma 3 Helicopters |                 heli |       true |       true |             GAME DIR | 1af5847f6b557b98763dfdad7be3c32491cee65e |  873ada67 | /home/lgsm/arma3server/serverfiles/heli
    15:27:37                                       Arma 3 Karts |                 kart |       true |       true |             GAME DIR | 5ebe4af2ae6777d560a14cf9e39d4ee3f852a75c |  3a3f5ff9 | /home/lgsm/arma3server/serverfiles/kart
    15:27:37                                        Arma 3 Zeus |              curator |       true |       true |             GAME DIR | 351bd6e8b13a4e8f514a173bf78dd949c899e107 |   b6d4451 | /home/lgsm/arma3server/serverfiles/curator
    15:27:37                                             Arma 3 |                   A3 |       true |       true |            NOT FOUND |                                          |           |
    15:27:37 ==========================================================================================================================================================================================================

    Headless Client Setup and Usage

    This guide only handles the setup and connecting a headless client.

    Do not use 127.0.0.1 as the IP address.

    Mod Support

    Adding Mods

    Mods can cause your server to become unstable or may not be compatible with each other. It is a good idea to read the mods docs and/or speak with other experienced Arma3 admins.

    Remember to check you have the correct user permissions once uploaded

    Lower Case File Names

    new server instance
    Steam Workshop
    steam workshop
    CBA: Community Based Addons for Arma 3
    https://steamworkshopdownloader.io/
    LinuxGSM config
    log

    Troubleshooting

    This guide should cover a wide range of issues, but some might be more complicated than that. If you need further assistance, please make sure you read the to know the right place to reach us and what information to provide in order for us to be able to help you.

    Installation issues

    Your game server might not install for many reasons, mainly user based ones, and some distro based. Make sure you answer "yes" to any of these questions.

    User and permissions

    • Did you create a dedicated user for your server?

    • Are you running the script as the right user? Check command: whoami

    • Does the user running the script owns its current directory? Check command: ls -al ., see

    • Does the user have the right permissions on its directories? See

    • Did you install required packages (dependencies) as game page on requests?

    • If sudo isn't installed, did you remove "sudo" from packages install commands?

    • If lib32gcc1 libstdc++6 libstdc++6:i386 packages won't install, did you run apt update

    • Do you have enough disk space on the desired partition? Check command: df -h

    • If the server requests a Steam login, did you enter it properly by editing your (example) "gameserver" script? It's a good idea to have a dedicated Steam account for that purpose.

    • If the Steam download didn't work as intended, did you retry it, or try the command? Maybe your connection to Steam servers is faulty.

    LinuxGSM servers are designed to work out of the box. However, if your server is unable to start, this can have multiple reasons. Some are user based, some are distro based. Here are some ways of diagnosing it.

    Note: (example) ./gameserver details will provide you with relevant information and save you some time. See

    • Is the server properly installed? See the "Game server downloads" part

    • Are all packages installed properly? See "Dependencies" part

    • Is your Linux installation compatible? 32/64bit, distribution... Check command: uname -a

    • What does the logs say? See [

    • Did you try to start with the debug command? See

    • Did you wrongly append start parameters? See

    • What does the logs say? See [

    • Did you try to start with the debug command? See

    • Did you try to validate your game files? (SteamCMD servers only) See

    This is a three part diagnosis: 1) First off, you need to make sure that the server is started properly, take attention to any error messages in console or log output. 2) Check that the server is listening, to the right IP. 3) Check for firewalls or ports redirections that could prevent useful network packets from passing through.

    • Start it with (example ./gameserver start , then check server logs (see [) to see if everything seems OK. You can also try the command and command to see if it's online and if it's able to answer simple queries. If not, then follow the "Start issues" section.

    ./gameserver details will provide you with the corresponding command to check if the server process is properly listening. Example sample output:

    Compare the output from this to expected ports displayed in the details command.

    If the output differs or your think something is wrong, here are the things to check on:

    • Did you set an ip in your gameserver script or config file or are you listening to 0.0.0.0?

    • Are the ports you're using free? See

    • Are you listening to an actual interface IP? See Also, double check for typo mistakes.

    • Are you behind ? See

    • If it's a local server, are ports redirection done properly? See and

    • As usual, first thing you have to ask yourself: What do the logs say? See [

    • Did you wait long enough? Sometimes it's just a matter of time until the server is fully started and listed into the master server list.

    GitHub is only for bug reports regarding LinuxGSM, not resolving specific user issues.

    These kind of install, start or accessibility issues are generally specific to your server or install or comprehension of Linux, so please, note that posting these on GitHub will only result in your issue being closed without an answer and developers' waste of time. Instead, you should use the support methods offered to the community: Discord or Steam Forum as explained in the page. There are lot of nice and helpful users and devs follow them as well whenever they have free time.

    If you ever confirm a global bug after this, LinuxGSM's developers will be happy to resolve it if you raise an issue on GitHub with as much elements as possible to help understanding, reproducing and resolving the bug quickly.

    To learn where and how to get support, see:

    Commands

    Replace ./gameserver with the actual script name. Every command has a short version, also listed here.

    Counter-Strike 2

    Official Server Resources

    CS2 features various game modes, which can be played on your server. To make setting up your server a bit easier, the following table sums up the configuration required in your server's for the various game modes. If you want more detailed and up-to-date information, take a look at Valve's wiki:

    RcloneRclone
    Logo
    Logo
    after
    dpkg --add-architecture i386
    ?
  • If some dependencies are not available, did you check your /etc/apt/sources.list? (Debian based and apt only)

  • Did you make sure that a firewall doesn't prevent the download from working? Check command: iptables -L ; See Firewalls

    Are ports already used by another service? See Ports and Multiple-Game-Servers

  • Is this a known tmux issue? See Tmux

  • Did you try to start with the debug command? See debug

  • What does the logs say? See [Logging

  • Do you have enough RAM? If not, do you have enough swap? Check command: free -mh

  • Did you set an ip in your (example) gameserver script or config file?

  • Did you try temporarily removing mods, and adding them one by one?

  • Does the user have the right permissions on its directories? If this is the case, a corresponding error should be displayed. See Permissions

  • Is a mod no longer compatible? Try temporarily removing mods, and adding them one by one.

  • Is it an editor's error, breaking the server? Does it now require newer package versions? Check forums, alert us if needed by opening a Github issue (and check for existing ones).

  • Dependencies

    Game server downloads

    Start issues

    First start issues

    Modded servers start issues

    Server start issues after updates

    Connectivity issues

    Unable to connect or not showing up in server list

    Is the server actually started?

    Is the server actually listening?

    Isn't there a firewall or a missing NAT rule?

    Other keys to solving this:

    If none of these work

    Support
    File Ownership
    Permissions
    https://linuxgsm.com
    validate
    details
    Logging
    debug
    Start-Parameters
    Logging
    debug
    validate
    Logging
    details
    monitor
    Ports
    Ports
    Firewalls
    Firewalls
    Ports
    details
    Logging
    Support
    Support
    Useful port diagnostic command:
    netstat -atunp | grep srcds_linux

    ./gameserver i

    ./gameserver auto-install

    ./gameserver ai

    ./gameserver start

    ./gameserver st

    ./gameserver stop

    ./gameserver sp

    ./gameserver restart

    ./gameserver r

    ./gameserver details

    ./gameserver dt

    ./gameserver postdetails

    ./gameserver pd

    ./gameserver skeleton

    ./gameserver sk

    ./gameserver backup

    ./gameserver b

    ./gameserver update-lgsm

    ./gameserver ul

    ./gameserver monitor

    ./gameserver m

    ./gameserver test-alert

    ./gameserver ta

    ./gameserver update

    ./gameserver u

    ./gameserver check-update

    ./gameserver cu

    ./gameserver force-update

    ./gameserver fu

    ./gameserver validate

    ./gameserver v

    ./gameserver console

    ./gameserver c

    ./gameserver debug

    ./gameserver d

    Command Name

    Command

    Short

    ./ts3server change-password

    ./gameserver pw

    Command Name

    Command

    Short

    ./gameserver map-compressor

    ./gameserver mc

    Command Name
    Command
    Short

    ./rustserver full-wipe

    ./rustserver fw

    ./rustserver map-wipe

    Command Name

    Command

    Short

    ./gameserver developer

    ./gameserver dev

    Detect Dependencies

    Command Name

    Command

    Short

    Install

    Global commands list

    ./gameserver install

    Specific commands

    Teamspeak 3

    Unreal & Unreal 2 Engine Games

    Rust

    Developer & Debug commands

    .
    [Game Modes]
    gametype
    gamemode
    gamemodeflags
    skirmishid
    mapgroup (you can mix these across all Game Modes except Danger Zone, but use only one)

    Arms Race

    1

    When adjusting the mapgroup, don't forget to also set defaultmap to a map contained in the same mapgroup.

    If players are respawning in random locations on custom maps, set mp_randomspawn to 0.

    If players are being banned for dying too much, such as on minigames maps, as a workaround set mp_autokick to 0. Warning, this disables AFK and Teamkilling kicks as well.

    it is possible to add a single or collection of workshop maps to a Counter-Strike 2 server.

    First, gather the map or collection ID. To do this find the workshop map or collection you want to use on the CS2 steam workshop and look at the URL; it will contain the required ID number. In the example below the ID is 3075706807.

    If you are using a collection you will need to get an auth key from here.

    This page is still a work in progress. If you have updated info please edit this document or let us know.

    Server Resources

    Game Modes

    CS 2 Dedicated server Wiki
    CS 2 Game Modes
    LinuxGSM config
    https://steamcommunity.com/sharedfiles/filedetails/?id=3075706807

    Workshop

    Workshop ID

    Create a Collection

    Auth Key

    CS2 Game Modes

    Counter-Strike: Global Offensive

    Server Resources

    Official Server Resources

    • CS:GO Dedicated server Wiki

    • CS:GO Server Workshop setup Wiki

    CS:GO features various game modes, which can be played on your server. To make setting up your server a bit easier, the following table sums up the configuration required in your server's for the various game modes. If you want more detailed and up-to-date information, take a look at Valve's wiki: . Up-to-date information about mapgroups can be found in the file serverfiles/csgo/gamemodes.txt.

    [Game Modes]
    gametype
    gamemode
    gamemodeflags
    skirmishid
    mapgroup (you can mix these across all Game Modes except Danger Zone, but use only one)

    When adjusting the mapgroup, don't forget to also set defaultmap to a map contained in the same mapgroup.

    If players are respawning in random locations on custom maps, set mp_randomspawn to 0.

    If players are being banned for dying too much, such as on minigames maps, as a workaround set mp_autokick to 0. Warning, this disables AFK and Teamkilling kicks as well.

    Add to the following to the config lgsm/config-lgsm/csgoserver/csgoserver.cfg :

    tickrate="128"

    AS well it is needed to add a few options to the game config (default in: serverfiles/csgo/cfg/csgoserver.cfg )

    This will as well force the client to use the 128 tickrate

    For CSGO, edit these lines in your

    duplicity: Encrypted bandwidth-efficient backupduplicity.nongnu.org
    Introduction to rsyncLinode Guides & Tutorials
    GitHub - zertrin/duplicity-backup.sh: Bash wrapper script for automated backups with duplicity supporting Amazon's S3 online storage as well as other storage destinations (ftp, rsync, sftp, local storage...).GitHub
    GitHub - nodesource/distributions: NodeSource Node.js Binary DistributionsGitHub
    GitHub - nodesource/distributions: NodeSource Node.js Binary DistributionsGitHub
    GitHub - nodesource/distributions: NodeSource Node.js Binary DistributionsGitHub

    Unreal Tournament 3

    LinuxGSM uses the most recent version of UT3 server available for Linux.

    v2.1 (3808) [Compiled: Apr 22 2009 04:27:51].

    Unreal Tournament 3 Requires a few alterations from the official server download. Because of this, the LinuxGSM version of the server files includes the following.

    • Patch 5 (v2.1)

    0

    0

    0

    mg_armsrace

    Boom! Headshot!

    1

    2

    0

    6

    mg_skirmish_headshots

    Classic Casual

    0

    0

    0

    0

    mg_casualsigma, mg_casualdelta

    Classic Competitive (Default)

    0

    1

    0

    0

    mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...

    Classic Competitive (Short Match)

    0

    1

    32

    0

    mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...

    Danger Zone

    6

    0

    0

    0

    mg_dz_blacksite (map: dz_blacksite), mg_dz_sirocco (map: dz_sirocco)

    Deathmatch (Default)

    1

    2

    0

    0

    mg_deathmatch

    Deathmatch (Free For All)

    1

    2

    32

    0

    mg_deathmatch

    Deathmatch (Team vs Team)

    1

    2

    4

    0

    mg_deathmatch

    Demolition

    1

    1

    0

    0

    mg_demolition

    Flying Scoutsman

    0

    0

    0

    3

    mg_skirmish_flyingscoutsman

    Hunter-Gatherers

    1

    2

    0

    7

    mg_skirmish_huntergatherers

    Retakes

    0

    0

    0

    12

    mg_skirmish_retakes

    Stab Stab Zap

    0

    0

    0

    1

    mg_skirmish_stabstabzap

    Trigger Discipline

    0

    0

    0

    4

    mg_skirmish_triggerdiscipline

    Wingman

    0

    2

    0

    0

    mg_de_prime, mg_de_blagai, mg_de_vertigo, mg_de_inferno, mg_de_overpass, mg_de_cbble, mg_de_train, mg_de_shortnuke, mg_de_shortdust, mg_de_lake

    ./rustserver mw

    ./gameserver detect-deps

    ./gameserver dd

    Detect Glibc

    ./gameserver detect-glibc

    ./gameserver dg

    Detect ldd

    ./gameserver detect-ldd

    ./gameserver dl

    Query Raw

    ./gameserver query-raw

    ./gameserver qr

    Clear Modules

    ./gameserver clear-moeuldes

    ./gameserver cm

    Auto Install
    Start
    Stop
    Restart
    Details
    Post Details
    Skeleton
    Backup
    Update LinuxGSM
    Monitor
    Test Alert
    Update
    Check Update
    Force Update
    Validate
    Console
    Debug
    Change Password
    Map Compressor
    Full Wipe
    Map Wipe
    Developer

    0

    0

    mg_armsrace

    Boom! Headshot!

    1

    2

    0

    6

    mg_skirmish_headshots

    Classic Casual

    0

    0

    0

    0

    mg_casualsigma, mg_casualdelta

    Classic Competitive (Default)

    0

    1

    0

    0

    mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...

    Classic Competitive (Short Match)

    0

    1

    32

    0

    mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...

    Danger Zone

    6

    0

    0

    0

    mg_dz_blacksite (map: dz_blacksite), mg_dz_sirocco (map: dz_sirocco)

    Deathmatch (Default)

    1

    2

    0

    0

    mg_deathmatch

    Deathmatch (Free For All)

    1

    2

    32

    0

    mg_deathmatch

    Deathmatch (Team vs Team)

    1

    2

    4

    0

    mg_deathmatch

    Demolition

    1

    1

    0

    0

    mg_demolition

    Flying Scoutsman

    0

    0

    0

    3

    mg_skirmish_flyingscoutsman

    Hunter-Gatherers

    1

    2

    0

    7

    mg_skirmish_huntergatherers

    Retakes

    0

    0

    0

    12

    mg_skirmish_retakes

    Stab Stab Zap

    0

    0

    0

    1

    mg_skirmish_stabstabzap

    Trigger Discipline

    0

    0

    0

    4

    mg_skirmish_triggerdiscipline

    Wingman

    0

    2

    0

    0

    mg_de_prime, mg_de_blagai, mg_de_vertigo, mg_de_inferno, mg_de_overpass, mg_de_cbble, mg_de_train, mg_de_shortnuke, mg_de_shortdust, mg_de_lake

    Arms Race

    1

    Game Modes

    Server Guides

    Setting for a 128 Tick Server

    Workshop

    CS:GO Server Known Issues Wiki
    CS:GO Game Modes
    LinuxGSM config
    CS:GO Game Modes
    Install Sourcemod on CS:GO Server
    LinuxGSM config

    0

    sv_mincmdrate 128
    sv_minupdaterate 128
    wsapikey="YOUR_STEAM_API_KEY"
    wscollectionid="YOUR_COLLECTION_ID"
    wsstartmap="

    Titan Expansion Pack

  • Openspy Server Patch

  • WebAdmin 1.17

    • Game Port 7777 UDP handled by Parms

    • Query port 6500 UDP handled by parms

    • Web Admin 8080 TCP handled by UTWeb.ini

    All servers require a unique login to allow a server to show on the OpenSpy master server list and open the query port. This login has to be created via the game client "Create Profile". You can create multiple profiles under the same email address but you must use the same password for each if you do so.

    Download the OpenSpy Patch to get the server browser working.

    https://ut3-ultimate.com/playing-ut3/

    This is a list of the valid gametypes:

    Name

    GameType

    Deathmatch

    UTGame.UTDeathmatch

    Capture the Flag

    UTGameContent.UTCTFGame_Content

    If you want to run more than one mutator separate them with commas.

    This is a list of the valid mutators shipped with the retail version:

    Name

    MutatorIdentifier

    Instagib

    UTGame.UTMutator_Instagib

    BigHead

    UTGame.UTMutator_BigHead

    MaxPlayers=<number>

    Maximum number of players on the server (overrides ini setting)

    MinNetPlayers=<number>

    Minimum number of players before a match starts (real players not bots)

    Most of these can be set in the server's UTGame.ini, so there's no need to clutter up the command line.

    Server names can be specified in the server's UTGame.ini

    The ServerDescription field isn't in plain ascii or text as you and I know it. Instead its in UCS2 (UTF-16) which is then serialised as numeric strings.

    Edit the UTGame.ini. Under the [UTGame.UTGame] section, be sure to have this:

    You meant to be able to admin the game using rcon but when we tried it although adminlogin worked none of the subsequent commands did.

    First off login with: AdminLogin <password>

    The you can use the following command:

    • AdminLogin <password> - Logs you in as an admin

    • AdminLogout - Logs you out of admin mode

    • AdminRestartMap - Restarts the current map

    • AdminChangeMap <MapName> - Loads a different map (gametype will change too, depending on map)

    • Admin addbots <#> - Adds number of bots

    • Admin killbots - Removes all bots

    • AdminPlayerList - Shows PlayerID of players

    • Adminkick <playername> - Kicks player from current game

    • Adminkickban <playername> - Kicks player from current game and bans player from reconnecting (bans are stored in .ini file for later editing)

    • AdminForceVoiceMute <playername> - Blocks a player from sending voip to others

    • AdminForceVoiceUnMute <playername> - Allows a player to resume sending voip to others

    • AdminForceTextMute <playername> - Blocks a player from sending text to others

    • AdminForceTextUnMute <playername> - Allows a player to resume sending text to others

    • AdminPublishMapList - Overrides the server's map list for the current game type with the one on the client that used the command

    When your done you can logout with: AdminLogout

    Unreal Tournament 3 requires using OpenSpy master server to get it running. Please ensure you have created a login to allow this server to work.

    Server files

     ?mutator=UTGame.UTMutator_Instagib,UTGame.UTMutator_LowGrav
    bAllowMapVoting=True
    VoteDuration=45
    GameSpecificMapCycles=(GameClassName="UTDeathmatch",Maps=("DM-Arsenal","DM-Biohazard","DM-CarbonFire","DM-Deck","DM-Defiance","DM-Deimos","DM-Diesel","DM-Fearless","DM-Gateway","DM-HeatRay","DM-RisingSun","DM-Sanctuary","DM-Sentinel","DM-ShangriLa"))
    GameSpecificMapCycles=(GameClassName="UTTeamGame",Maps=("DM-Arsenal","DM-Biohazard","DM-CarbonFire","DM-Deck","DM-Defiance","DM-Deimos","DM-Diesel","DM-Fearless","DM-Gateway","DM-HeatRay","DM-RisingSun","DM-Sanctuary","DM-Sentinel","DM-ShangriLa"))
    GameSpecificMapCycles=(GameClassName="UTCTFGame_Content",Maps=("CTF-Coret","CTF-Hydrosis","CTF-Reflection","CTF-Vertebrae","CTF-OmicronDawn","CTF-Strident"))
    GameSpecificMapCycles=(GameClassName="UTVehicleCTFGame_Content",Maps=("VCTF-Containment","VCTF-Corruption","VCTF-Kargo","VCTF-Necropolis","VCTF-Sandstorm","VCTF-Suspense"))
    GameSpecificMapCycles=(GameClassName="UTOnslaughtGame_Content",Maps=("WAR-Avalanche","WAR-Downtown","WAR-Dusk","WAR-FloodGate","WAR-Islander","WAR-Islander_Necris","WAR-MarketDistrict","WAR-OnyxCoast","WAR-Powersurge","WAR-Serenity","WAR-Serenity_Necris","WAR-SinkHole","WAR-TankCrossing","WAR-Torlan","WAR-Torlan_Leviathan","WAR-Torlan_Necris"))
    GameSpecificMapCycles=(GameClassName="UTDuelGame",Maps=("DM-Arsenal","DM-Biohazard","DM-CarbonFire","DM-Deck","DM-Defiance","DM-Deimos","DM-Diesel","DM-Fearless","DM-Gateway","DM-HeatRay","DM-RisingSun","DM-Sanctuary","DM-Sentinel","DM-ShangriLa"))

    Ports

    Server OpenSpy Login

    How to fix the Unreal Tournament 3 Game Client

    Game Types

    Mutators

    Common Variables

    Server Names

    Enable Mapvote

    Admin Commands

    distro

    Picking a distro to run a game server is a personal choice and different admins have different preferences. There is no correct answer to which distro an individual chooses. However, there are some recommended choices when using LinuxGSM.

    LinuxGSM developers primarily use Ubuntu for development and attempt to support the ones listed below. While LinuxGSM developers will attempt to support other distros there is no guarantee everything will work as expected, but should an issue occur, submitting GitHub issues is welcome.

    1. Stability and Reliability: Ubuntu is a free and open-source Linux distribution based on Debian. It is renowned for its stability and reliability, making it an excellent choice for hosting game servers. Ubuntu's LTS (Long-Term Support) releases, which are published every two years, offer an extended support lifespan, ensuring that your server remains secure and up-to-date for an extended period.

    FAQ

    Below is a list of common questions that people ask about the Linux Game Server Managers.

    FAQ section is to try to help with common problems with LinuxGSM.

    There are various ways to get help and support with LinuxGSM.

    The website and GitHub wiki is a useful resource for various LinuxGSM related topics.

    Running Multiple Game Servers

    Hosting multiple game servers on the same host

    Depending upon the game server you are running it is possible to run multiple game servers on the same server host.

    There are two recommended ways to run multiple game servers on one physical server. Depending upon the circumstances you may choose a particular method or mixture of both.

    It is best to make a proper plan for running multiple game servers at the earliest stage of your deployment. Make sure that you examine this page carefully and understand all of its content before starting.

    You need some definitions to make this guide clear.

    • Installation: An installation refers to the base directory of a game server. This is where the files required to run a game server is stored.

    Game Developer Preference: Ubuntu has gained popularity among game developers and companies like Valve. This preference is due to Ubuntu's consistent and timely software updates, allowing game developers to work with newer libraries and tools, which is essential for developing and running modern game servers.

  • Large and Supportive Community: With a vast user base, Ubuntu boasts an active and helpful community. This large community ensures that you can easily find solutions to issues, access guides, and receive support when setting up or troubleshooting your game server.

  • User-Friendly Experience: Ubuntu is known for its user-friendly interface, making it an attractive choice for both experienced Linux users and newcomers. The distribution provides an intuitive environment, simplifying the server setup process for those who might be new to managing game servers.

  • Preferred Distro for LinuxGSM Development: Ubuntu is the main choice for the development of LinuxGSM itself. Using Ubuntu ensures that you have the best compatibility and the smoothest experience when running LinuxGSM for managing your game servers.

    1. Choose LTS Releases: It is highly recommended to use Ubuntu LTS releases for hosting game servers. LTS releases offer a longer support lifespan (typically 5 years) compared to standard releases (which have a support period of 6 months). This longer support period means fewer disruptions and security risks for your game server.

    2. Latest LTS Version: Whenever you install a game server, opt for the latest LTS release available at that time. This ensures that you have access to the latest software and updates, maximizing compatibility and security.

    3. Optional Upgrades: If your game server is currently running on an older LTS release and is functioning correctly, upgrading to a newer LTS release is optional. However, consider upgrading at an appropriate time to stay current with the latest features and security patches.

    Version

    Code name

    Release date

    Supported until

    20.04 LTS

    Focal Fossa

    2020-04-23

    2025-04

    https://en.wikipedia.org/wiki/Ubuntu#Releases

    1. Rock-Solid Stability: Debian is renowned for its unmatched stability and reliability. As the upstream distribution for Ubuntu, it serves as the foundation for many popular Linux distributions, including Ubuntu itself. For game servers that require a stable and consistent environment, Debian is an excellent choice.

    2. Long Release Cycle: Debian follows a predictable release cycle, with major stable releases approximately every two years. This extended cycle ensures a robust and mature platform for hosting game servers, minimizing the need for frequent system updates and reconfigurations.

    3. Backports Support: One of Debian's significant advantages is the availability of "backports." These are newer versions of software packages that can be installed on stable Debian releases. This feature allows you to access the latest software and libraries that might be required for running specific game servers and LinuxGSM.

    4. Wide Package Selection: Debian boasts a vast repository of software packages, covering a broad range of applications and tools. This extensive selection ensures that you can easily find and install the necessary dependencies and server components to run your game servers smoothly.

    5. Security Focus: Security is a top priority for Debian's development team. The distribution is known for its prompt security updates and active maintenance, making it a secure choice for hosting game servers and protecting them from potential threats.

    1. Stable Releases: For most game server deployments, it is recommended to use Debian's stable releases. These versions have undergone extensive testing and are well-suited for production environments.

    2. Backports for Newer Software: If your game server or LinuxGSM requires newer software versions, consider using the backports repository. This way, you can leverage the latest software while still benefiting from Debian's overall stability.

    3. Security Updates: Regularly apply security updates to keep your Debian server secure and protected from potential vulnerabilities. Debian's robust security team ensures that security patches are promptly released and widely available.

    4. Consider System Requirements: Before choosing Debian, ensure that your game server's software and any specific tools you intend to use are compatible with the version of Debian you plan to install. Verify system requirements to ensure optimal performance.

    https://en.wikipedia.org/wiki/Debian_version_history

    Version

    Status

    Code name

    Release date

    Security support until

    LTS until

    10

    oldoldstable

    https://en.wikipedia.org/wiki/Debian_version_history#Release_table

    LinuxGSM also works with Enterprise Linux distributions. Known for their stability and long support cycle Enterprise Linux distros are a great choice for Game Servers

    1. Shift to CentOS Stream: CentOS Stream has become the rolling-release development version of RHEL, rather than a downstream clone of RHEL. This change means CentOS Stream might receive more frequent updates, which can introduce unpredictability and potential compatibility issues when managing game servers with LinuxGSM.

    2. Impact on Stability: CentOS Stream's shift towards being an upstream development platform might lead to reduced stability compared to previous CentOS versions. For hosting game servers, a stable environment is crucial to ensure consistent performance and avoid unnecessary disruptions.

    CentOS version

    Release date

    Full updates

    Maintenance updates

    7

    2014-07-07

    2020-08-06

    30 June 2024

    1. RHEL Compatibility: Rocky Linux's binary compatibility with RHEL ensures that LinuxGSM, designed to manage game servers on Linux, will run seamlessly on Rocky Linux. This compatibility guarantees a stable environment for hosting game servers and a familiar experience for users transitioning from CentOS.

    2. Stability and Long-Term Support: Game servers require a stable and reliable operating system to ensure continuous gameplay for players. Rocky Linux's focus on stability and long-term support makes it an ideal choice for hosting game servers with LinuxGSM.

    3. Community-Driven Development: LinuxGSM benefits from being community-driven, just like Rocky Linux. This alignment in community-focused development fosters a collaborative environment, where users of both projects can actively contribute and seek support from fellow enthusiasts.

    4. Transparent Security Updates: Regular security updates and patches in Rocky Linux ensure that your game servers remain secure against potential threats. With LinuxGSM's support for automatic updates, maintaining server security becomes a smoother process.

    • Game Server Hosting: Rocky Linux's RHEL compatibility and stability make it an excellent choice for deploying and managing game servers with LinuxGSM.

    • Continuity from CentOS: For users previously running game servers on CentOS with LinuxGSM, transitioning to Rocky Linux ensures a familiar and stable environment.

    1. RHEL Compatibility: AlmaLinux is direct binary compatibility with RHEL ensures that LinuxGSM will run seamlessly on AlmaLinux, providing a stable platform for hosting game servers.

    2. Community-Driven Development: LinuxGSM benefits from being community-driven, just like Rocky Linux. This alignment in community-focused development fosters a collaborative environment, where users of both projects can actively contribute and seek support from fellow enthusiasts.

    3. Long-Term Support and Stability: Game servers require consistent performance and long-term support to avoid disruptions. AlmaLinux's commitment to stability and long-term support aligns with the requirements of managing game servers using LinuxGSM.

    4. Security Emphasis: AlmaLinux prioritizes security, providing timely updates and patches. When combined with LinuxGSM's capabilities for automated updates, you can maintain a secure gaming environment effortlessly.

    • CentOS Replacement: For users transitioning from CentOS to AlmaLinux for hosting game servers with LinuxGSM, the distribution's RHEL compatibility ensures continuity and stability.

    • Enterprise Game Server Deployments: AlmaLinux's enterprise-grade stability and long-term support make it well-suited for hosting game servers in professional gaming environments.

    LinuxGSM uses packages that are not available by default in CentOS because of this the EPEL (Extra Packages for Enterprise Linux) repository is required to install all dependencies. EPEL is a repository managed by the Fedora project to add extra packages to RHEL/CentOS.

    Debian Based Distributions

    Ubuntu

    Reasons to use Ubuntu with LinuxGSM:

    Recommendations for Ubuntu Usage with LinuxGSM:

    Ubuntu 22.04 LTS is recommended

    Debian

    Reasons to use Debian with LinuxGSM:

    Recommendations for Debian Usage with LinuxGSM:

    Debian 12 "Bookworm" is recommended

    Enterprise Linux Distros

    CentOS

    CentOS is no longer recommended for use with LinuxGSM for hosting game servers.

    Rocky Linux or AlmaLinux are now the recommended alternative Enterprise Linux Distro

    in the future of CentOS have occurred.

    Reasons for the Change:

    Rocky Linux

    Reasons to use Rocky Linux with LinuxGSM:

    Ideal Use Cases:

    AlmaLinux

    Reasons to use AlmaLinux with LinuxGSM:

    Ideal Use Cases:

    EPEL

    EPEL is required to run LinuxGSM

    https://linuxgsm.com

  • https://docs.linuxgsm.com

  • LinuxGSM has a discord server where you can get general support for LinuxGSM related stuff.

    • https://linuxgsm.com/discord

    LinuxGSM has a GitHub issues page where you can submit any bugs and feature suggestions.

    • https://linuxgsm.com/issues

    I received the following error

    Tmux has not been installed. See the dependencies section of the installation instructions.

    or

    The script will not run as root and will error if you try. This is done for the following good reasons:

    • So you or someone else don't accidentally damage your system. (rm -rf * anyone?).

    • So you don't mess up your game servers' user permissions.

    • To help prevent someone from potentially using your game server and gain root access.

    • Keep the game server compartmentalised in its own directory away from your other stuff.

    • It's really bad practice to run scripts as root.

    • Would you really trust yourself as root after a 9-hour energy-drink-fuelled CS:GO session?

    • Did I mention it so you don't break everything!?

    If your error looks like Unable to establish SSL connection you need to make sure you installed the ca-certificates package first as well as other dependencies showed on the website's documentation.

    If you are using an "old" distribution, it is possible that your version of wget doesn't support redirects along with SSL/TLS. As a workaround, you can download the script using --no-check-certificate. Please note that you should only tolerate this practice if your trust your server network connection and the download source at 100%.

    LinuxGSM installs a vanilla server by default. There is now a mods-install feature with a limited selection of popular mods. All other mods will have to be install manually. It is recommend you visit the official add-on/mod installation guides for more info.

    Here are a few useful resources for this.

    • Metamod: Source

    • Metamod

    • Sourcemod

    Short answer: No

    Raspberry PI uses ARM architecture whereas all the game servers will only run on x86 compatible architectures such as 32-bit and 64-bit versions of distros. Raspberry PI is not compatible with x86.

    Short answer: You should not.

    Experience proves Linux's embedded CPU scheduler works the best: Each server will freely use available CPU time, spread across multiple cores/threads in order to prevent adjacent processes from slowing down each other. This allows for equitable resource distribution for all processes; in the case of CPU saturation, all processes will be slowed down by just a bit. On the other hand, binding processes to CPU cores usually provides zero to low-performance gains, while causing various issues including performance loss, most of the time for the following reason: A process that is not bound to specific CPU cores uses the core you bound your game server to, which slows it down more than if CPU usage was spread across the whole CPU.

    Short answer: Yes.

    A new feature in Windows 10 called WSL2 was released allowing the installation of some Linux Distros into Windows. WSL initially did not work as it did not support i386 binary's however with WSL2 it works. So you can now run LInuxGSM on your Windows 10 PC.

    For more info see this useful video on the subject.

    You will get the following message if your server has multiple IP addresses. The game server can only bind to one IP address, because of this you need to tell the server which IP address you want to use.

    Edit the LinuxGSM config located in lgsm/config-lgsm/[servername]/

    Find and edit the following line and change it to the IP address you want to use.

    The correct version of Glibc is not installed. See the dependencies section of the installation instructions.

    The script cannot write to the server because there is no disk space available on your server. Free up some space to resolve.

    You can request a script be created for a particular server by submitting a feature request on the [GitHub issues] page. This does not guarantee it will be created but we will review it and decide if it's possible and how much demand there is for it. Servers will be created when time permits.

    Please also check that the server can run on Linux before submitting. Servers that require WINE will not be considered. You can use SteamDB.info to find the server and check Linux comparability.

    If you have an interest in developing with BASH then you are also welcome to contribute and develop a game server into LinuxGSM.

    In general, we do not remote onto users' servers, unless it is to assist in development.

    If you find a bug or have a suggestion please submit a bug report on GitHub issues page.

    Non-steam versions of the games ARE pirated and this would be the only reason to use non-steam versions. Simply purchase the game via steam. Steam has two massive sales a year with 75% of most of their titles there is really no excuse for pirating these games. http://steampowered.com

    LinuxGSM itself has extremely low server requirements as it is written in BASH. However, the game servers themselves do have hardware requirements. You need to be aware of these requirements in order to choose a server that fits your needs. There are no hard and fast rules when it comes to server requirements and depends upon many factors.

    • Hard Disk: You will need to ensure you have enough disk space to install the game server. The space required varies drastically depending on the game. Generally the older the game the smaller the size. If the server is on SteamCMD you can use SteamDB to find out the disk requirements. For example https://steamdb.info/app/403240/depots/. Also take into consideration any mods, addons, backups, etc you might need.

    • CPU: Most game servers are mono-threaded. This means it will only use one CPU core per instance, because of this it is worth looking at the performance of an individual core. Every game server has different resource requirements with certain factors increasing CPU demand. For example, In Rust, the map size greatly affects CPU usage. For Counter-Strike the tick rate and bots will make a difference. Whereas for Garry's Mod the number of connected players, add-ons, and props that are used and spawned increase server requirements.

    • RAM: Again the specific game server will impact upon the RAM requirements. In general factors such as map size number of players, bots, and add-ons can have an impact on the RAM required. For example, a No More Room in Hell server has a much lower RAM requirement than ARK or Rust. The game engine also plays a massive role in RAM requirements, with Rust using around 12GB and ARK using around 6GB, Unity3D engine games can also have higher requirements.

    • Network: Game servers are not usually very demanding in terms of bandwidth. However, the connection must be reliable and consistent to ensure players get a good experience. Reducing ping and packet loss is very important, otherwise, players will experience latency and lag. Your server's location has a big effect on ping, so try to get your server relatively close to where your players are going to be. If your players are in France then a server in Europe is going to be much better than one in the US for example. Servers can sometimes come under attack so DDoS protection is also important.

    To find out specific requirements of game servers check out official game documentation or forums.

    You're lacking the required module, because you didn't run this command before the last huge LinuxGSM update. The module structure changed, that's why you're getting a 404 error. You just need the newer LinuxGSM version.

    The user that you are running LinuxGSM with does not own all of its files.

    For more information, see Ownership

    Getting rid of bad practice

    Case 1) You've been uploading files as root or any other user than your game server user. If you're logging into your FTP as root, you must know that this is wrong on so many levels and must consider using a better method urgently. Here is an example of a simple user-based FTP set in 2 minutes with proftpd which would already be better. Otherwise, one way better practice is to use SFTP that comes with SSH. No need to install an FTP server as long as you've got an SSH server. Just setup your FTP client to use SFTP, and connect with the same port as your SSH server and with your username/password.

    Case 2) You've been downloading/extracting/copying files as root instead of the appropriate user. Just don't, do it as the user, OR, if you're obstinate, then at least chown files afterward.

    Fixing wrong ownership

    You can simply fix those ownership issues by using a chown command as root.

    It usually means some scripts or executable files are not actually executable.

    Useful command:

    To learn more about this, see Permissions

    This can have numerous reasons. Here are some ways to diagnose this issue:

    • Check your game logs to see if it contains any clue

    • Is your server listening? Input ./gameserver details to get the corresponding command to know it

    • Are you behind Firewalls? Double-check your rules, and try to disable it for testing

    • Do you have multiple interfaces? Set the right IP within your "gameserver" script or the game config file

    • Is it a home server? If you're behind a router, make sure you're listening to your local IP, then redirect appropriate ports to this local IP within your router settings.

    • Are the ports you're using free? See

    • Did you wait long enough? Sometimes it's just a matter of time until your server shows up on the list

    My source server is displaying an error like ./srcds_run: line 318: 31093 Segmentation fault

    This kind of error can happen at any time or be due to numerous reasons. However, the most common ones are:

    If it happens upon start:

    • Interpreter issue (glibc libstdc gcc libraries and so on) - check your versions, libraries, and game binary files.

    • Outdated or bugged addon - Update or remove the addon

    • Missing or revoked GSLT - Update your GSLT

    • Corrupted game server files - run ./gameserver validate

    • File version incompatibility - run ./gameserver validate

    If it happens after a while:

    • A bug from the game server or an addon - Check your console logs, see if you can reproduce, and diagnose your addons

    • Unstable hardware - very unlikely, check your system stability

    • Ulimit issue: Your system cannot open as many files as it should - See ulimit info from this page

    To change the LinuxGSM branch from the default master edit the LinuxGSM executable file.

    either linuxgsm.sh or gameserver e.g csgoserver

    edit the following lines as required.

    Once the details are changed update LinuxGSM.

    I'm having an issue can you help?

    Remember to consider the best place to post your issue and search the internet for a solution before posting.

    Documentation

    http://linuxgsm.com/support
    [ FAIL ] Tmux not installed
        * Tmux is required to run this server.
            * Please see the the following link.
            * http://linuxgsm.com/tmux
    apt-get install tmux
    yum install tmux
    [ FAIL ] Script will not run as root!
    wget -N --no-check-certificate https://linuxgsm.sh
    [ WARN ] Multiple active network interfaces
    
    Manually specify the IP you want to use within the csgoserver script.
    Set ip="0.0.0.0" to one of the following:
    127.0.0.2
    162.252.9.37
    162.252.9.39
    162.252.9.41
    ip="0.0.0.0"
    version `GLIBC_2.15′ not found
    write error: No space left on device
    ./gameserver update-lgsm
    chown -R username:username /home/username
    chmod +x <filename>
    ## GitHub Branch Select
    # Allows for the use of different function files
    # from a different repo and/or branch.
    githubuser="GameServerManagers"
    githubrepo="LinuxGSM"
    githubbranch="master"
    
    ./gameserver update-lgsm

    General Support

    Bugs/Feature Requests

    tmux: command not found

    Can I run a server as root?

    I can't download linuxgsm.sh (TLS/SSL Errors)

    How can I install [insert name] mod?

    Will LinuxGSM run on Raspberry PI?

    Can I bind game servers to a given CPU core?

    Will LinuxGSM run on Linux for Windows?

    [ WARN ] Multiple active network interfaces.

    version `GLIBC_2.15′ not found

    write error: No space left on device

    Can you create a server script for a [insert name] game server?

    Can you remote on to my server and help me set up my game server?

    I found a bug how do I report it?

    How can I install a non-steam version?

    What server do I need?

    I'm getting 404 errors when running modules

    [ FAIL ] Starting game-server: Ownership issues found

    [ FAIL ] Starting game-server: Permission issues found

    My server is not showing up over LAN or Internet

    How do I solve a segmentation fault?

    How do I change the LinuxGSM branch?

    • Instance: Each individual game server is referred to as an instance. There might be multiple instances running per installation. An instance is started by running the ./gameserver script

    • User: Each game server installation should run using its own Linux user. Although it is possible to have multiple installations per user.

    You should be familiar with how LinuxGSM Configs work.

    You need to understand how ports work in order to avoid port overlapping, otherwise, your new instances won't start. Useful resource: Ports.

    Single instance per installation is the most simple method and will fit most use cases. It keeps the server files and configs completely separate from each other.

    This consists of creating a new user for each game server, repeating the install process, and edit your config files ensuring default ports are changed.

    • Running different game servers requires installation in a different directory

    • Running multiple servers of the same game, but they have different content, addons or mods.

    • You want your game servers to be totally separate for simplicity and reduce the chance of multiple instances breaking all at once.

    • Easy to setup

    • Separate installations partition the game servers from each other

    • Each instance can have different maps, addons and mods rather than sharing, preventing conflicts.

    • More secure, by keeping instances separate with there own user.

    • Reduced risk of breaking multiple instances.

    • Requires more disk space as server files can not be shared

    • Each instance has to be individually setup.

    The installs are separated and isolated from each other in each users home directory.

    Game Server

    User

    LinuxGSM Script location

    Garry’s Mod

    gmodserver

    /home/gmodserver/gmodserver

    Garry’s Mod

    1. Create a new user with a home directory.

    2. Repeat the standard installation process using this new user.

    3. Change the instance config adjusting ports numbers from the default

    Single installation with multiple instances is the method used when base installation content, maps, addons and mods are the same. Allowing either a clone of an existing instance or using different slightly different config such as different game modes and map rotations.

    This consists of creating a new LinuxGSM executable file ./gameserver-2 in the same installation as an existing instance.

    • Running cloning an existing game server by creating a new instance.

    • Running the same game server with different game modes, maps etc.

    • Running multiple instances even with limited disk space available.

    • Uses less disk space as base installation is the same

    • Less configuration required

    • It is possible to use different game modes and map rotations by editing configs.

    • Each instance shares the same files which may limit options to customise an instance

    • Potential mod conflicts

    • Should one instance break all instances might also experience the same issue

    You have one game server installation, but you have multiple instances start in the same installation using different config files.

    Every time a new instance is created, new default config files are created. This allows each instance to have different hostname, ports etc. The config files are by default the same name as the instance script. For example, if the script is ./gameserver-2 the config is gameserver-2.cfg. You can see the location of config files in ./gameserver-2 details (replace "instance" with your actual instance name).

    Each instance is managed using its own script which gives the config file names. These can be renamed how you like, however, the default will simply have an incremental number. Some admins may choose to name them after the server port, the map or the gamemode instead.

    Game

    User

    LinuxGSM Script location

    notes

    Garry’s Mod

    gmodserver

    /home/gmodserver/gmodserver

    1.2.3.4:27015

    In these examples, you can see the scripts are located in the same installation but have different names. Each instance has had its port altered in the server config to prevent port clashes.

    linuxgsm.sh allows you to generate as many instances as you want by running .

    It will generate a new LinuxGSM script using an incremental number.

    On the first run of ./gameserver-2 a new default LinuxGSM and game config gameserver-2.cfgwill be created . These new configs will need to be altered with new ports, hostname and any other settings that are required.

    If you run multiple game servers you will need to alter ports. Ensure you are aware of how to manage ports.

    Installing multiple installations using the same user does work. However you must use unique script names i.e. ./gameserver. This is because tmux requires unique session name to start a session. Tmux will fail to start if another server is using the same session name. LinuxGSM uses the script name as the tmux session name.

    Prerequisites

    Vocabulary

    /home/gameserver/serverfiles
    /home/gameserver/gameserver
    /home/gameserver/gameserver-2
    ./linuxgsm.sh install
    OR
    ./linuxgsm.sh gameserver
    ./gameserver-2

    LinuxGSM Configuration

    Understand ports

    Single Instance per Installation

    Use cases

    Pros

    Cons

    Examples

    How to Install

    Single Installation with Multiple Instances

    Most but not all game servers work with this method

    Use cases

    Pros

    Cons

    How it works

    Examples

    How to install

    Common Mistakes

    Forgetting to change ports and/or IP

    Installing game servers with the same script name under the same user

    Warfare

    UTGameContent.UTOnslaughtGame_Content

    Vehicle Capture the Flag

    UTGameContent.UTVehicleCTFGame_Content

    Team Deathmatch

    UTGame.UTTeamGame

    Duel

    UTGame.UTDuelGame

    Low Gravity

    UTGame.UTMutator_LowGrav

    Super Berserk

    UTGame.UTMutator_SuperBerserk

    Friendly Fire

    UTGame.UTMutator_FriendlyFire

    No Translocator

    UTGame.UTMutator_NoTranslocator

    Speed Freak

    UTGame.UTMutator_SpeedFreak

    Handicap

    UTGame.UTMutator_Handicap

    No Powerups

    UTGame.UTMutator_NoPowerups

    Slomo

    UTGame.UTMutator_Slomo

    Weapon Replacement

    UTGame.UTMutator_WeaponReplacement

    Weapon Respawn

    UTGame.UTMutator_WeaponsRespawn

    bShouldAdvertise=[True|False]

    Show the server in the server browser (default: true)

    bIsLanMatch=[True|False]

    Is this a LAN only game? (default: false)

    bIsDedicated=[True|False]

    Changes dedicated server flag (default: false, even if started as dedicated)

    GamePassword=<password>

    Sets a game password

    AdminPassword=<password>

    Sets an admin password

    Port=<port>

    Sets the server game port (default: 7777; can also be changed via the INI file)

    QueryPort=<port>

    Sets the server query port (default: 6500)

    GoalScore=<number>

    Sets the max frags / max caps before the server will change maps.

    bUsesStats=[True|False]

    Report stats or not?

    TimeLimit=<number>

    Sets the timelimit in minutes for each map.

    Logo
    Logo
    Logo
    Logo

    gmodserver-slender

    /home/gmodserver-slender/gmodserver

    Counter-Strike: Global Offensive

    csgoserver

    /home/csgoserver/csgoserver

    Counter-Strike: Global Offensive

    csgoserver-zombies

    /home/csgoserver-zombies/csgoserver

    Garry’s Mod

    gmodserver

    /home/gmodserver/gmodserver-1

    1.2.3.4:27018

    Garry’s Mod

    gmodserver

    /home/gmodserver/gmodserver-2

    1.2.3.4:27021

    Counter-Strike: Global Offensive

    csgoserver

    /home/csgoserver/csgoserver-zombies-27024

    1.2.3.4:27024 Zombie Mod

    Counter-Strike: Global Offensive

    csgoserver

    /home/csgoserver/csgoserver-zombies-27027

    1.2.3.4:27027 Zombie Mod

    Logo

    22.04 LTS

    Jammy Jellyfish

    2022-04-21

    2027-04

    Buster

    6 July 2019

    2022

    2024

    11

    oldstable

    Bullseye

    14 August 2021

    12

    stable

    Bookworm

    10 June 2023

    8

    2019-09-24

    2021-12-31

    Stream 8

    2019-09-24

    2024-05-31

    Stream 9

    2021-12-03

    2027-05-31

    Significant changes
    AMX Mod X
    Alliedmodders
    Ports
    Logo

    ARK: Survival Evolved

    Server Resources

    • Official Dedicated Server Guide

    • Official Dedicated Server Configuration

    • Steam Workshop

    Different Maps require different system requirements.

    • TheIsland: 7GB RAM

    • Genesis 2: 12GB RAM

    An example of GameUserSettings.ini can be found .

    Below is a list of common Command-Line parameters. For a complete list see the .

    Parameter
    Description

    Below is a list of common Configuration settings. For a complete list see the .

    The following options must come under the [ServerSettings] section of GameUserSettings.ini:

    Variable
    Description

    The following options must come under the [SessionSettings] section of GameUserSettings.ini.

    Variable
    Description

    The following options must come under the [/Script/Engine.GameSession] section of GameUserSettings.ini.

    Variable
    Description

    The section [ModInstaller] handles each extra Steam Workshop Mods/Maps/TC IDs in the Game.ini.

    Variable
    Description

    The altsavedirectoryname is the location where the game save will be stored. By default, this is the current map name. However, this setting can be customised if desired.

    If altsaveddirectoryname is TheIsland the save is located will be:

    • TheIsland

    • TheCenter

    • ScorchedEarth_P

    ARK server mods are managed using the , this allows the auto-install and update of mods.

    Firstly, you need to select the mods you want to use from the .

    Here is a simple mod to get started:

    -AutoManagedMods is the required to add workshop support and is added to the start parameters by default.

    Edit GameUserSettings.ini, adding the following line under [ServerSettings]. To add multiple mods use a comma delimiter e.g ActiveMods=924619115,924619652.

    Next, edit or create Game.ini and add the following section, this will enable the auto-download of mods. To add multiple mods add another ModIDS= line underneath the first.

    For the example mod add the following to GameUserSettings.ini other mods may require their own configuration as per their documentation.

    For more config options for WBUI see this .

    Start the server and the mods will be automatically downloaded by the server. To check that this has worked open the console ./arkserver console. In the console, you will see a message similar to the following.

    If you join before the server or your client has fully downloaded the mod you might get a Mod Version Mismatch error. Simply, give the server more time to load the mods.

    Once you have connected to the server you will be able to see that the mod has loaded by seeing the Mod Name in the game menu Esc.

    The example mod can be activated by pressing F1.

    The Steam Workshop has a feature that allows mods to be grouped in collections. Currently, Steam workshop collection IDs won't work directly with ARK. Instead, you need to have all the individual IDs of the mods you want to use.

    The -MultiHome parameter is used to bind the server to a specific interface. By default, LinxuGSM sets this to the ${ip} variable.

    If you want players who use the Epic Store to connect to the server the -PublicIPForEpic parameter. By default, LinuxGSM will set this to the ${publicip} variable.

    ARK can work with LinuxGSM in the same install. However, each instance will use the same GameUserSettings.ini. To customise each server use command-line parameters as they take precedence over the configs.

    A cluster allows players to transfer a survivor, items, and tames ("objects") from one ARK to another ARK. A server admin can group all their ARK servers together in a cluster. Typically a server admin will cluster servers with different maps. There are a few different ways to configure CrossARK depending upon your configuration.

    The cluster ID is the global name of the cluster. Each instance that will be attached to the cluster must have the same cluster ID. Use -ClusterId=<CLUSTER NAME>to specify the cluster ID.

    Each server instance must be able to access the cluster directory. The cluster directory is a shared location that allows survivor and other data to be shared between server instances.

    By default the cluster directory is ShooterGame/Saved/clusters/<CLUSTER NAME>. Depending upon your configuration it may be required that instances need to be pointed to a specific shared directory. To do this use add the-ClusterDirOverride=<PATH> parameter with the directory location.

    The shared directory can be any preferred location however each instance must be able to read and write to that directory.

    It is possible to set up clusters between game server instances in the same installation directory, separate installation directory, or even separate physical servers as long as all instances can access the cluster directory.

    Using multiple physical servers will require the use and configuration of a file-sharing or syncing software such as SAMBA, Syncthing, or rsync.

    Firstly, set up .

    In the below example, 2 servers will be clustered together in the same instance. For CrossARK to work each instance must have the same cluster id and share the same cluster directory.

    Change the command-line parameters for your server instances by editing the instance configs.

    Once both server instances have been started check that the cluster directory has been created in ShooterGame/Saved/clusters/hsqCd8MR65VFRFdPcDjw.

    Error Codes

    Common

    SteamCMD can sometimes output errors when something goes wrong. Sadly, Valve has never released an official list of what the error messages mean. Because of this, a lot of guesswork has been needed to figure it out. This page will highlight what we already know and info on researching what the error might mean in the hope that you can contribute to understanding SteamCMD errors.

    SteamCMD uses hexadecimal numbers to give its current "state". Every time SteamCMD does something, it changes its state. When SteamCMD fails, it will output its hexadecimal state, for example 0x202.

    Seems to affect HLDS based servers. Running again often fixes the issue.

    -QueryPort

    -AutoManagedMods

    Steam only, automatic MOD download/installation/updating. Mod IDs are listed in Game.ini under [ModInstaller] section.

    -CrossPlay

    Enables crossplay (i.e.: EPIC and Steam) on dedicated server. Note: PublicIPForEpic must also be set.

    -PublicIPForEpic=<IPAddress>

    This is the public IP that EGS clients will attempt to connect to, if this option is missing and -MULTIHOME is specified, then EGS clients will attempt to connect to the multihome IP; note that if you're using multihome and specify a non-public IP address, then players will not be able to connect to your server using EGS. Make sure to set a public IP address (e.g.: WAN or external).

    -NoBattlEye

    Run server without BattleEye.

    -ActiveEvent=

    Enables a specified event or enables the event's colour palette on wild creatures. Only one can be specified and active at a time.

    ?AltSaveDirectoryName=<savedir_name>

    Allows to specify a custom directory name for server world-save. Usually used to manage clusters, read more about it in the section.

    -insecure

    Disable Valve Anti-Cheat (VAC) system.

    -MapModID=

    Dedicated servers can now optionally load custom maps via ModID directly, rather than having to specify the map name, using this syntax (where the MapModID is the Steam Workshop ID of your custom map, and the GameModIds are the Id’s of the stacked mods you wish to use, in order). ActiveMods must also be set in .

    ?GameModIds=[,[...]]

    Steam only. Specifies the order and which mods are loaded, ModIDs need to be separated with commas (,). Mod priority is in descending order left to right (the left-most ID is the top priority mod). It is suggested to use instead the ActiveMods under [ServerSettings] of GameUserSettings.ini.

    RCONPort=27020

    Specifies the optional TCP RCON Port.

    ServerAdminPassword=

    If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.

    ServerPassword=

    If specified, players must provide this password to join the server.

    serverPVE=

    If True, disables and enables

    Ragnarok
  • Aberration_P

  • Extinction

  • Valguero_P

  • Genesis

  • CrystalIsles

  • Gen2

  • LostIsland

  • Fjordur

  • PGARK

  • serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini
    serverfiles/ShooterGame/Saved/Config/LinuxServer/Game.ini

    SessionName

    -MultiHome

    Enables multihoming.

    -Port

    ActiveMods=ModID1,ModID2,ModID3

    Value type: list of mod IDs, comma-separated with no spaces, in a single line (for example: ModID1,ModID2,ModID3)

    BanListURL="http://arkdedicated.com/banlist.txt"

    Value type: string with a URL Sets the global ban list. Must be enclosed in double-quotes.

    RCONEnabled=True

    SessionName

    Specifies the Server name advertised in the Game Server Browser as well in Steam Server browser. If no name is provide, the default name will be ARK # followed by a random 6 digit number

    MaxPlayers=70

    Specifies the maximum number of players that can play on the server simultaneously.

    ModIDS=<integer>

    Specifies a single Steam Workshop Mods/Maps/TC ID to download/install/update on the server. To handle multiple IDs, multiple lines must be added with the same syntax, each one with the specific workshop ID. Requires -automanagedmods in the command line.

    altsavedirectoryname=
    ShooterGame/Saved/TheIsland
    [ServerSettings]
    ActiveMods=924619115
    [ModInstaller]
    ModIDS=924619115
    [WBUI]
    Icon=1
    OpenBtn=0
    HideBuff=true
    HideAfter=60
    TribeTab=true
    OpenOnStart=true
    OnlyNewPlayers=true
    UseJson=false
    JsonURL="https://dl.dropboxusercontent.com/s/6rhwbq95wwm5gkd/UI.json"
    UpdateInterval=24
    Using binned.
    4.5.1-0+UE4 7038 3077 404 10
    [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
    Setting breakpad minidump AppID = 346110
    Redirecting stderr to '/home/lgsm/.steam/logs/stderr.txt'
    [  0%] Checking for available updates...
    [----] Verifying installation...
    Steam Console Client (c) Valve Corporation
    -- type 'quit' to exit --
    Loading Steam API...Failed to init SDL priority manager: SDL not found
    Failed to set thread priority: per-thread setup failed
    Failed to set thread priority: per-thread setup failed
    OK.
    
    Connecting anonymously to Steam Public...Loaded client id: 13529975768029855698
    Listening for IPv4 broadcast on: 27036
    Logged in OK
    Waiting for user info...OK
    Downloading item 679529026 ...
    Success. Downloaded item 679529026 to "/home/lgsm/.steam/SteamApps/workshop/content/346110/679529026" (1365998905 bytes)
    port="7777"
    queryport="27015"
    rconport="27020"
    defaultmap="TheIsland"
    ${defaultmap}?SessionName=LinuxGSM-Server-1?AltSaveDirectoryName=${altsavedirectoryname}?RCONPort=${rconport} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -AutoManagedMods -Crossplay -PublicIPForEpic=${publicip} -ClusterId=hsqCd8MR65VFRFdPcDjw
    port="7778"
    queryport="27016"
    rconport="27021"
    defaultmap="Ragnarok"
    ${defaultmap}?SessionName=LinuxGSM-Server-2?AltSaveDirectoryName=${altsavedirectoryname}?RCONPort=${rconport} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -AutoManagedMods -Crossplay -PublicIPForEpic=${publicip} -ClusterId=hsqCd8MR65VFRFdPcDjw

    System Requirements

    Config Files

    Server Settings

    Command line parameters take precedence over configuration files.

    Common Command-Line Parameters

    Common Configuration File Settings

    Alt Saved Directory Name

    Be careful not to accidentally overwrite a save file if changing maps or using a custom save location.

    Official Map Names

    Mod Support

    Adding Mods

    Mods can cause your server to become unstable or may not be compatible with each other. It is a good idea to read the mods docs and/or speak with other experienced ARK admins.

    Large mods may take several minutes to download to the server.

    Mod Collections

    To get individual item IDs from collections you can use the Steam Collection ID Grabber.

    IP Addressing

    Multihome

    PublicIPForEpic

    Multi-Instance

    CrossARK (Clusters)

    Cluster ID

    Cluster Directory

    Game Server Instance locations

    Adding Servers to Clusters

    If you have multiple separate installations of ARK use -ClusterDirOverride to point each installation to the same cluster directory.

    Server 1 (arkserver.cfg)

    Server 2 (arkserver-2.cfg)

    This may require you to connect to an instance first

    Servers that are running on local networks sometimes have trouble traveling to other arks. A potential fix for this is adding MultiHome=0.0.0.0 to your command-line parameters.

    Official ARK: Survival Evolved Server Administration forum
    here
    Ark Wiki
    Ark Wiki
    Steam Workshop
    Steam Workshop
    Editable Server UI (WBUI) Open Source - 924619115
    parameter
    link
    multi instances
    CrossARK
    multiple ARK game server instances

    f True, enables RCON, needs RCONPort=<TCP_PORT> and ServerAdminPassword=<admin_password> to work

    Error! App '90' state is 0x10E after update job.

    Hex

    0x10E

    Decimal/StateFlags

    270

    Not enough disk space.

    Reason

    Not enough disk quota

    Hex

    0x202

    Decimal/StateFlags

    514

    Reason

    Hex

    0x206

    Not enough disk space.

    ​Title

    ​Title

    Reason

    ​Not enough disk space

    Hex

    0x212

    Connection issue with steam, you will need to wait for the steam servers to recover.

    Reason

    Connection issue

    Hex

    0x402

    Decimal/StateFlags

    1026

    Reason

    Hex

    0x602

    SteamCMD is unable to write to the disk. Normally caused by permissions issues. This issue was discovered when a directory that was linked using symlink did not have the correct permissions to allow SteamCMD to write to it.

    Reason

    Disk write failure

    Hex

    0x606

    Missing update files

    Reason

    Missing update files

    Hex

    0x626

    Decimal/StateFlags

    Corrupt update files.

    Reason

    Corrupt update files

    Hex

    0x6a6

    Decimal/StateFlags

    Reason

    Hex

    0x2

    Decimal/StateFlags

    2

    No connection to content servers.

    Reason

    No connection to content servers

    Reason 2

    Received 401 (Unauthorized) HTTP response for depot 11

    Hex

    0x6

    To get more info and output see the SteamCMD logs in ~/.local/share/Steam/logsor ~/.steam/logs. The most useful log is content_log.txt that will provide more information on errors.

    SteamCMD uses hex error codes such as 0x202 which can be converted into decimal 514. You can use a hex-to-decimal converter to do this. Using the table below you can work out the status messages. By doing a calculation. Find the highest number below the state 512 which is the first error. Then take the number away from the total 514-512=2 which gives you the last error. This can be done for any error

    514-512-2=0

    512 StateUpdateRunning , 2 StateUpdateRequired

    StateInvalid

    0

    StateUninstalled

    1

    StateUpdateRequired

    2

    This table is from 2015 and is probably outdated now but it's the best we currently have.

    Some users may get a ulimit error (no permission/cannot open file) while SteamCMD is starting up. This error caused by a low setting of the -n parameter (number of file descriptors) of ulimit. Some servers forbid increasing ulimit values after startup (or beyond a limit set by root). This can be fixed by changing the file descriptor number ulimit:

    The Steam account being used does not have a license for the required game.

    The password for the branch is incorrect.

    Ignore the error, do not do anything to attempt to fix it. It is a known error that has appeared ever since SteamPipe was introduced. It does not cause any issues and can be ignored.

    Ignore the error, do not do anything to attempt to fix it. It does not cause any issues and can be ignored.

    Ignore the error, do not do anything to attempt to fix it. It does not cause any issues and can be ignored.

    Ignore the error, do not do anything to attempt to fix it. It does not cause any issues and can be ignored.

    Error! App '90' state is 0x10E after update job.

    SteamCMD

    Codes

    Error 0x10E

    Reason

    Error! App '<appid_number>' state is 0x202 after update job.
    Error! App '<appid_number>' state is 0x206 after update job.
    Error! App '<appid_number>' state is 0x212 after update job.
    Error! State is 0x402 after update job.
    Error! State is 0x602 after update job.
    Error! App '<appid_number>' state is 0x606 after update job.
    Error! App '232250' state is 0x626 after update job.
    Error! App '317670' state is 0x6A6 after update job.
    Error! App '<appid_number>' state is is 0x2 after update job.
    Error! App '<appid_number>' state is 0x6 after update job.
    Update state (0x3) reconfiguring, progress: 0.00 (0 / 0)
    Update state (0x5) validating, progress: 13.48 (1554089956 / 11530459441)
    Update state (0x11) preallocating, progress: 8.53 (983870089 / 11530459441)
    Update state (0x61) downloading, progress: 1.11 (127644881 / 11530459441)
     Update state (0x101) committing, progress: 3.43 (395043827 / 11530459441)
    ./steamcmd.sh: line 17: ulimit: open files: cannot modify limit: Operation not permitted
    ulimit -n 2048

    Error 0x202

    Error 0x206

    Unknown error, if you have any details please let us know

    Missing content_log.txt if you have experienced this error and have a log please let us know.

    Error 0x212

    Error 0x402

    Missing content_log.txt if you have experienced this error and have a log please let us know.

    Error 0x602

    Unknown error, if you have any details please let us know

    Error 0x606

    Error 0x626

    Error 0x6A6

    Error 0x2

    Missing content_log.txt if you have it please let us know.

    Error 0x6

    0x3

    0x5

    0x11

    0x61

    0x101

    SteamCMD Logs

    If you have experienced an error we don't have logs for please provide them to us to assist in diagnosing the issue.

    SteamCMD Hex Codes

    ulimit SteamCMD startup error

    ERROR! Failed to install app '<appid_number>' (No subscription)

    ERROR! Password check for AppId <appid_number> returned error Failure.

    [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

    Loading Steam API...Failed to init SDL priority manager: SDL not found

    CWorkThreadPool::~CWorkThreadPool: work processing queue not empty: 2 items discarded.

    Failed to set thread priority: per-thread setup failed

    6KB
    content_log_0x10E.txt
    Open
    2KB
    content_log_0x202.txt
    Open
    4KB
    content_log_0x212.txt
    Open
    3KB
    content_log_0x602.txt
    Open
    2KB
    content_log_0x606.txt
    Open
    6KB
    content_log_0x626.txt
    Open
    12KB
    content_log_0x6a6.txt
    Open
    2KB
    content_log_0x6.txt
    Open
    52KB
    content_log_0x6-2.txt
    Open

    Decimal/StateFlags

    518

    Decimal/StateFlags

    530

    Decimal/StateFlags

    1538

    Decimal/StateFlags

    1542

    Decimal/StateFlags

    6

    StateFullyInstalled

    4

    StateEncrypted

    8

    StateLocked

    16

    StateFilesMissing

    32

    StateAppRunning

    64

    StateFilesCorrupt

    128

    StateUpdateRunning

    256

    StateUpdateRunning

    512

    StateUpdateStarted

    1024

    StateUninstalling

    2048

    StateBackupRunning

    4096

    StateReconfiguring

    65536

    StateValidating

    131072

    StateAddingFiles

    262144

    StatePreallocating

    524288

    StateDownloading

    1048576

    StateStaging

    2097152

    StateCommitting

    4194304

    StateUpdateStopping

    8388608

    Cross-ARK Data Transfer
    GameUserSettings.ini
    PvP
    PvE

    Rust

    System requirements

    • Minimum RAM: 9GB, Increases depending upon map size

    • CPU: Dual-core 3.4GHz

    • Bandwidth: 10mbps upload

    Useful Links

    General Information

    Server RCON administration tool

    A server wipe is used to reset a Rust server by deleting certain types of data about the map and players.

    A map wipe will remove all the player-made buildings and resources. Resetting the map back to its original state. However, a player's blueprints will be retained.

    A full wipe will remove all the player-made buildings, resources and all player's blueprints.

    Using it is possible to automate your server wipes. The below example will wipe the server every Sunday night at midnight.

    If the Rust server is using the Procedural Map and a seed is not set in the config when the wipe commands will set a new random seed.

    Oxide is an API allowing you to run mods for your Rust server.

    LinuxGSM now handles the install of Oxide for Rust, with mods-install and mods-update commands.

    If a Rust update has been released, then an Oxide update will soon follow. To update Oxide, you can then run:

    To install Oxide addons place them into the serverfiles/oxide/plugins directory. This will cause them to load automatically when starting the server.

    If you need to edit any addon configs, they will be located in serverfiles/oxide/config.

    To update an addon without restarting the server, you'll need to reload the addon with an RCON command.

    RCON is the protocol used to send commands to your server. You will need a tool to use it. Here are 3 of them:

    • Rusty:

    • Rustadmin: (supports both rconweb=1 and rconweb=0)

    • Facepunch web tool:

    To use software like Rusty, you need to alter LinuxGSM config and change rconweb="0". To use Facepunch tool, Rustadmin desktop or Rustadmin Online, you can leave it at default rconweb="1"

    Note: Facepunch web tool currently don't accept domain names, you need to enter server IP.

    Note: append server.writecfg after adding an admin, and player needs to reconnect the server in order for it to be applied.

    Below is a complete list of all Rust server settings.

    ./rustserver map-wipe
    ./rustserver full-wipe
    0 0 * * 0 /home/rustserver/rustserver map-wipe > /dev/null 2>&1
    seed=""
    ./rustserver mods-install
    ./rustserver mods-update
    oxide.reload PluginName
    save ; will save the server state (useful before a stop or restart)
    oxide.reload PluginName ; will reload a plugin after updating it
    ownerid STEAMID64 "Nickname" "Reason" ; to add an owner
    moderatorid STEAMID64 "Nickname" "Reason" ; to add a moderator
    server.writecfg ; will save config changes, including new admins
    aibrainsenses.humanknownplayerslosupdateinterval  (0.2)
    aibrainsenses.knownplayerslosupdateinterval  (0.5)
    aibrainsenses.updateinterval  (0.5)
    aithinkmanager.animalframebudgetms  (2.5)
    aithinkmanager.framebudgetms  (2.5)
    aithinkmanager.petframebudgetms  (1)
    autoturret.auto_turret_budget_ms How many milliseconds to spend on target scanning per frame (0.5)
    baseboat.do_shore_drift   (True)
    baseboat.drift_speed      (1)
    baseboat.generate_paths   (True)
    basefirework.maxactivefireworks  (25)
    basefishingrod.forcefail  (False)
    basefishingrod.forcesuccess  (False)
    basefishingrod.immediatehook  (False)
    basemission.missionsenabled  (True)
    basenavigator.basenavmovementframeinterval How many frames between base navigation movement updates (2)
    basenavigator.maxstepupdistance The max step-up height difference for pet base navigation (1.7)
    basenavigator.navtypedistance  (1)
    basenavigator.navtypeheightoffset  (0.5)
    basenavigator.stucktriggerduration How long we are not moving for before trigger the stuck event (10)
    basepet.movementupdatebudgetms  (1)
    basepet.onlyqueuebasenavmovements  (True)
    basepet.queuedmovementsallowed  (True)
    baseplayer.lifestoryframebudgetms  (0.25)
    baseridableanimal.decayminutes How long before a horse dies unattended (180)
    baseridableanimal.dungtimescale  (1)
    baseridableanimal.framebudgetms  (1)
    basesubmarine.deepwaterdecayminutes How long before a submarine loses all its health while in deep water (120)
    basesubmarine.outsidedecayminutes How long before a submarine loses all its health while outside. If it's in deep water, deepwaterdecayminutes is used (180)
    basesubmarine.oxygenminutes How long a submarine can stay underwater until players start taking damage from low oxygen (10)
    bear.population          Population active on the server, per square km (2)
    bigwheelgame.spinfrequencyseconds  (45)
    blackjackmachine.maxbet  Maximum initial bet per round (500)
    boar.population          Population active on the server, per square km (5)
    boombox.backtracklength   (30)
    boombox.serverurllist    A list of radio stations that are valid on this server. Format: NAME,URL,NAME,URL,etc ()
    cargoship.egress_duration_minutes  (10)
    cargoship.event_duration_minutes  (50)
    cargoship.event_enabled   (True)
    cargoship.loot_round_spacing_minutes  (10)
    cargoship.loot_rounds     (3)
    cassette.maxcassettefilesizemb  (5)
    chicken.population       Population active on the server, per square km (3)
    cinematicentity.hideobjects Hides cinematic light source meshes (keeps lights visible) (False)
    clothlod.clothloddist    distance cloth will simulate until (20)
    codelock.lockoutcooldown  (900)
    codelock.maxfailedattempts  (8)
    camerarenderer.completionframebudgetms  (5)
    camerarenderer.enabled    (True)
    camerarenderer.entitymaxage  (5)
    camerarenderer.entitymaxdistance  (100)
    camerarenderer.farplane   (250)
    camerarenderer.height     (90)
    camerarenderer.layermask  (1218656529)
    camerarenderer.maxraysperframe  (100000)
    camerarenderer.maxrendersperframe  (25)
    camerarenderer.nearplane  (0)
    camerarenderer.playermaxdistance  (30)
    camerarenderer.playernamemaxdistance  (10)
    camerarenderer.renderinterval  (0.05)
    camerarenderer.samplesperrender  (3000)
    camerarenderer.verticalfov  (65)
    camerarenderer.width      (160)
    global.allowadminui      Controls whether the in-game admin UI is displayed to admins (True)
    ai.accuratevisiondistance  (True)
    ai.allowdesigning         (True)
    ai.animal_ignore_food    If animal_ignore_food is true, animals will not sense food sources or interact with them (server optimization). (default: true) (True)
    ai.frametime              (5)
    ai.groups                 (True)
    ai.ignoreplayers          (False)
    ai.move                   (True)
    ai.nav_carve_height      The height of the carve volume. (default: 2) (2)
    ai.nav_carve_min_base_size The minimum size we allow a carving volume to be. (default: 2) (2)
    ai.nav_carve_min_building_blocks_to_apply_optimization The minimum number of building blocks a building needs to consist of for this optimization to be applied. (default: 25) (25)
    ai.nav_carve_size_multiplier The size multiplier applied to the size of the carve volume. The smaller the value, the tighter the skirt around foundation edges, but too small and animals can attack through walls. (default: 4) (4)
    ai.nav_carve_use_building_optimization If nav_carve_use_building_optimization is true, we attempt to reduce the amount of navmesh carves for a building. (default: false) (False)
    ai.navthink               (True)
    ai.npc_alertness_drain_rate npc_alertness_drain_rate define the rate at which we drain the alertness level of an NPC when there are no enemies in sight. (Default: 0.01) (0.01)
    ai.npc_alertness_to_aim_modifier This is multiplied with the current alertness (0-10) to decide how long it will take for the NPC to deliberately miss again. (default: 0.33) (0.5)
    ai.npc_alertness_zero_detection_mod npc_alertness_zero_detection_mod define the threshold of visibility required to detect an enemy when alertness is zero. (Default: 0.5) (0.5)
    ai.npc_cover_compromised_cooldown npc_cover_compromised_cooldown defines how long a cover point is marked as compromised before it's cleared again for selection. (default: 10) (10)
    ai.npc_cover_info_tick_rate_multiplier The rate at which we gather information about available cover points. Minimum value is 1, as it multiplies with the tick-rate of the fixed AI tick rate of 0.1 (Default: 20) (20)
    ai.npc_cover_path_vs_straight_dist_max_diff npc_cover_path_vs_straight_dist_max_diff defines what the maximum difference between straight-line distance and path distance can be when evaluating cover points. (default: 2) (2)
    ai.npc_cover_use_path_distance If npc_cover_use_path_distance is set to true then npcs will look at the distance between the cover point and their target using the path between the two, rather than the straight-line distance. (True)
    ai.npc_deliberate_hit_randomizer The percentage away from a maximum miss the randomizer is allowed to travel when shooting to deliberately hit the target (we don't want perfect hits with every shot). (default: 0.85f) (0.85)
    ai.npc_deliberate_miss_offset_multiplier The offset with which the NPC will maximum miss the target. (default: 1.25) (1.25)
    ai.npc_deliberate_miss_to_hit_alignment_time The time it takes for the NPC to deliberately miss to the time the NPC tries to hit its target. (default: 1.5) (1.5)
    ai.npc_door_trigger_size npc_door_trigger_size defines the size of the trigger box on doors that opens the door as npcs walk close to it (default: 1.5) (1.5)
    ai.npc_enable            If npc_enable is set to false then npcs won't spawn. (default: true) (True)
    ai.npc_families_no_hurt  If npc_families_no_hurt is true, npcs of the same family won't be able to hurt each other. (default: true) (True)
    ai.npc_gun_noise_silencer_modifier The modifier by which a silencer reduce the noise that a gun makes when shot. (Default: 0.15) (0.15)
    ai.npc_htn_player_base_damage_modifier Baseline damage modifier for the new HTN Player NPCs to nerf their damage compared to the old NPCs. (default: 1.15f) (1.15)
    ai.npc_htn_player_frustration_threshold npc_htn_player_frustration_threshold defines where the frustration threshold for NPCs go, where they have the opportunity to change to a more aggressive tactic. (default: 3) (3)
    ai.npc_ignore_chairs     If npc_ignore_chairs is true, npcs won't care about seeking out and sitting in chairs. (default: true) (True)
    ai.npc_junkpile_a_spawn_chance npc_junkpile_a_spawn_chance define the chance for scientists to spawn at junkpile a. (Default: 0.1) (0.1)
    ai.npc_junkpile_dist_aggro_gate npc_junkpile_dist_aggro_gate define at what range (or closer) a junkpile scientist will get aggressive. (Default: 8) (8)
    ai.npc_junkpile_g_spawn_chance npc_junkpile_g_spawn_chance define the chance for scientists to spawn at junkpile g. (Default: 0.1) (0.1)
    ai.npc_junkpilespawn_chance defines the chance for scientists to spawn at NPC junkpiles. (Default: 0.1) (0.07)
    ai.npc_max_junkpile_count npc_max_junkpile_count define how many npcs can spawn into the world at junkpiles at the same time (does not include monuments) (Default: 30) (30)
    ai.npc_max_population_military_tunnels npc_max_population_military_tunnels defines the size of the npc population at military tunnels. (default: 3) (3)
    ai.npc_max_roam_multiplier This is multiplied with the max roam range stat of an NPC to determine how far from its spawn point the NPC is allowed to roam. (default: 3) (3)
    ai.npc_only_hurt_active_target_in_safezone If npc_only_hurt_active_target_in_safezone is true, npcs won't any player other than their actively targeted player when in a safe zone. (default: true) (True)
    ai.npc_patrol_point_cooldown npc_patrol_point_cooldown defines the cooldown time on a patrol point until it's available again (default: 5) (5)
    ai.npc_reasoning_system_tick_rate_multiplier The rate at which we tick the reasoning system. Minimum value is 1, as it multiplies with the tick-rate of the fixed AI tick rate of 0.1 (Default: 1) (1)
    ai.npc_respawn_delay_max_military_tunnels npc_respawn_delay_max_military_tunnels defines the maximum delay between spawn ticks at military tunnels. (default: 1920) (1920)
    ai.npc_respawn_delay_min_military_tunnels npc_respawn_delay_min_military_tunnels defines the minimum delay between spawn ticks at military tunnels. (default: 480) (480)
    ai.npc_sensory_system_tick_rate_multiplier The rate at which we tick the sensory system. Minimum value is 1, as it multiplies with the tick-rate of the fixed AI tick rate of 0.1 (Default: 5) (5)
    ai.npc_spawn_on_cargo_ship Spawn NPCs on the Cargo Ship. (default: true) (True)
    ai.npc_spawn_per_tick_max_military_tunnels npc_spawn_per_tick_max_military_tunnels defines how many can maximum spawn at once at military tunnels. (default: 1) (1)
    ai.npc_spawn_per_tick_min_military_tunnels npc_spawn_per_tick_min_military_tunnels defineshow many will minimum spawn at once at military tunnels. (default: 1) (1)
    ai.npc_speed_crouch_run  npc_speed_crouch_run define the speed of an npc when in the crouched run state, and should be a number between 0 and 1. (Default: 0.25) (0.25)
    ai.npc_speed_crouch_walk npc_speed_walk define the speed of an npc when in the crouched walk state, and should be a number between 0 and 1. (Default: 0.1) (0.1)
    ai.npc_speed_run         npc_speed_walk define the speed of an npc when in the run state, and should be a number between 0 and 1. (Default: 0.4) (0.4)
    ai.npc_speed_sprint      npc_speed_walk define the speed of an npc when in the sprint state, and should be a number between 0 and 1. (Default: 1.0) (1)
    ai.npc_speed_walk        npc_speed_walk define the speed of an npc when in the walk state, and should be a number between 0 and 1. (Default: 0.18) (0.18)
    ai.npc_use_new_aim_system If npc_use_new_aim_system is true, npcs will miss on purpose on occasion, where the old system would randomize aim cone. (default: true) (True)
    ai.npc_use_thrown_weapons If npc_use_thrown_weapons is true, npcs will throw grenades, etc. This is an experimental feature. (default: true) (True)
    ai.npc_valid_aim_cone    npc_valid_aim_cone defines how close their aim needs to be on target in order to fire. (default: 0.8) (0.8)
    ai.npc_valid_mounted_aim_cone npc_valid_mounted_aim_cone defines how close their aim needs to be on target in order to fire while mounted. (default: 0.92) (0.92)
    ai.npcswimming            (True)
    ai.ocean_patrol_path_iterations  (100000)
    ai.sensetime              (1)
    ai.setdestinationsamplenavmesh  (True)
    ai.sleepwake              (True)
    ai.spliceupdates          (True)
    ai.think                  (True)
    ai.tickrate               (5)
    ai.usecalculatepath       (True)
    ai.usegrid                (True)
    ai.usesetdestinationfallback  (True)
    antihack.admincheat       (True)
    antihack.build_inside_check  (2)
    antihack.build_losradius  (0.01)
    antihack.build_losradius_sleepingbag  (0.3)
    antihack.build_terraincheck  (True)
    antihack.build_vehiclecheck  (True)
    antihack.debuglevel       (1)
    antihack.enforcementlevel  (1)
    antihack.eye_clientframes  (2)
    antihack.eye_forgiveness  (0.5)
    antihack.eye_history_forgiveness  (0.1)
    antihack.eye_history_penalty  (100)
    antihack.eye_losradius    (0.18)
    antihack.eye_noclip_backtracking  (0.01)
    antihack.eye_noclip_cutoff  (0.06)
    antihack.eye_noclip_margin  (0.21)
    antihack.eye_penalty      (0)
    antihack.eye_protection   (4)
    antihack.eye_serverframes  (2)
    antihack.eye_terraincheck  (True)
    antihack.eye_vehiclecheck  (True)
    antihack.flyhack_extrusion  (2)
    antihack.flyhack_forgiveness_horizontal  (1.5)
    antihack.flyhack_forgiveness_horizontal_inertia  (10)
    antihack.flyhack_forgiveness_vertical  (1.5)
    antihack.flyhack_forgiveness_vertical_inertia  (10)
    antihack.flyhack_margin   (0.05)
    antihack.flyhack_maxsteps  (15)
    antihack.flyhack_penalty  (100)
    antihack.flyhack_protection  (3)
    antihack.flyhack_reject   (False)
    antihack.flyhack_stepsize  (0.1)
    antihack.forceposition    (True)
    antihack.maxdeltatime     (1)
    antihack.maxdesync        (1)
    antihack.maxviolation     (100)
    antihack.melee_backtracking  (0.01)
    antihack.melee_clientframes  (2)
    antihack.melee_forgiveness  (0.5)
    antihack.melee_losforgiveness  (0.2)
    antihack.melee_penalty    (0)
    antihack.melee_protection  (4)
    antihack.melee_serverframes  (2)
    antihack.melee_terraincheck  (True)
    antihack.melee_vehiclecheck  (True)
    antihack.modelstate       (True)
    antihack.noclip_backtracking  (0.01)
    antihack.noclip_margin    (0.09)
    antihack.noclip_margin_dismount  (0.22)
    antihack.noclip_maxsteps  (15)
    antihack.noclip_penalty   (0)
    antihack.noclip_protection  (3)
    antihack.noclip_reject    (True)
    antihack.noclip_stepsize  (0.1)
    antihack.objectplacement  (True)
    antihack.projectile_anglechange  (60)
    antihack.projectile_backtracking  (0.01)
    antihack.projectile_clientframes  (2)
    antihack.projectile_damagedepth  (2)
    antihack.projectile_desync  (1)
    antihack.projectile_forgiveness  (0.5)
    antihack.projectile_impactspawndepth  (1)
    antihack.projectile_losforgiveness  (0.2)
    antihack.projectile_penalty  (0)
    antihack.projectile_positionoffset  (True)
    antihack.projectile_protection  (6)
    antihack.projectile_serverframes  (2)
    antihack.projectile_terraincheck  (True)
    antihack.projectile_trajectory  (1)
    antihack.projectile_vehiclecheck  (True)
    antihack.projectile_velocitychange  (1.1)
    antihack.relaxationpause  (10)
    antihack.relaxationrate   (0.1)
    antihack.reporting        (False)
    antihack.speedhack_forgiveness  (2)
    antihack.speedhack_forgiveness_inertia  (10)
    antihack.speedhack_penalty  (0)
    antihack.speedhack_protection  (2)
    antihack.speedhack_reject  (True)
    antihack.speedhack_slopespeed  (10)
    antihack.terrain_check_geometry  (False)
    antihack.terrain_kill     (True)
    antihack.terrain_padding  (0.3)
    antihack.terrain_penalty  (100)
    antihack.terrain_protection  (1)
    antihack.terrain_timeslice  (64)
    antihack.tickhistoryforgiveness  (0.1)
    antihack.tickhistorytime  (0.5)
    antihack.userlevel        (2)
    app.alarmcooldown        Cooldown time before alarms can send another notification (in seconds) (30)
    app.listenip              (0.0.0.0)
    app.maxconnections        (500)
    app.maxconnectionsperip   (5)
    app.maxmessagesize        (1048576)
    app.notifications        Enables sending push notifications (True)
    app.port                  (28082)
    app.publicip              ()
    app.queuelimit           Max number of queued messages - set to 0 to disable message processing (100)
    app.serverid              (9e6eb549-17a8-429c-9df3-aa8503591776)
    app.update               Disables updating entirely - emergency use only (True)
    batching.verbose          (0)
    bradley.enabled           (True)
    bradley.respawndelayminutes  (60)
    bradley.respawndelayvariance  (1)
    chat.enabled              (True)
    chat.globalchat           (True)
    chat.historysize         Number of messages to keep in memory for chat history (1000)
    chat.localchat            (False)
    chat.localchatrange       (100)
    chat.serverlog            (True)
    clan.enabled             Enables the clan system if set to true (must be set at boot, requires restart) (False)
    clan.maxmembercount      Maximum number of members each clan can have (local backend only!) (100)
    construct.frameminutes    (30)
    craft.instant             (False)
    debug.callbacks           (False)
    debug.checkparentingtriggers  (True)
    debug.checktriggers       (False)
    debug.debugdismounts      (False)
    debug.disablecondition   Do not damage any items (False)
    debug.log                 (True)
    decay.bracket_0_blockcount Between 0 and this value are considered bracket 0 and will cost bracket_0_costfraction per upkeep period to maintain (15)
    decay.bracket_0_costfraction blocks within bracket 0 will cost this fraction per upkeep period to maintain (0.1)
    decay.bracket_1_blockcount Between bracket_0_blockcount and this value are considered bracket 1 and will cost bracket_1_costfraction per upkeep period to maintain (50)
    decay.bracket_1_costfraction blocks within bracket 1 will cost this fraction per upkeep period to maintain (0.15)
    decay.bracket_2_blockcount Between bracket_1_blockcount and this value are considered bracket 2 and will cost bracket_2_costfraction per upkeep period to maintain (125)
    decay.bracket_2_costfraction blocks within bracket 2 will cost this fraction per upkeep period to maintain (0.2)
    decay.bracket_3_blockcount Between bracket_2_blockcount and this value (and beyond) are considered bracket 3 and will cost bracket_3_costfraction per upkeep period to maintain (200)
    decay.bracket_3_costfraction blocks within bracket 3 will cost this fraction per upkeep period to maintain (0.333)
    decay.debug               (False)
    decay.delay_metal        How long should this building grade decay be delayed when not protected by upkeep, in hours (0)
    decay.delay_override     When set to a value above 0 everything will decay with this delay (0)
    decay.delay_stone        How long should this building grade decay be delayed when not protected by upkeep, in hours (0)
    decay.delay_toptier      How long should this building grade decay be delayed when not protected by upkeep, in hours (0)
    decay.delay_twig         How long should this building grade decay be delayed when not protected by upkeep, in hours (0)
    decay.delay_wood         How long should this building grade decay be delayed when not protected by upkeep, in hours (0)
    decay.duration_metal     How long should this building grade take to decay when not protected by upkeep, in hours (8)
    decay.duration_override  When set to a value above 0 everything will decay with this duration (0)
    decay.duration_stone     How long should this building grade take to decay when not protected by upkeep, in hours (5)
    decay.duration_toptier   How long should this building grade take to decay when not protected by upkeep, in hours (12)
    decay.duration_twig      How long should this building grade take to decay when not protected by upkeep, in hours (1)
    decay.duration_wood      How long should this building grade take to decay when not protected by upkeep, in hours (3)
    decay.outside_test_range Maximum distance to test to see if a structure is outside, higher values are slower but accurate for huge buildings (50)
    decay.scale               (1)
    decay.tick                (600)
    decay.upkeep             Is upkeep enabled (True)
    decay.upkeep_grief_protection How many minutes can the upkeep cost last after the cupboard was destroyed? default : 1440 (24 hours) (1440)
    decay.upkeep_heal_scale  Scale at which objects heal when upkeep conditions are met, default of 1 is same rate at which they decay (1)
    decay.upkeep_inside_decay_scale Scale at which objects decay when they are inside, default of 0.1 (0.1)
    decay.upkeep_period_minutes How many minutes does the upkeep cost last? default : 1440 (24 hours) (1440)
    demo.recordlist           ()
    demo.recordlistmode      Controls the behavior of recordlist, 0=whitelist, 1=blacklist (0)
    demo.splitmegabytes       (200)
    demo.splitseconds         (3600)
    env.day                   (13)
    env.month                 (5)
    env.oceanlevel            (0)
    env.progresstime          (True)
    env.time                  (17.29095)
    env.year                  (2025)
    fps.limit                 (240)
    gc.enabled                (True)
    gc.incremental_enabled    (True)
    gc.incremental_milliseconds  (3)
    global.asyncwarmup        (False)
    global.cinematicgingerbreadcorpses When enabled a player wearing a gingerbread suit will gib like the gingerbread NPC's (False)
    global.developer          (0)
    global.disablebagdropping Disables the backpacks that appear after a corpse times out (False)
    global.forceunloadbundles  (True)
    global.maxspraysperplayer If a player sprays more than this, the oldest spray will be destroyed. 0 will disable (40)
    global.maxthreads         (8)
    global.perf               (0)
    global.preloadconcurrency  (1)
    global.skipassetwarmup_crashes  (False)
    global.sprayduration     Base time (in seconds) that sprays last (10800)
    global.sprayoutofauthmultiplier Multiplier applied to SprayDuration if a spray isn't in the sprayers auth (cannot go above 1f) (0.5)
    global.warmupconcurrency  (1)
    halloween.enabled         (False)
    halloween.murdererpopulation Population active on the server, per square km (0)
    halloween.scarecrow_beancan_vs_player_dmg_modifier Modified damage from beancan explosion vs players (Default: 0.1). (0.1)
    halloween.scarecrow_body_dmg_modifier Modifier to how much damage scarecrows take to the body. (Default: 0.25) (0.25)
    halloween.scarecrow_chase_stopping_distance Stopping distance for destinations set while chasing a target (Default: 0.5) (0.5)
    halloween.scarecrow_throw_beancan_global_delay The delay globally on a server between each time a scarecrow throws a beancan (Default: 8 seconds). (8)
    halloween.scarecrowpopulation Population active on the server, per square km (0)
    halloween.scarecrows_throw_beancans Scarecrows can throw beancans (Default: true). (True)
    inventory.disableattirelimitations Disables all attire limitations, so NPC clothing and invalid overlaps can be equipped (False)
    net.global_network_debug Toggle printing time taken to send all trees & all global entities to client when they connect (False)
    net.global_networked_bases  (True)
    net.limit_global_update_broadcast (default) true = only broadcast to clients with global networking enabled, false = broadcast to every client regardless (True)
    net.visdebug              (False)
    net.visibilityradiusfaroverride  (-1)
    net.visibilityradiusnearoverride  (-1)
    nexus.clanclatbatchduration Maximum duration in seconds to batch clan chat messages to send to other servers on the nexus (1)
    nexus.defaultzonecontactradius Default distance between zones to allow boat travel, if map.contactRadius isn't set in the nexus (uses normalized coordinates) (0.33)
    nexus.endpoint           URL endpoint to use for the Nexus API (https://api.facepunch.com/api/nexus/)
    nexus.islandspawndistance How far away islands should be spawned, as a factor of the map size (1.5)
    nexus.loadingtimeout     Time in seconds to keep players in the loading state before going to sleep (900)
    nexus.logging             (True)
    nexus.mapimagescale      Scale of the map to render and upload to the nexus (0.5)
    nexus.messagelockduration Time in seconds to allow the server to process nexus messages before re-sending (requires restart) (5)
    nexus.pinginterval       Time in seconds to wait between server status pings (30)
    nexus.playermanifestinterval Interval in seconds to broadcast the player manifest to other servers on the nexus (30)
    nexus.protectionduration Maximum time in seconds to keep transfer protection enabled on entities (300)
    nexus.rpctimeoutmultiplier Multiplier for nexus RPC timeout durations in case we expect different latencies (1)
    nexus.secretkey           ()
    nexus.timeoffset         Time offset in hours from the nexus clock (0)
    nexus.transferflushtime  Maximum amount of time in seconds that transfers should be cached before auto-saving (60)
    nexus.zonecontroller      (basic)
    heli.bulletaccuracy       (2)
    heli.bulletdamagescale    (1)
    heli.guns                 (1)
    heli.lifetimeminutes      (15)
    physics.autosynctransforms  (True)
    physics.batchsynctransforms  (True)
    physics.bouncethreshold   (2)
    physics.gravity          Gravity multiplier (1)
    physics.groundwatchdebug  (False)
    physics.groundwatchdelay  (0.1)
    physics.groundwatchfails  (1)
    physics.minsteps         The slowest physics steps will operate (8)
    physics.sendeffects      Send effects to clients when physics objects collide (True)
    physics.sleepthreshold    (0.02)
    physics.solveriterationcount The default solver iteration count permitted for any rigid bodies (default 7). Must be positive (3)
    physics.steps            The amount of physics steps per second (16)
    player.tickrate_cl        (20)
    player.tickrate_sv        (16)
    player.woundforever      Whether the crawling state expires (False)
    pool.debug                (False)
    pool.enabled              (True)
    pool.mode                 (2)
    pool.prewarm              (True)
    sentry.hostileduration   how long until something is considered hostile after it attacked (120)
    sentry.interferenceradius radius to check for other turrets (40)
    sentry.maxinterference   max interference from other turrets (12)
    sentry.targetall         target everyone regardless of authorization (False)
    server.anticheatid        (xyza7891h6UjNfd0eb2HQGtaul0WhfvS)
    server.anticheatkey       (OWUDFZmi9VNL/7VhGVSSmCWALKTltKw8ISepa0VXs60)
    server.anticheatlog       (300)
    server.anticheattoken     (True)
    server.arrowarmor         (1)
    server.arrowdamage        (1)
    server.artificialtemperaturegrowablerange  (4)
    server.authtimeout        (60)
    server.bag_quota_item_amount  (True)
    server.bansserverendpoint HTTP API endpoint for centralized banning (see wiki) ()
    server.bansserverfailuremode Failure mode for centralized banning, set to 1 to reject players from joining if it's down (see wiki) (0)
    server.bansservertimeout Timeout (in seconds) for centralized banning web server requests (5)
    server.bleedingarmor      (1)
    server.bleedingdamage     (1)
    server.branch             ()
    server.bulletarmor        (1)
    server.bulletdamage       (1)
    server.canequipbackpacksinair Allows backpack equipping while not grounded (False)
    server.ceilinglightgrowablerange  (3)
    server.ceilinglightheightoffset  (3)
    server.censorplayerlist  Censors the Steam player list to make player tracking more difficult (True)
    server.cinematic          (False)
    server.combatlogdelay     (10)
    server.combatlogsize      (30)
    server.composterupdateinterval  (300)
    server.compression        (False)
    server.conveyormovefrequency How often industrial conveyors attempt to move items (value is an interval measured in seconds). Setting to 0 will disable all movement (5)
    server.corpsedespawn      (300)
    server.corpses            (True)
    server.crawlingenabled   Do players go into the crawling wounded state (True)
    server.crawlingmaximumhealth Maximum initial health given when a player dies and moves to crawling wounded state (12)
    server.crawlingminimumhealth Minimum initial health given when a player dies and moves to crawling wounded state (7)
    server.cycletime          (500)
    server.debrisdespawn      (30)
    server.defaultblueprintresearchcost How much scrap is required to research default blueprints (10)
    server.description        (The command-line tool for quick, simple deployment and management of Linux dedicated game servers.)
    server.dropitems          (True)
    server.encryption         (2)
    server.enforcepipechecksonbuildingblockchanges Whether to check for illegal industrial pipes when changing building block states (roof bunkers) (True)
    server.entitybatchsize    (100)
    server.entitybatchtime    (1)
    server.entityrate         (16)
    server.events             (True)
    server.funwaterdamagethreshold  (0.8)
    server.funwaterwetnessgain  (0.05)
    server.gamemode           (vanilla)
    server.headerimage        (https://git.io/JYdmK)
    server.hostname           (LinuxGSM)
    server.identity           (rustserver)
    server.idlekick           (30)
    server.idlekickadmins     (0)
    server.idlekickmode       (1)
    server.incapacitatedrecoverchance Base chance of recovery after incapacitated wounded state (0.1)
    server.industrialcrafterfrequency How often industrial crafters attempt to craft items (value is an interval measured in seconds). Setting to 0 will disable all crafting (5)
    server.industrialframebudgetms How long per frame to spend on industrial jobs (0.5)
    server.ip                 (0.0.0.0)
    server.ipqueriespermin    (30)
    server.itemdespawn        (300)
    server.itemdespawn_container_scale  (2)
    server.itemdespawn_quick  (30)
    server.level              (Procedural Map)
    server.leveltransfer      (True)
    server.levelurl           ()
    server.logoimage          ()
    server.max_sleeping_bags  (-1)
    server.maxclientinfosize  (1048576)
    server.maxconnectionsperip  (5)
    server.maxdecryptqueuebytes  (524288000)
    server.maxdecryptqueuelength  (5000)
    server.maxdecryptthreadwait  (100)
    server.maximummapmarkers How many markers each player can place (5)
    server.maximumpings      How many pings can be placed by each player (5)
    server.maxitemstacksmovedpertickindustrial How many stacks a single conveyor can move in a single tick (12)
    server.maxmainthreadwait  (100)
    server.maxpacketsize_command  (100000)
    server.maxpacketsize_globalentities  (1000)
    server.maxpacketsize_globaltrees  (100)
    server.maxpacketspersecond  (1500)
    server.maxpacketspersecond_command  (100)
    server.maxpacketspersecond_rpc  (200)
    server.maxpacketspersecond_rpc_signal  (50)
    server.maxpacketspersecond_tick  (300)
    server.maxpacketspersecond_voice  (100)
    server.maxpacketspersecond_world  (1)
    server.maxplayers         (50)
    server.maxreadqueuebytes  (524288000)
    server.maxreadqueuelength  (5000)
    server.maxreadthreadwait  (100)
    server.maxreceivetime     (20)
    server.maxunack           (4)
    server.maxwritequeuebytes  (524288000)
    server.maxwritequeuelength  (5000)
    server.maxwritethreadwait  (100)
    server.meleearmor         (1)
    server.meleedamage        (1)
    server.metabolismtick     (1)
    server.modifiertickrate   (1)
    server.motd               ()
    server.netcache           (True)
    server.netcachesize       (0)
    server.netlog             (False)
    server.nonplanterdeathchancepertick  (0.005)
    server.official           (False)
    server.optimalplanterqualitysaturation  (0.6)
    server.packetlog_enabled  (False)
    server.parachuterepacktime How long it takes to pick up a used parachute in seconds (8)
    server.pingduration      How long a ping should last (10)
    server.plantlightdetection  (True)
    server.planttick          (60)
    server.planttickscale     (1)
    server.playerserverfall   (True)
    server.playertimeout      (60)
    server.port               (28015)
    server.printreportstoconsole Should F7 reports from players be printed to console (False)
    server.pve                (False)
    server.queriespersecond   (2000)
    server.queryport          (28017)
    server.radiation          (True)
    server.reportsserverendpoint HTTP API endpoint for receiving F7 reports ()
    server.reportsserverendpointkey If set, this key will be included with any reports sent via reportsServerEndpoint (for validation) ()
    server.respawnatdeathposition If a player presses the respawn button, respawn at their death location (for trailer filming) (False)
    server.respawnresetrange  (50)
    server.respawnwithloadout When a player respawns give them the loadout assigned to client.RespawnLoadout (created with inventory.saveloadout) (False)
    server.rewounddelay       (60)
    server.rpclog_enabled     (False)
    server.salt               (1113233618)
    server.savebackupcount    (2)
    server.savecachesize      (3825343)
    server.saveinterval       (300)
    server.schematime         (1800)
    server.secure             (True)
    server.seed               (1665026410)
    server.showholstereditems  (True)
    server.sprinklereyeheightoffset  (3)
    server.sprinklerradius    (3)
    server.stability          (True)
    server.statbackup         (False)
    server.stats              (False)
    server.tags              Comma-separated server browser tag values (see wiki) ()
    server.tickrate           (30)
    server.updatebatch        (512)
    server.updatebatchspawn   (1024)
    server.url                (https://linuxgsm.com/)
    server.useminimumplantcondition  (True)
    server.watercontainersleavewaterbehind When transferring water, should containers keep 1 water behind. Enabling this should help performance if water IO is causing performance loss (False)
    server.worldsize          (3000)
    server.woundedmaxfoodandwaterbonus Maximum percent chance added to base wounded/incapacitated recovery chance, based on the player's food and water level (0.25)
    server.woundedrecoverchance Base chance of recovery after crawling wounded state (0.2)
    server.woundingenabled   Can players be wounded after recieving fatal damage (True)
    spawn.max_density         (1)
    spawn.max_rate            (1)
    spawn.min_density         (0.5)
    spawn.min_rate            (0.5)
    spawn.player_base         (100)
    spawn.player_scale        (2)
    spawn.respawn_groups      (True)
    spawn.respawn_individuals  (True)
    spawn.respawn_populations  (True)
    spawn.tick_individuals    (300)
    spawn.tick_populations    (60)
    stability.accuracy        (0.001)
    stability.collapse        (0.05)
    stability.stabilityqueue  (9)
    stability.strikes         (10)
    stability.surroundingsqueue  (3)
    stability.verbose         (0)
    steam.server_allow_steam_nicknames  (True)
    time.fixeddelta           (0.0625)
    time.maxdelta             (0.125)
    time.pausewhileloading    (True)
    time.timescale            (1)
    tree.global_broadcast     (False)
    vehicle.boat_corpse_seconds  (300)
    vehicle.carwrecks        Determines whether modular cars turn into wrecks when destroyed, or just immediately gib. Default: true (True)
    vehicle.cinematictrains  If true, trains always explode when destroyed, and hitting a barrier always destroys the train immediately. Default: false (False)
    vehicle.trainskeeprunning Determines whether trains stop automatically when there's no-one on them. Default: false (False)
    vehicle.vehiclesdroploot Determines whether vehicles drop storage items when destroyed. Default: true (True)
    vis.attack                (False)
    vis.damage                (False)
    vis.hitboxes              (False)
    vis.lineofsight           (False)
    vis.protection            (False)
    vis.sense                 (False)
    vis.triggers              (False)
    vis.weakspots             (False)
    voice.voicerangeboostamount  (50)
    weather.atmosphere_brightness  (-1)
    weather.atmosphere_contrast  (-1)
    weather.atmosphere_directionality  (-1)
    weather.atmosphere_mie    (-1)
    weather.atmosphere_rayleigh  (-1)
    weather.clear_chance      (0.9)
    weather.cloud_attenuation  (-1)
    weather.cloud_brightness  (-1)
    weather.cloud_coloring    (-1)
    weather.cloud_coverage    (-1)
    weather.cloud_opacity     (-1)
    weather.cloud_saturation  (-1)
    weather.cloud_scattering  (-1)
    weather.cloud_sharpness   (-1)
    weather.cloud_size        (-1)
    weather.dust_chance       (0.03)
    weather.fog               (-1)
    weather.fog_chance        (0.03)
    weather.ocean_scale       (-1)
    weather.ocean_time        (-1)
    weather.overcast_chance   (0)
    weather.rain              (-1)
    weather.rain_chance       (0.08)
    weather.rainbow           (-1)
    weather.storm_chance      (0.02)
    weather.thunder           (-1)
    weather.wetness_rain      (0.4)
    weather.wetness_snow      (0.2)
    weather.wind              (-1)
    world.cache               (True)
    world.configfile          ()
    world.configstring        ()
    xmas.enabled              (False)
    xmas.giftsperplayer       (2)
    xmas.spawnattempts        (5)
    xmas.spawnrange           (40)
    drone.altitudespeedoverride If greater than zero, overrides the drone's vertical movement speed (0)
    drone.maxcontrolrange    How far drones can be flown away from the controlling computer station (500)
    drone.movementspeedoverride If greater than zero, overrides the drone's planar movement speed (0)
    dungeonnavmesh.use_baked_terrain_mesh  (True)
    dynamicnavmesh.use_baked_terrain_mesh  (False)
    eventschedulewipeoffset.event_hours_before_wipe  (24)
    excavatorsignalcomputer.chargeneededforsupplies  (600)
    global.steamconnectiontimeout  (10000)
    global.steamnagleflush    (False)
    global.steamnagletime    Nagle time, in microseconds (5000)
    global.steamnetdebug     Turns on varying levels of debug output for the Steam Networking. This will affect performance. (0 = off, 1 = bug, 2 = error, 3 = important, 4 = warning, 5 = message, 6 = verbose, 7 = debug, 8 = everything) (0)
    global.steamnetdebug_ackrtt  (4)
    global.steamnetdebug_message  (4)
    global.steamnetdebug_p2prendezvous  (4)
    global.steamnetdebug_packetdecode  (4)
    global.steamnetdebug_packetgaps  (4)
    global.steamnetdebug_sdrrelaypings  (4)
    global.steamsendbuffer   Upper limit of buffered pending bytes to be sent (524288)
    global.steamsendratemax  Maxminum send rate clamp, 0 is no limit (1048576)
    global.steamsendratemin  Minimum send rate clamp, 0 is no limit (131072)
    rcon.ip                   (0.0.0.0)
    rcon.port                 (28016)
    rcon.print               If true, rcon commands etc will be printed in the console (False)
    rcon.web                 If set to true, use websocket rcon. If set to false use legacy, source engine rcon. (True)
    analytics.analytics_header  (X-API-KEY)
    analytics.analytics_secret  ()
    analytics.high_freq_stats  (True)
    analytics.server_analytics_url  (https://rust-api.facepunch.com/api/public/analytics/rust/server)
    analytics.stats_blacklist  ()
    analytics.analytics_enabled  (True)
    frankensteinbrain.movetowardsrate  (1)
    frankensteinpet.decayminutes How long before a Frankenstein Pet dies un controlled and not asleep on table (180)
    gamemodesoftcore.reclaim_fraction_belt  (0.5)
    gamemodesoftcore.reclaim_fraction_main  (0.5)
    gamemodesoftcore.reclaim_fraction_wear  (0)
    growableentity.framebudgetms  (0.25)
    guntrap.gun_trap_budget_ms How many milliseconds to spend on target scanning per frame (0.5)
    hackablelockedcrate.decayseconds How many seconds until the crate is destroyed without any hack attempts (7200)
    hackablelockedcrate.requiredhackseconds How many seconds for the crate to unlock (900)
    halloweendungeon.lifetime How long each active dungeon should last before dying (600)
    halloweendungeon.population Population active on the server (0)
    horse.population         Population active on the server, per square km (0)
    hotairballoon.outsidedecayminutes How long before a HAB loses all its health while outside (180)
    hotairballoon.population Population active on the server (1)
    hotairballoon.serviceceiling  (200)
    ioentity.backtracking     (8)
    ioentity.debugbudget     Print out what is taking so long in the IO frame budget (False)
    ioentity.debugbudgetthreshold Ignore frames with a lower ms than this while debugBudget is active (2)
    ioentity.framebudgetms    (1)
    ioentity.responsetime     (0.1)
    junkpilewater.framebudgetms  (0.25)
    megaphone.megaphonevoicerange  (100)
    minicopter.population    Population active on the server (0)
    mlrs.brokendownminutes   How many minutes before the MLRS recovers from use and can be used again (10)
    modularcar.outsidedecayminutes How many minutes before a ModularCar loses all its health while outside (864)
    modularcar.population    Population active on the server (3)
    monumentnavmesh.use_baked_terrain_mesh  (True)
    motorrowboat.decaystartdelayminutes How long until decay begins after the boat was last used (45)
    motorrowboat.deepwaterdecayminutes How long before a boat loses all its health while in deep water (120)
    motorrowboat.outsidedecayminutes How long before a boat loses all its health while outside. If it's in deep water, deepwaterdecayminutes is used (180)
    motorrowboat.population  Population active on the server (1)
    npcautoturret.sleeperhostiledelay How many seconds until a sleeping player is considered hostile (1200)
    parachute.bypassrepack    (False)
    parachute.landinganimations  (False)
    petbrain.controldistance  (100)
    petbrain.drownindeepwater  (True)
    petbrain.drowntimer       (15)
    petbrain.idlewhenownermounted  (True)
    petbrain.idlewhenownerofflineordead  (True)
    playerhelicopter.insidedecayminutes How long before a player helicopter loses all its health while indoors (2880)
    playerhelicopter.outsidedecayminutes How long before a player helicopter loses all its health while outside (480)
    playerinventory.forcebirthday  (False)
    polarbear.population     Population active on the server, per square km (1)
    reclaimmanager.reclaim_expire_minutes  (120)
    relationshipmanager.contacts  (True)
    relationshipmanager.forgetafterminutes  (960)
    relationshipmanager.maxplayerrelationships  (128)
    relationshipmanager.maxteamsize  (8)
    relationshipmanager.mugshotupdateinterval  (300)
    relationshipmanager.seendistance  (10)
    rhib.rhibpopulation      Population active on the server (0)
    ridablehorse.population  Population active on the server, per square km (2)
    aimanager.ai_dormant     If ai_dormant is true, any npc outside the range of players will render itself dormant and take up less resources, but wildlife won't simulate as well. (True)
    aimanager.ai_dormant_max_wakeup_per_tick ai_dormant_max_wakeup_per_tick defines the maximum number of dormant agents we will wake up in a single tick. (default: 30) (30)
    aimanager.ai_htn_animal_tick_budget ai_htn_animal_tick_budget defines the maximum amount of milliseconds ticking htn animal agents are allowed to consume. (default: 4 ms) (4)
    aimanager.ai_htn_player_junkpile_tick_budget ai_htn_player_junkpile_tick_budget defines the maximum amount of milliseconds ticking htn player junkpile agents are allowed to consume. (default: 4 ms) (4)
    aimanager.ai_htn_player_tick_budget ai_htn_player_tick_budget defines the maximum amount of milliseconds ticking htn player agents are allowed to consume. (default: 4 ms) (4)
    aimanager.ai_htn_use_agency_tick If ai_htn_use_agency_tick is true, the ai manager's agency system will tick htn agents at the ms budgets defined in ai_htn_player_tick_budget and ai_htn_animal_tick_budget. If it's false, each agent registers with the invoke system individually, with no frame-budget restrictions. (default: true) (True)
    aimanager.ai_to_player_distance_wakeup_range If an agent is beyond this distance to a player, it's flagged for becoming dormant. (160)
    aimanager.nav_disable    If set to true the navmesh won't generate.. which means Ai that uses the navmesh won't be able to move (False)
    aimanager.nav_obstacles_carve_state nav_obstacles_carve_state defines which obstacles can carve the terrain. 0 - No carving, 1 - Only player construction carves, 2 - All obstacles carve. (2)
    aimanager.nav_wait       If true we'll wait for the navmesh to generate before completely starting the server. This might cause your server to hitch and lag as it generates in the background. (True)
    aimanager.pathfindingiterationsperframe The maximum amount of nodes processed each frame in the asynchronous pathfinding process. Increasing this value will cause the paths to be processed faster, but can cause some hiccups in frame rate. Default value is 100, a good range for tuning is between 50 and 500. (100)
    aimanager.setdestination_navmesh_failsafe If set to true, npcs will attempt to place themselves on the navmesh if not on a navmesh when set destination is called. (False)
    coverpointvolume.cover_point_sample_step_height cover_point_sample_step_height defines the height of the steps we do vertically for the cover point volume's cover point generation (smaller steps gives more accurate cover points, but at a higher processing cost). (default: 2.0) (2)
    coverpointvolume.cover_point_sample_step_size cover_point_sample_step_size defines the size of the steps we do horizontally for the cover point volume's cover point generation (smaller steps gives more accurate cover points, but at a higher processing cost). (default: 6.0) (6)
    samsite.staticrepairseconds how long until static sam sites auto repair (1200)
    santasleigh.altitudeaboveterrain  (50)
    santasleigh.desiredaltitude  (60)
    scraptransporthelicopter.population Population active on the server (0)
    simpleshark.disable       (False)
    simpleshark.forcesurfaceamount  (0)
    slotmachine.forcepayoutindex  (-1)
    snowmobile.allowpassengeronly Allow mounting as a passenger when there's no driver (False)
    snowmobile.allterrain    If true, snowmobile goes fast on all terrain types (False)
    snowmobile.outsidedecayminutes How long before a snowmobile loses all its health while outside (1440)
    stag.population          Population active on the server, per square km (3)
    telephonemanager.maxcalllength  (120)
    telephonemanager.maxconcurrentcalls  (10)
    traincar.decayminutes    How long before a train car despawns (30)
    traincar.population      Population active on the server (2.3)
    traincar.wagons_per_engine Ratio of wagons to train engines that spawn (2)
    traincarunloadable.decayminutesafterunload How long before an unloadable train car despawns afer being unloaded (10)
    traincouplingcontroller.max_couple_speed Maximum difference in velocity for train cars to couple (9)
    tugboat.tugcorpseseconds  (7200)
    tugboat.tugdecayminutes  How long before a tugboat loses all its health while outside (2160)
    tugboat.tugdecaystartdelayminutes How long until decay begins after the tugboat was last used (1440)
    wipetimer.days_to_add_test  (0)
    wipetimer.hours_to_add_test  (0)
    wipetimer.wipecronoverride Custom cron expression for the wipe schedule. Overrides all other convars (except wipeUnixTimestampOverride) if set. Uses Cronos as a parser: https://github.com/HangfireIO/Cronos/ ()
    wipetimer.wipedayofweek  0=sun,1=mon,2=tues,3=wed,4=thur,5=fri,6=sat (4)
    wipetimer.wipehourofday  Which hour to wipe? 14.5 = 2:30pm (19)
    wipetimer.wipetimezone   The timezone to use for wipes. Defaults to the server's time zone if not set or invalid. Value should be a TZ identifier as seen here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones (Europe/London)
    wipetimer.wipeunixtimestampoverride Unix timestamp (seconds) for the upcoming wipe. Overrides all other convars if set to a time in the future. (0)
    wolf.population          Population active on the server, per square km (2)
    xmasdungeon.playerdetectrange How far we detect players from our inside/outside (30)
    xmasdungeon.xmaslifetime How long each active dungeon should last before dying (1200)
    xmasdungeon.xmaspopulation Population active on the server (0)
    zombie.population        Population active on the server, per square km (0)
    baseboat.seconds_between_shore_drift(  ) 
    baseboat.seconds_until_shore_drift(  ) 
    boombox.clearradiobyuser(  ) 
    bradleyapc.spawnroadbradley(  ) 
    cassette.clearcassettes(  ) 
    cassette.clearcassettesbyuser(  ) 
    commands.echo(  ) 
    commands.find(  ) 
    camerarenderermanager.pool_stats(  ) 
    global.adminui_deleteugccontent(  ) 
    global.adminui_fullrefresh(  ) 
    global.adminui_requestfireworkpattern(  ) 
    global.adminui_requestplayerlist(  ) 
    global.adminui_requestserverconvars(  ) 
    global.adminui_requestserverinfo(  ) 
    global.adminui_requestugccontent(  ) 
    global.adminui_requestugclist(  ) 
    global.authcount(  ) Returns all entities that the provided player is authed to (TC's, locks, etc), supports --json
    global.authradius(  ) 
    global.ban(  ) ban <player> <reason> [optional duration]
    global.banid(  ) banid <steamid> <username> <reason> [optional duration]
    global.banlist(  ) List of banned users (sourceds compat)
    global.banlistex(  ) List of banned users - shows reasons and usernames
    global.bans(  ) List of banned users
    global.buildinfo(  ) Get information about this build
    global.carstats(  ) Get information about all the cars in the world
    global.clearugcentitiesinrange(  ) 
    global.clearugcentity(  ) 
    global.clientperf(  ) 
    global.clientperf_frametime(  ) 
    global.deauthradius(  ) 
    global.entcount(  ) Returns all entities that the provided player has placed, supports --json
    global.entid(  ) 
    global.getugcinfo(  ) 
    global.injureplayer(  ) 
    global.kick(  ) 
    global.kickall(  ) 
    global.killplayer(  ) 
    global.listid(  ) List of banned users, by ID (sourceds compat)
    global.moderatorid(  ) 
    global.mute(  ) 
    global.mutelist(  ) Print a list of currently muted players
    global.ownerid(  ) 
    global.playerlist(  ) Get a list of players
    global.players(  ) Print out currently connected clients etc
    global.recoverplayer(  ) 
    global.removemoderator(  ) 
    global.removeowner(  ) 
    global.removeskipqueue(  ) Removes skip queue permission from a SteamID
    global.say(  ) Sends a message in chat
    global.serverinfo(  ) Get a list of information about the server
    global.skin_radius(  ) skin_radius 'skin' 'radius'
    global.skipqueue(  ) 
    global.skipqueueid(  ) Adds skip queue permissions to a SteamID
    global.sleepingusers(  ) Show user info for players on server.
    global.sleepingusersinrange(  ) Show user info for sleeping players on server in range of the player.
    global.stats(  ) Print out stats of currently connected clients
    global.status(  ) Print out currently connected clients
    global.teaminfo(  ) 
    global.unban(  ) 
    global.unmute(  ) 
    global.upgrade_radius(  ) upgrade_radius 'grade' 'radius'
    global.users(  ) Show user info for players on server.
    global.usersinrange(  ) Show user info for players on server in range of the player.
    global.usersinrangeofplayer(  ) Show user info for players on server in range of the supplied player (eg. Jim 50)
    ai.addignoreplayer(  ) Add a player (or command user if no player is specified) to the AIs ignore list.
    ai.brainstats(  ) 
    ai.clearignoredplayers(  ) Remove all players from the AIs ignore list.
    ai.killanimals(  ) 
    ai.killscientists(  ) 
    ai.printignoredplayers(  ) Print a lost of all the players in the AI ignore list.
    ai.removeignoreplayer(  ) Remove a player (or command user if no player is specified) from the AIs ignore list.
    ai.selectnpclookatserver(  ) 
    ai.sleepwakestats(  ) 
    ai.wakesleepingai(  ) 
    app.appban(  ) 
    app.appunban(  ) 
    app.connections(  ) 
    app.info(  ) 
    app.pair(  ) 
    app.regeneratetoken(  ) 
    app.resetlimiter(  ) 
    app.retry_initialize(  ) Retry initializing the Rust+ companion server if it previously failed
    bradley.quickrespawn(  ) 
    chat.cardgamesay(  ) 
    chat.clansay(  ) 
    chat.localsay(  ) 
    chat.say(  ) 
    chat.search(  ) 
    chat.tail(  ) 
    chat.teamsay(  ) 
    clan.info(  ) Prints info about a clan given its ID
    console.search(  ) 
    console.tail(  ) 
    craft.add(  ) 
    craft.cancel(  ) 
    craft.canceltask(  ) 
    craft.fasttracktask(  ) 
    data.export(  ) 
    debug.bench_io(  ) Spawn lots of IO entities to lag the server
    debug.breakheld(  ) Break the current held object
    debug.breakitem(  ) Break all the items in your inventory whose name match the passed string
    debug.deleteentitiesbyshortname(  ) 
    debug.drink(  ) 
    debug.eat(  ) 
    debug.enable_player_movement(  ) 
    debug.flushgroup(  ) Takes you in and out of your current network group, causing you to delete and then download all entities in your PVS again
    debug.heal(  ) 
    debug.hurt(  ) 
    debug.puzzlereset(  ) reset all puzzles
    debug.refillvitals(  ) 
    debug.renderinfo(  ) 
    debug.repair_inventory(  ) Repair all items in inventory
    debug.resetsleepingbagtimers(  ) 
    debug.setdamage(  ) 
    debug.setfood(  ) 
    debug.sethealth(  ) 
    debug.setradiation(  ) 
    debug.setwater(  ) 
    debug.spawnparachutetester(  ) 
    debug.stall(  ) 
    demo.record(  ) 
    demo.stop(  ) 
    entity.debug_toggle(  ) 
    entity.deleteby(  ) Destroy all entities created by provided users (separate users by space)
    entity.deletebytextblock(  ) Destroy all entities created by users in the provided text block (can use with copied results from ent auth)
    entity.find_entity(  ) 
    entity.find_group(  ) 
    entity.find_id(  ) 
    entity.find_parent(  ) 
    entity.find_radius(  ) 
    entity.find_self(  ) 
    entity.find_status(  ) 
    entity.nudge(  ) 
    entity.spawnlootfrom(  ) 
    entity.spawn(  ) 
    entity.spawngrid(  ) 
    entity.spawnitem(  ) 
    env.addtime(  ) 
    gamemode.set(  ) 
    gamemode.setteam(  ) 
    gc.alloc(  ) 
    gc.collect(  ) 
    gc.unload(  ) 
    global.breakclothing(  ) 
    global.breakitem(  ) 
    global.clearallsprays(  ) 
    global.clearallspraysbyplayer(  ) 
    global.cleardroppeditems(  ) 
    global.clearspraysatpositioninradius(  ) 
    global.clearspraysinradius(  ) 
    global.colliders(  ) 
    global.error(  ) 
    global.free(  ) 
    global.injure(  ) 
    global.kill(  ) 
    global.objects(  ) 
    global.queue(  ) 
    global.quit(  ) 
    global.recover(  ) 
    global.report(  ) 
    global.respawn(  ) 
    global.respawn_sleepingbag(  ) 
    global.respawn_sleepingbag_remove(  ) 
    global.restart(  ) 
    global.setinfo(  ) 
    global.sleep(  ) 
    global.spectate(  ) 
    global.spectateid(  ) 
    global.status_sv(  ) 
    global.subscriptions(  ) 
    global.sysinfo(  ) 
    global.sysuid(  ) 
    global.teleport(  ) 
    global.teleport2autheditem(  ) 
    global.teleport2death(  ) 
    global.teleport2marker(  ) 
    global.teleport2me(  ) 
    global.teleport2owneditem(  ) 
    global.teleportany(  ) 
    global.teleporteveryone2me(  ) 
    global.teleportlos(  ) 
    global.teleportpos(  ) 
    global.textures(  ) 
    global.version(  ) 
    harmony.load(  ) 
    harmony.unload(  ) 
    hierarchy.cd(  ) 
    hierarchy.del(  ) 
    hierarchy.ls(  ) 
    inventory.clearinventory(  ) Clears the inventory of a target player. eg. inventory.clearInventory jim
    inventory.copyto(  ) Copies the players inventory to the player in front of them
    inventory.defs(  ) 
    inventory.deployloadout(  ) Deploys the given loadout to a target player. eg. inventory.deployLoadout testloadout jim
    inventory.deployloadoutinrange(  ) Deploys a loadout to players in a radius eg. inventory.deployLoadoutInRange testloadout 30
    inventory.endloot(  ) 
    inventory.equipslot(  ) 
    inventory.equipslottarget(  ) 
    inventory.give(  ) 
    inventory.giveall(  ) 
    inventory.givearm(  ) 
    inventory.givebp(  ) 
    inventory.giveid(  ) 
    inventory.giveto(  ) 
    inventory.lighttoggle(  ) 
    inventory.listloadouts(  ) Prints all saved inventory loadouts
    inventory.reloaddefs(  ) 
    inventory.resetbp(  ) 
    inventory.saveloadout(  ) Saves the current equipped loadout of the calling player. eg. inventory.saveLoadout loaduoutname
    inventory.unlockall(  ) 
    manifest.printmanifest(  ) 
    manifest.printmanifestraw(  ) 
    memsnap.full(  ) 
    memsnap.managed(  ) 
    memsnap.native(  ) 
    nexus.broadcast_ping(  ) 
    nexus.ping(  ) 
    nexus.playeronline(  ) 
    nexus.refreshislands(  ) 
    nexus.transfer(  ) 
    nexus.uploadmap(  ) Reupload the map image to the nexus. Normally happens automatically at server boot. WARNING: This will lag the server!
    heli.call(  ) 
    heli.calltome(  ) 
    heli.drop(  ) 
    heli.strafe(  ) 
    heli.testpuzzle(  ) 
    player.abandonmission(  ) 
    player.cinematic_gesture(  ) 
    player.cinematic_play(  ) 
    player.cinematic_stop(  ) 
    player.copyrotation(  ) 
    player.createskull(  ) 
    player.createtrophy(  ) 
    player.dismount(  ) 
    player.fillwater(  ) 
    player.gesture_radius(  ) 
    player.gotosleep(  ) 
    player.markhostile(  ) 
    player.mount(  ) 
    player.printpresence(  ) 
    player.printstats(  ) 
    player.reloadweapons(  ) 
    player.resetstate(  ) Resets the PlayerState of the given player
    player.stopgesture_radius(  ) 
    player.swapseat(  ) 
    player.wakeup(  ) 
    player.wakeupall(  ) 
    pool.clear_assets(  ) 
    pool.clear_memory(  ) 
    pool.clear_prefabs(  ) 
    pool.export_prefabs(  ) 
    pool.fill_prefabs(  ) 
    pool.print_arraypool(  ) 
    pool.print_assets(  ) 
    pool.print_memory(  ) 
    pool.print_prefabs(  ) 
    profile.flush_analytics(  ) 
    profile.start(  ) 
    profile.stop(  ) 
    render.print_global_entities(  ) Print off count of global building entities on the server
    render.tree_entities(  ) 
    server.backup(  ) Backup server folder
    server.broadcastplayvideo(  ) 
    server.cheatreport(  ) 
    server.combatlog(  ) Get the player combat log
    server.combatlog_outgoing(  ) Get the player combat log, only showing outgoing damage
    server.fps(  ) 
    server.listtoolcupboards(  ) Prints all the Tool Cupboards on the server
    server.listvendingmachines(  ) Prints all the vending machines on the server
    server.netprotocol(  ) 
    server.packetlog(  ) 
    server.playerlistpos(  ) Prints the position of all players on the server
    server.printdecryptqueue(  ) 
    server.printeyes(  ) Print the current player eyes.
    server.printpos(  ) Print the current player position.
    server.printreadqueue(  ) 
    server.printrot(  ) Print the current player rotation.
    server.printwritequeue(  ) 
    server.readcfg(  ) 
    server.resetserveremoji(  ) Rescans the serveremoji folder, note that clients will need to reconnect to get the latest emoji
    server.rpclog(  ) 
    server.save(  ) Force save the current game
    server.sendnetworkupdate(  ) Send network update for all players
    server.setshowholstereditems(  ) Show holstered items on player bodies
    server.snapshot(  ) This sends a snapshot of all the entities in the client's pvs. This is mostly redundant, but we request this when the client starts recording a demo.. so they get all the information.
    server.start(  ) Starts a server
    server.stop(  ) Stops a server
    server.writecfg(  ) Writes config files
    spawn.cargoshipevent(  ) 
    spawn.fill_groups(  ) 
    spawn.fill_individuals(  ) 
    spawn.fill_populations(  ) 
    spawn.report(  ) 
    spawn.scalars(  ) 
    stability.refresh_stability(  ) 
    supply.call(  ) 
    supply.drop(  ) 
    system.cpu_affinity(  ) 
    system.cpu_priority(  ) 
    vehicle.autohover(  ) 
    vehicle.boatdriftinfo(  ) Print out boat drift status for all boats
    vehicle.fixcars(  ) 
    vehicle.killboats(  ) 
    vehicle.killcars(  ) 
    vehicle.killdrones(  ) 
    vehicle.killminis(  ) 
    vehicle.killscraphelis(  ) 
    vehicle.killtrains(  ) 
    vehicle.stop_all_trains(  ) 
    vehicle.swapseats(  ) 
    voice.togglevoicerangeboost(  ) Enabled/disables voice range boost for a player eg. ToggleVoiceRangeBoost sam 1
    weather.load(  ) 
    weather.report(  ) 
    weather.reset(  ) 
    workshop.print_approved_skins(  ) 
    world.monuments(  ) 
    world.renderlabs(  ) Renders a PNG of the current map's underwater labs, for a specific floor
    world.rendermap(  ) Renders a high resolution PNG of the current map
    world.rendertunnels(  ) Renders a PNG of the current map's tunnel network
    xmas.refill(  ) 
    cui.cui_test(  ) 
    cui.cui_test_update(  ) 
    cui.endtest(  ) 
    global.dump(  ) 
    global.steamrelayinit(  ) 
    global.steamstatus(  ) 
    analytics.pending_analytics(  ) 
    growableentity.growall(  ) 
    meta.add(  ) add <convar> <amount> - adds amount to convar
    note.update(  ) 
    relationshipmanager.acceptinvite(  ) 
    relationshipmanager.addtoteam(  ) 
    relationshipmanager.fakeinvite(  ) 
    relationshipmanager.kickmember(  ) 
    relationshipmanager.leaveteam(  ) 
    relationshipmanager.promote(  ) 
    relationshipmanager.rejectinvite(  ) 
    relationshipmanager.sendinvite(  ) 
    relationshipmanager.sleeptoggle(  ) 
    relationshipmanager.trycreateteam(  ) 
    relationshipmanager.wipe_all_contacts(  ) 
    relationshipmanager.wipecontacts(  ) 
    ridablehorse.sethorsebreed(  ) 
    santasleigh.drop(  ) 
    telephonemanager.printallphones(  ) 
    wipetimer.printtimezones(  ) 
    wipetimer.printwipe(  ) 
    ziplinelaunchpoint.report(  )

    RustAdmin

    Online Rcon tool by Facepunch

    Wipe

    A wipe will keep the Rust+ data intact.

    Map Wipe

    Full Wipe

    Automated Wipe

    Random Seed

    Install Oxide

    Install Oxide addons

    RCON

    Send RCON commands:

    Essential RCON Commands

    Rust Settings

    A complete list can be gathered by typing find . into Rust Rcon

    Last updated: 19/11/23

    Variables

    Commands

    https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server
    https://www.rustadmin.com/
    https://facepunch.github.io/webrcon/
    cron
    http://oxidemod.org/resources/rusty-server-rcon-administration-tool.53/
    https://www.rustadmin.com/
    http://facepunch.github.io/webrcon/#/home
    lutris/docs/steam.rst at master · lutris/lutrisGitHub
    Logo