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...
Many game servers require start parameters, these are command-line options that are set with the server executable when the server starts.
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.
Parms variable
Executable
startparameters="-game nmrih"
./srcds_run -game nmrih
7 Days to Die
Gold Source Servers
Using 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 .
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.
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.
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.
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 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.
Relative to your installation directory, config files are located in:
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.
_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
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 are not encrypted, but a place to store sensitive info away from other configs.
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.
Browse to the config-lgsm
directory
Use ls
to list the directory contents and find the name of your instance.cfg.
Use cat
or nano
to see the contents of _default.cfg
.
Copy the individual settings you want to change to instance.cfg
Browse to the config-lgsm
directory
Use ls
to list the directory contents.
Use cat
or nano
to see the contents of _default.cfg
.
Copy any settings you want to apply to all instances to common.cfg
.
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:
User docs:
Dev Docs:
and Game Server Configs are different. One is the config for LinuxGSM itself and the other is for the game server instance.
Whenever possible, LinuxGSM uses a custom name for configuration files that contains the ${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.
Game servers have many different ways of managing settings. Some are set within , while some are set within a configuration file.
To get started is to visit and pick a server to install. Follow the simple step-by-step guide to install your game server on Linux.
The section will help you understand how to configure both LinuxGSM and the game server.
LinuxGSM Configs and are different. One is the config for LinuxGSM itself and the other is for the game server instance.
An understanding of how LinuxGSM handles instances helps.
This configuration is useful for .
systemd is the default init system for most modern distros.
You need to create a service file in /etc/systemd/system/
Example ts3server.service
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
monitor
commandAfter a reboot, any game server that has a "started" status will be started on boot. Servers that were manually stopped will remain stopped.
start
commandStart a game server unconditionally, even if you manually stop a server.
rc.local
rc.local is another method to run scripts on boot. Any commands added to the rc.local file will run on boot.
To automate LinuxGSM you can set scheduled tasks using cronjobs, to run any command at any given time.
Commonly used scheduled tasks are:
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.
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.
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.
Below is a list of types of data collected
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
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 LinuxGSM handles IP addresses
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.
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.
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.
Create a new user with a home directory.
Repeat the standard installation process using this new user.
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.
Most but not all game servers work with this method
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.
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.cfg
will be created . These new configs will need to be altered with new ports, hostname and any other settings that are required.
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.
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.
Standard: ./gameserver monitor
Short: ./gameserver m
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.
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 .
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
.
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.
./gameserver start
./gameserver stop
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
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.
To learn more, see and .
To learn more, see
Automatically check for updates
Automatically check for server crash and restart if needed
Automatically keep LinuxGSM up to date
Automatically restart the server at a given time
Automatically update and restart the server
If you are not used to setting up cronjobs you can use as a great reference to get started.
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.
The collected data is publicly available to view in a dashboard on
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 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.
Make sure you understand basic .
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 .
You should be familiar with how work.
You need to understand how ports work in order to avoid port overlapping, otherwise, your new instances won't start. Useful resource: .
If you run multiple game servers you will need to alter ports. Ensure you are aware of how to manage .
Monitor first checks that the server process or session is running. If it is, it will then attempt to query the server using or . 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.
Monitor is designed to be and automated task, using to allow a game server to be frequently checked.
To learn more about automation, see .
To be notified when a server fails alert notifications can be setup , see .
Will start the server in a session allowing the server to run in the background.
Stop will attempt a of a game server. Failing this stop will kill the tmux session.
Game Server
User
LinuxGSM Script location
Garry’s Mod
gmodserver
/home/gmodserver/gmodserver
Garry’s Mod
gmodserver-slender
/home/gmodserver-slender/gmodserver
Counter-Strike: Global Offensive
csgoserver
/home/csgoserver/csgoserver
Counter-Strike: Global Offensive
csgoserver-zombies
/home/csgoserver-zombies/csgoserver
Game
User
LinuxGSM Script location
notes
Garry’s Mod
gmodserver
/home/gmodserver/gmodserver
1.2.3.4:27015
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
Command Name
Command
Short
./gameserver install
./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
./rustserver full-wipe
./rustserver fw
./rustserver map-wipe
./rustserver mw
Command Name
Command
Short
./gameserver developer
./gameserver dev
Detect Dependencies
./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
Standard: ./gameserver check-update
Short: ./gameserver cu
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.
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.
Standard: ./gameserver validate
Short: ./gameserver v
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.
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.
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.
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
Make your script executable:
chmod +x gameserver
Run the install command: ./gameserver install
or ./gameserver auto-install
to bypass any prompts.
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
.
If dependencies are not installed the server may not start.
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.
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.
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.
./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.
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.
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.
A can be set to run check-update
at any given time.
Ensure that an is configured so you are alerted to any updates
is a great resource to generate cronjobs.
This is a command for game servers using only.
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.
A can be set to run update
at any given time.
is a great resource to generate cronjobs.
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
If trying to run as root
LinuxGSM will fail to run. See .
If there are still issues downloading try the option.
Should this fail, your server may not have DNS lookup correctly configured.
The details
command allows access to various useful information about the game server. Details are gathered from configs, parameters and server queries.
Standard: ./gameserver details
Short: ./gameserver dt
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
Server IP
Server Ports
Passwords
Config File
Backups
Server parameters
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
./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.
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.
Standard: ./gameserver force-update
Short: ./gameserver fu
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.
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.
Standard: ./gameserver backup
Short: ./gameserver b
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.
By default backups are saved in the backup
directory.
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.
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.
This is a command for game servers using only.
Alter these three settings by editing .
Automated backups can be set using . It is recommended that frequently you backup and your retention policy to prevent your server is carefully considered to prevent storage issues.
see
You can change this using the and the property backupdir
.
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 similar to rsync however can easily sync to cloud storage solutions.
The debug
command is used to start your server directly in your current terminal (outside of () 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.
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:
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.
All Source engine servers
Standard: ./gameserver fastdl
Short: ./gameserver fd
Maps (.bsp)
Materials (.vtf, .vmt, .png, .svg)
Models (.vtx, .vvd, .mdl, .phy)
Particles (.pcf)
Sounds (.wav, .mp3, .ogg)
Fonts (.otf, .ttf)
Images (.png, .svg)
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.
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
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.
Don't Starve Together server requires an Authentication Token.
Enter a friendly name for your server and copy the access token and paste it into the file cluster_token.txt
.
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:
There are two types of shards:
master shard: the shard you enter when joining the server / the shard/server you have to join (one per cluster)
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.
Different Maps require different system requirements.
TheIsland: 7GB RAM
Genesis 2: 12GB RAM
The following options must come under the [ServerSettings]
section of GameUserSettings.ini
:
The following options must come under the [SessionSettings]
section of GameUserSettings.ini
.
The following options must come under the [/Script/Engine.GameSession]
section of GameUserSettings.ini
.
The section [ModInstaller]
handles each extra Steam Workshop Mods/Maps/TC IDs in the Game.ini
.
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.
Be careful not to accidentally overwrite a save file if changing maps or using a custom save location.
If altsaveddirectoryname
is TheIsland
the save is located will be:
TheIsland
TheCenter
ScorchedEarth_P
Ragnarok
Aberration_P
Extinction
Valguero_P
Genesis
CrystalIsles
Gen2
LostIsland
Fjordur
PGARK
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.
Here is a simple mod to get started:
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.
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.
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.
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
.
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.
Skeleton can be used alongside version control software like 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.
This is a command for only.
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
.
The new url will need to be added to the
Go to the Klei website .
After logging into your account to get your game server authentication token.
Take a look at to get a general idea of how to create multiple game servers.
An example of GameUserSettings.ini can be found .
Below is a list of common Command-Line parameters. For a complete list see the .
Below is a list of common Configuration settings. For a complete list see the .
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 .
-AutoManagedMods
is the required to add workshop support and is added to the start parameters by default.
For more config options for WBUI see this .
To get individual item IDs from collections you can use the .
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.
Firstly, set up .
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.
SessionName
-MultiHome
Enables multihoming.
-Port
-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>
-insecure
Disable Valve Anti-Cheat (VAC) system.
-MapModID=
?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.
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
f True
, enables RCON, needs RCONPort=<TCP_PORT>
and ServerAdminPassword=<admin_password>
to work
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=
Minecraft: Java Edition required Java 16
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.
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.
Links should not have http://
or an ending/
.
Gamemode is changed by editing start parameters in the LinuxGSM config file.
Garry's Mod does not require an API/Auth Key anymore.
Some Garry's Mod addons like TTT use content from other games. To do this the content will need to be "mounted".
All source engine games should be mountable.
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.
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.
Allows to specify a custom directory name for server world-save. Usually used to manage clusters, read more about it in the section.
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 .
If True
, disables and enables
Other game modes like Zombie Survival can be found on the .
For Garry's Mod, add the collection ID in using wscollectionid
setting. This will download the collection when the server starts.
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.
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.
Players on the Epic Store will not be able to download files hosted with the Steam Workshop.
Workshop content is added in LinuxServer-KFEngine.ini
in the OnlineSubsystemSteamworks.KFWorkshopSteamworks
section
Ensure the game server is stopped before editing the file to prevent it being overwritten.
This will only work for Workshop items that the server downloads itself, that are listed in the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section as described above.
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.
Find the section [IpDrv.TcpNetDriver] in the PCServerEngine.ini config file.
Add the line "DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload" to that section. If there are other "DownloadManagers=" lines, make sure this one is the first.
Do not delete anything from this section, except (optionally) other DownloadManagers= lines.
To enable server query certain permissions have to be enabled or the guest server group.
Virtual Server
b_virtualserver_info_view
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
b_virtualserver_channelgroup_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 querymode
from 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
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.
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.
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.
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.
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[]=
.
Do not use 127.0.0.1 as the IP address.
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.
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.
Here is a popular mod to get started:
Create a directory called @cba_a3
in serverfiles/mods
Copy the contents of the mod archive to the @cba_a3
directory.
Remember to check you have the correct user permissions once uploaded
Copy the contents of the @cba_a3/keys
directory to the server keys directory.
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.
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
For a collection of user created resources, head over to our web page which serves as a place for hosting our community's resources.
See .
Information about installing TeamSpeak 3 with MariaDB can be found .
Additional information can be found .
Create a using LinuxGSM ./linuxgsm.sh arma3server
. This will become the headless client instance and rename the new instance to arma3server-hc
.
Arma 3 mods are managed using the or manual downloads.
Firstly, you need to select the mods you want to use from the .
Download the Mod using the workshop id is 450814997
Add @cba_a3 to the mods=""
setting in the .
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.
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 :
Useful settings include:
Specifying world generation settings is a fairly simple task when creating a new world.
The steps to do so are as follows:
Delete any existing world data
Modify map-gen-settings.json
Use the Factorio executable to generate a world with that json
Run Factorio as normal
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.
Once complete you will need to generate your World. Go back to the serverfiles
directory and run the Factorio binary.
The easiest way that I've found to generate a world with the RSO mod (and add mods in general) is as follows:
Startup Factorio on a client and install the RSO mod
Start generation of a new world and configure mod generation settings
Grab the mod files and mod-settings.dat
Transfer them to the server
Delete or rename any previous worlds
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.
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.
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)
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
Download the OpenSpy Patch to get the server browser working.
This is a list of the valid gametypes:
Name
GameType
Deathmatch
UTGame.UTDeathmatch
Capture the Flag
UTGameContent.UTCTFGame_Content
Warfare
UTGameContent.UTOnslaughtGame_Content
Vehicle Capture the Flag
UTGameContent.UTVehicleCTFGame_Content
Team Deathmatch
UTGame.UTTeamGame
Duel
UTGame.UTDuelGame
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
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
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)
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.
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
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.
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:
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.
This guide is not designed to be an in-depth guide to networking, instead focusing on parts relevant to game servers.
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.
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.
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.
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.
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
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.
Unless a specific IP address is required the game server IP can be set to 0.0.0.0.
Game Port Default: 26000 UDP
As written in the FAQ, the default Configuration files are located in:
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
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.pk3
in /home/xonotic/server1/data/
server.cfg
: Add sv_curl_defaulturl="http://xonotic.foo.bar"
Put foo.pk3
in the HTTP Root Folder to make it accessable via http://xonotic.foo.bar/foo.pk3
Every Server cvar can be overwritten in an starting argument, but it's recommended to setup as much as possible in server.cfg
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.
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.
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.
LinuxGSM allows you to see the ports your game server is using with the ./gameserver details
command.
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
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).
Configuration for Factorio is split between both the and .
All other settings are located in the Factorio .
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.
In map-gen-settings.json
, the can be:
I prefer the added customisation of the to the built-in generation.
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.
Unreal Tournament 3 requires using master server to get it running. Please ensure you have created a login to allow this server to work.
All servers require a unique login to allow a server to show on the 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.
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.
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 .
All computers will have some sort of physical or virtual (ethernet, fiber optic, wi-fi) to connect to a network. On Linux, you can see your server's interfaces by using the following command.
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 that is specifically designed for game servers. However other solutions may work.
A list is currently located in . with the following server parameters
Look at for more infos about Custom Map Hosting
Network Address Translation (NAT) is a method of remapping an IP address into another by modifying information.
Depending upon which game server is being used, you can set game server ports within your or config file.
Default ports are set in either the or .
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.
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
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
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.
Run the following command to access console:
Standard: ./gameserver console
Short: ./gameserver c
Answer y at the prompt.
To exit the console: Press CTRL + b, then, press d
Take your time as this can be confusing at first.
Minimum RAM: 9GB, Increases depending upon map size
CPU: Dual-core 3.4GHz
Bandwidth: 10mbps upload
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.
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:
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.
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.
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.
Once you have created the channel set the channeltag in the script without using hash #
.
LinuxGSM allows alerts to be received using various methods, should the game server require your attention.
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.
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=""
.
To enable IFTTT you will need to setup a Webhooks integration.
Login and connect the Webhooks integration
Select Documentation
to get your IFTTT API key.
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.
Create a New applet
Select the Webhooks
service
Choose Receive a web request
Enter your Event Name
and click Create Trigger
Select an action service.
Give the applet a name and save.
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.
ut-server-436.tar (Latest Official Version)
UTBonusPack.zip
UTBonusPack2.zip (maps only)
UTInoxxPack.zip
UTBonusPack4.zip
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.
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.
Select New Group
within Telegram.
Name your group.
Add your bot by searching its @Username
.
Open group info.
Choose to add members.
Search and select your bot by its @Username
.
Activate Your Bot: Interact with your bot in Telegram.
Form the getUpdates URL: Replace the placeholder with your bot's token in https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates
.
Visit the URL: Use a web browser to access the URL.
Locate the Chat ID: In the JSON response, find the id
field under the chat
object.
Note: The Chat ID for private chats is a positive number and for a group, it's a negative number.
Verify that Topics are enabled for your group by checking the group's settings.
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
.
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.
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.
Official Server Resources
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.
Official Server Resources
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
Pressing CTRL+c
while in console will kill the session, stopping the game server.
Server RCON administration tool
Using it is possible to automate your server wipes. The below example will wipe the server every Sunday night at midnight.
Rusty:
Rustadmin: (supports both rconweb=1 and rconweb=0)
Facepunch web tool:
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.
Turn on discord alert and enter the URL in to the . (~/lgsm/config-lgsm/<gameserver>/common.cfg
)
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.
To enable Pushbullet alerts an Access Token needs to be generated. Access Tokens are available from Pushbullet setting found .
Once you have created a token insert it in to you .
Visit to generate a channel.
Alert settings can be changed in
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.
Visit
Paste the API key into .
Follow the on how to create an incoming webhook.
Turn on Rocket.chat alerts and copy the URL into the . (~/lgsm/config-lgsm/<gameserver>/common.cfg
)
OldUnreal-UTPatch469a-Linux.tar.bz2 ()
is an instant messaging app that provides a powerful API that enables applications to send messages through bots. LinuxGSM leverages the to dispatch alerts to users, enhancing monitoring and management of gaming servers.
Initiate Bot Creation: Chat with on Telegram to start creating your bot. Begin the conversation by clicking "Start".
Configure LinuxGSM: Fill in the API token into your as follows:
Update LinuxGSM Config: Place your Chat ID in the file.
Repeat to retrieve the thread ID by looking for the message_thread_id
field in the message
object.
Update the telegramthreadid
field in the with the thread ID.
also contains details of JRE versions.
Further Reading
is a cloud-based set of proprietary team collaboration software tools and online services.
Follow slack's guide to setting up an .
Turn on slack alerts and enter the URL in to the . (~/lgsm/config-lgsm/<gameserver>/common.cfg
)
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.
Visit to create a new application.
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 .
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: .
First, gather the map or collection ID. To do this find the workshop map or collection you want to use on the 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 .
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
.
For CSGO, edit these lines in your
Distro
JRE 6
JRE 7
JRE 8
JRE 11
JRE 13
JRE 16
JRE 17
CentOS 7
YES
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
Arms Race
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
Arms Race
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
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.
jq
allows LinuxGSM to filter json files to extract specific useful data.
Distro
Version
Ubuntu LTS 16.04
1.4
Ubuntu LTS 18.04
1.5
Debian 8
1.4
Debian 9
1.5
Debian 10
1.5
CentOS 7
1.6
CentOS 8
1.5
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
${systemdir}/data/darkrp_logs
${systemdir}/data/ulx_logs
Note: ${systemdir}
designates the location of your game server installation
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)
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.
Connect to a server as root.
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 ?
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 -
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
TODO
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.
tmux 1.8 is installed on CentOS 7 by default see guide below to installed a newer version
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
.
Install Ghettoforge with the following command.
Install tmux using the Ghettoforge repo.
Once installed restart the server to complete the upgrade.
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.
If you already have an older version of nodejs installed or be having issues with node dependencies. It may be worth reinstalling Node.js.
Work in progress
Installing nodejs can be problematic, however, using the below should work well.
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.
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.
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.
CoD4x has its own update functionality. It will automatically check for updates and does not require LinuxGSM to check for updates.
CoD4x game servers (since version 17.6) require a server token to be listed on the CoD4x master server.
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.
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:
Game Server Login Token is a new system by Valve for managing game servers.
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.
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.
start parameter
+sv_setsteamaccount [token]
game server config
sv_setsteamaccount [token]
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.
SteamCMD requires a login to download some game servers.
The majority of game servers using SteamCMD only require an anonymous login. LinuxGSM will not require any configuration if this is the case.
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 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 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.
Username and password - No Steam Guard
Username and password - Steam Guard via Email
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.
Many admins who have tried, reported a local server does not appear on the LAN tab in the steam browser.
Connect using the console command.
If the port is 27015, then you can just use : connect IP
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.
In the fn_parms
section, add +sv_lan 1
and make sure you replace -ip ${ip}
with -ip 0.0.0.0
Make sure your server main port listens to one of these IP or IP ranges: 4242 ; 26900-26905 ; 27015-27020 ; 27215
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.
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
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.
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.
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.
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.
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.
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.
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.
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
22.04 LTS
Jammy Jellyfish
2022-04-21
2027-04
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.
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.
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.
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.
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.
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.
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.
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.
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.
Version
Status
Code name
Release date
Security support until
LTS until
10
oldoldstable
Buster
6 July 2019
2022
2024
11
oldstable
Bullseye
14 August 2021
12
stable
Bookworm
10 June 2023
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
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.
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
8
2019-09-24
2021-12-31
Stream 8
2019-09-24
2024-05-31
Stream 9
2021-12-03
2027-05-31
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.
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.
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.
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.
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.
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.
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.
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.
LinuxGSM adds workshop pre-configuration to game server scripts when available.
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
Do not share your private API key.
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
.
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.
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
To use this custom map you will need to add it to your mapcycle and if required, your default map
Create MapCyle.txt
and add the custom map to your mapcycle.
Once the server is restarted the custom map should be available on your game server.
A Linux server's own email solution can be used to receive alerts about LinuxGSM.
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.
Mailgun 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.
Information for Sven Co-op servers
Official Resources
The discord contains information for Sven Co-op under the information tab including mapping guides, server config information, and angelscript documentation, among other things.
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
Symlinks create multiple paths to a file or directory and are useful for saving space or having 1 set of files for multiple installs.
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.
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.
Not enough disk space.
Missing content_log.txt if you have experienced this error and have a log please let us know.
Not enough disk space.
Connection issue with steam, you will need to wait for the steam servers to recover.
Missing content_log.txt if you have experienced this error and have a log please let us know.
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.
Missing update files
Corrupt update files.
Missing content_log.txt if you have it please let us know.
No connection to content servers.
To get more info and output see the SteamCMD logs in ~/.local/share/Steam/logs
or ~/.steam/logs
. The most useful log is content_log.txt
that will provide more information on errors.
If you have experienced an error we don't have logs for please provide them to us to assist in diagnosing the issue.
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
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.
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.
Did you create a dedicated user for your server?
Are you running the script as the right user? Check command: whoami
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
after dpkg --add-architecture i386
?
If some dependencies are not available, did you check your /etc/apt/sources.list? (Debian based and apt only)
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.
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.
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
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?
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).
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.
./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
?
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.
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.
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.
Remember to consider the best place to post your issue and search the internet for a solution before posting.
The website and GitHub wiki is a useful resource for various LinuxGSM related topics.
LinuxGSM has a discord server where you can get general support for LinuxGSM related stuff.
LinuxGSM has a GitHub issues page where you can submit any bugs and feature suggestions.
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.
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.
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.
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.
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.
Getting rid of bad practice
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:
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
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.
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.
Guides that are used on multiple servers
LinuxGSM uses to run servers in the background so the server instance is not terminated when you close a terminal session.
Tmux is a key component of LinuxGSM and replaced 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 feature.
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.
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 requires a JavaScript runtime environment installed to work. Use the following instructions to install Node.js.
To generate a token visit .
is possible with CoD4 to allow custom maps and mods to be hosted on a webserver.
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.
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 .
Tower Unite has a command within its
For further information, see this useful blog post:
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 .
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 .
Some branches require a password. This can be done by entering a password in thebetapassword
setting in your .
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 .
It is recommended that you just for the server.
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 .
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.
For more info visit .
Make sure your server actually works and is reachable on LAN, otherwise what you need is rather first.
As 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.
Edit your using your files
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.
Blocked or Misconfigured : Ensure that the ports are correctly set up and not blocked. To verify the connection, try connecting directly to the server.
in the future of CentOS have occurred.
Many Steam games support the . 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 server.
Some game servers require a Steam API key to access Workshop content. To get this key visit the and follow the instructions.
Custom Mods and Maps are supported in Insurgency: Sandstorm via . Please use this basic guide to get started using custom mods more in-depth information can be found at
This guide will show you how to install the custom map as an example
Add the -Mods
parameter to your game server .
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.
If you want the custom map to be the default edit your
To enable email alerts you will need to add an email address to the .
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.
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 the Steam download didn't work as intended, did you retry it, or try the command? Maybe your connection to Steam servers is faulty.
Did you make sure that a firewall doesn't prevent the download from working? Check command: iptables -L
; See
Note: (example) ./gameserver details
will provide you with relevant information and save you some time. See
Are ports already used by another service? See and
Is this a known tmux issue? See
Did you try to start with the debug
command? See
What does the logs say? See [
What does the logs say? See [
Did you try to start with the debug
command? See
Did you wrongly append start parameters? See
Does the user have the right permissions on its directories? If this is the case, a corresponding error should be displayed. 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
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.
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 [
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.
To learn where and how to get support, see:
Please also check that the server can run on Linux before submitting. Servers that require WINE will not be considered. You can use to find the server and check Linux comparability.
If you find a bug or have a suggestion please submit a bug report on 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.
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 . Also take into consideration any mods, addons, backups, etc you might need.
For more information, see
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 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.
To learn more about this, see
Are you behind ? Double-check your rules, and try to disable it for testing
Are the ports you're using free? See
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 .
is also a great source to find this information.
glibc version history available on .
Reason
Error! App '90' state is 0x10E after update job.
Hex
0x10E
Decimal/StateFlags
270
Reason
Not enough disk quota
Hex
0x202
Decimal/StateFlags
514
Reason
Hex
0x206
Decimal/StateFlags
518
​Title
​Title
Reason
​Not enough disk space
Hex
0x212
Decimal/StateFlags
530
Reason
Connection issue
Hex
0x402
Decimal/StateFlags
1026
Reason
Hex
0x602
Decimal/StateFlags
1538
Reason
Disk write failure
Hex
0x606
Decimal/StateFlags
1542
Reason
Missing update files
Hex
0x626
Decimal/StateFlags
Reason
Corrupt update files
Hex
0x6a6
Decimal/StateFlags
Reason
Hex
0x2
Decimal/StateFlags
2
Reason
No connection to content servers
Reason 2
Received 401 (Unauthorized) HTTP response for depot 11
Hex
0x6
Decimal/StateFlags
6
StateInvalid
0
StateUninstalled
1
StateUpdateRequired
2
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
Distro
glibc
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
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.