Server Configuration/de

Windows
Visual C++ Redistributable for Visual Studio 2013 vc_redist.x64.exe

Visual C++ Redistributable for Visual Studio 2015 vc_redist.x64.exe

DirectX End-User Runtimes (June 2010)

Linux
GLIBC 2.17 oder neuer.

Windows
1. Lade dir SteamCMD herunter und installiere es in einem beliebigen Ordner.

2. Erstelle eine BAT-Datei namens "update-server.bat" mit dem folgenden Inhalt.Ersetzte hierbei die markierten Werte mit den, die zu deinem System passen. SET STEAMCMD="//Pfad zum Programm steamcmd.exe" %STEAMCMD% +login anonymous +force_install_dir "//Pfad zum Ordner wo der Server installiert werden soll" +app_update 403240 validate 3. Führe die BAT-Datei aus und lass das Programm durchlaufen, danach kannst du das Fenster schließen.

4. Gehe in den Ordner, in dem der Server installiert werden sollte und erstelle eine weiter BAT-Datei namens "start.bat", mit der du den Server in Zukunft starten kannst, mit folgendem Inhalt: start SquadServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log Somit hast du deinen Server fertig installiert, damit andere Spieler diesen Server betreten können musst du aber noch einige Netzwerk-Einstellungen machen, die hierfür nötigen Port-Nummern kannst du dem Part "Zu öffnende Ports" entnehmen.

Weiterführende Infos bezüglich Setup und Konfiguration des Servers findest du in den jeweiligen Abschnitten dieser Seite.

Linux
Diese Anleitung setzt voraus, dass du eine Linux-Distribution mit 64-bit Architektur besitzt.

Alles was in diesem Guide auf ein '$' folgt ist ein Command und muss in einem Terminal ausgeführt werden.

Um dich mit einen entfernten Server zu verbinden, empfiehlt es sich PUTTY. zu benutzen. Natürlich kann aber auch jedes andere Programm, was sich hierfür eignet genutzt werden.

Installation des Servers:

1. Logge dich als root ein und installiere das Programm "Screen" und eine Bibliothek die für das Programm SteamCMD benötigt wird. Debian/Ubuntu: $apt-get install screen $apt-get install lib32gcc1 CentOS: $yum -y install screen $yum -y install glibc libstdc++ $yum -y install glibc.i686 libstdc++.i686 2. Erstelle einen Benutzer über den die Squad-Server laufen soll. $adduser username Wähle in der darauffolgenden Abfrage ein Password. Die darauffolgenden Abfragen kannst du entweder ausfüllen oder einfach mit Enter überspringen.

3. Log on to the new user account: ssh username@localhost and then the password you selected.

4. Erstelle ein Verzeichnis mit z.B dem Namen SquadServer

$mkdir SquadServer 5. Öffne den Ordner $cd SquadServer 6. Erstelle einen weiteren Ordner für die Server-Instanz $mkdir server1 7. Lade dir SteamCMD herunter $wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

Sollte es Probleme mit der oben genannten Datei geben gibt es hier einen alternativen Download:

$wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz

8. Entpacke SteamCMD $tar zxvf steamcmd_linux.tar.gz 9. Erstelle ein Script um den Server zu installieren bzw. später auch upzudaten. $nano updateserver1.sh Damit öffnest du einen Texteditor.

Füge dann folgenden Inhalt ein: ./steamcmd.sh +login anonymous +force_install_dir server1 +app_update 403240 validate Speichere die Datei indem du zuerst Strg+O drückst und dann Enter, zum schließen drücke Strg+X.

10. Markiere die Datei als ausführbare Datei $chmod +x * 11. Installiere den Server mit folgendem Kommando (mit diesem Kommando kannst du später auch den Server updaten) $./updateserver1.sh 12. Wenn die Meldung erscheint, dass das Programm installiert wurde kannst du SteamCMD mit folgendem Befehl verlassen. $exit 13. Erstelle ein Script, mit dem du den Server starten kannst. $nano startserver1.sh 14. Füge die folgenden Zeilen in die Datei ein: cd server1; ./SquadServer.sh Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=NONE Speichere die Datei indem du zuerst Strg+O drückst und dann Enter, zum schließen drücke Strg+X.

15. Markiere das gerade erstellte Script und den Ordner als ausführbar.

$chmod +x startserver1.sh   $chmod +x server1 16. Erstelle und öffne einen neuen Screen. $screen -dmS server1 $screen -r server1 17. Starte den Server $./startserver1.sh Mithilfe von Screen läuft der Server auch weiter, selbst wenn du deine SSH-Verbindung trennst.

Bearbeiten von Config-Datein:

1. Logge doch mit deinem Account ein, auf dem der Server läuft und wechsel in den Ordner in dem sich die Server-Configs befinden. $ cd SquadServer $ cd server1 $ cd Squad $ cd ServerConfig 2. Öffne die zu bearbeitende Datei mit Nano. $nano Server.cfg Bearbeite die Datei, wenn du fertig bist kannst du speichern indem du Strg+O drückst und dann Enter. Nano kannst du dann mit Strg+X verlassen.

Stoppen des Servers:

1. Logge dich mit deinem Account ein, auf dem der Server läuft und öffne den Screen. $screen -r server1 2. In dem Screen siehst du den Log des Servers mit der Tastenkombination Strg+C kannst du den Server nun beenden, erneut starten kannst du ihn mit dem unter Punkt 17 gezeigten Befehl.

Docker
Wenn auf deinem Server Docker läufst und du es benutzt kannst den Server mit diesem Befehl einfach installieren: docker run -d --net=host --name=squad-dedicated cm2network/squad Der Container updatet das Spiel bei jedem Start, somit musst du den Server bei einem neuen Versions-Release nur neustarten.

Die Config The config is located here: /home/steam/squad-dedicated/Squad/ServerConfig/

When a Docker container is destroyed, it’s entire file system is destroyed too. Instead of editing files on the container, its a good idea to use Docker Volumes, the benefit of this is that the data is persistent, if you remove the container and create a new one from the image you wont need to amend any config files. docker run -d --net=host --volume=/:/home/steam/squad-dedicated --name=squad-dedicated cm2network/squad
 * Docker Volumes

If you want to launch another instance you can increment the environment variables, using -e (--env): docker run -d --net=host -e PORT=7788 -e QUERYPORT=27166 -e RCONPORT=21115 --name=squad-dedicated2 cm2network/squad Make sure you dont forget to update Rcon.cfg with the new port (the config defaults to 21114).
 * Multiple Instances

You can find the associated Docker Hub page here: https://hub.docker.com/r/cm2network/squad/

LINUX
The important things to create different instance inside your server are these:

- Duplicate the directory and rename it.

- After that, edits the config files and set on the Rcon.cfg a port 10 numbers later the one of the previous instance.

EXAMPLE:

Server1 Rcon Port: 21114

Server2 Rcon Port: 21124

- Keep on your mind to change the port of connection in the start.sh script to avoid other problems.

LinuX
./steamcmd.sh +login anonymous +force_install_dir server1 +app_update 403240 -beta NAMEOFTHEBETA -betapassword PASSWORD validate +quit

Windows
SET STEAMCMD="C:\steamcmd\steamcmd.exe" %STEAMCMD% +login anonymous +force_install_dir "C:\servers\squad_server" +app_update 403240 -beta NAMEOFTHEBETA -betapassword PASSWORD validate +quit

Tips
Make sure Steam Client is closed. If its open Squad Server will not run. For support issues related to server hosting please visit our Discord Server http://discord.me/squadhosting

(Windows) Allowing the SquadServer.exe files through the firewall will save you headaches.

When hosting a Squad server and playing Squad on the same PC, the server must be started before logging on to Steam and launching Squad. Otherwise it won't work.

Ports to Open
Port = Game port = UDP (Default 7787, 7788 UDP) Need to be open on Windows firewall and router.

QueryPort = Steam query port = UDP (Default 27165 UDP)

QueryPort+1 = Second Steam query port = UDP and TCP (Default 27165, 27166, 27167 UDP and TCP)

RCON Port = UDP and TCP (Default 21114) must be open.

Command Line
All of the following parameters can be added to your starting command line for additional configuration. Be careful to avoid typos when adding these!

MULTIHOME = The IP Address you want to bind the server to. (Use only if you have multiple IPs on your server) (Optional)'  Port = Game port'

QueryPort = Steam query port

RANDOM = Randomize map rotation (ALWAYS, FIRST, NONE) (Optional)

FIXEDMAXPLAYERS = Player count cannot go higher than this (Optional)

FIXEDMAXTICKRATE = MAX server tickrate (Optional)

PREFERPREPROCESSOR = CPU Affinity (Optional) UNTESTED

-log = Display a log window on the server (Optional)

-fullcrashdump = Save a full dump file on crash (can become quite large sometimes) (Optional)

The following line implements additional start parameters as an example. start SquadServer.exe MULTIHOME=1.2.3.4 Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 FIXEDMAXTICKRATE=50 RANDOM=ALWAYS -log

Windows
You can use the start-command allows you to set the core thread affinity for each server (if you run several servers on one machine): start /AFFINITY C /WAIT SquadServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log

Calculating AFFINITY


Open your Windows calculator.

Step 1 - Click menu icon

Step 2 - Enable "programmer" mode

Step 3 - Toggle bit keypad

Step 4 - Click until you see BYTE which corresponds to 4 core 8 threads CPU (You can select other values to correspond your CPU).

Step 5 - Click on HEX

Core thread count starts from 0, you can see which number is responsible for which core thread on the third image. 1 means core thread is selected, 0 means core thread is ignored.

Result you need is shown in "HEX", if you have all core thread selected 0-7 you will see "FF" as your result. For our /AFFINITY parameter we need then "FF" to set the core affinity to all core threads. If you want to select only core threads 4-7 (0000 1111) your result should be "F".

Linux
Linux users can also set their core affinity by using the "taskset" command in their start line. Keep in mind that core threads are zero-indexed. This means if you have 8 processor threads, you can assign cores 0-7. cd server1; taskset -c 0-3 ./SquadServer.sh Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=NONE

Files (Instanced hosts start here)
Configuration files are located in Configuration files located in this directory are Admins.cfg Bans.cfg License.cfg MapRotation.cfg Motd.cfg (optional) Rcon.cfg RemoteAdminListHosts.cfg RemoteBanListHosts.cfg Server.cfg ServerMessages.cfg

Adding Admins in Admins.cfg
Admins are now created by groups and groups are assigned to admins. You can create as many groups as you want with any types of permissions. All the permissions will be in the config file commented out. These files will not be over writeable so when we add new permissions you will need to check here or the wiki for updates. The below are just examples. Please note that it needs to be SteamId64. You can convert your ID at steamid.io/lookup/ Group=SuperAdmin:changemap,cheat,private,balance,chat,kick,ban,config,cameraman,debug,pause Group=Admin:changemap,balance,chat,kick,ban,cameraman,pause Group=Moderator:changemap,chat,kick,ban Admin=76561115695178:Moderator //Player 5 Admin=8915618948911:Moderator //Player 4 Admin=7894591951519:Admin //Player 3 Admin=7984591565611:SuperAdmin //Player 2 Admin=917236241624:SuperAdmin //Player 1 Admin=45365435431:Admin //Player 8792 A list of group permission are as follows: //// Valid access levels are as follows ////		startvote - not used ////		changemap ////		pause - Pause server gameplay ////		cheat - Use server cheat commands ////		private	- Password protect server ////		balance	- Group Ignores server team balance ////		chat - Admin chat and Server broadcast ////		kick ////		ban ////		config - Change server config ////		cameraman - Admin spectate mode ////		immune - Cannot be kicked / banned ////		manageserver - Shutdown server ////		featuretest - Any features added for testing by dev team ////		reserve - Reserve slot ////		demos - Record Demos (not working) ////		debug - show admin stats command and other debugging info ////		teamchange - No timer limits on team change ////		forceteamchange - Can issue the ForceTeamChange command ////		canseeadminchat - This group can see the admin chat and teamkill/admin-join notifications

Bans in Bans.cfg
This is where your bans will go. They need to be in the format of So an example file will look like this 76561198039509812:0 //Permanent ban for cheating 7862895148978485:1454455855 //team killing Make sure if you manually add / remove a ban that the file ends with a new line character. Each ban goes on its own line.

Map Rotation in MapRotation.cfg
If you add the general map names (such as below without a specific game mode). Our parser will do all variations of it including AAS, INS, etc. Map names can be seen from the DefaultGame.ini file. Each map entry goes on a new line. (Keep in mind that MapRotation.cfg, unlike most other Squad config files, will only be loaded at server start.) Al Basrah Belaya Chora Fool's Road Gorodok Kamdesh Kohat Kokan Logar Valley Mestia Narva Sumari Tallil Outskirts Yehorivka If you want a specifc map version you can add the below into the rotation file Al Basrah Al Basrah RAAS v1 Al Basrah Invasion v1 Al Basrah Invasion v2 Al Basrah Insurgency v1 Belaya Belaya AAS v1 Belaya AAS v2 Belaya AAS v3 Belaya RAAS v1 Belaya Invasion v1 Belaya Invasion v2 Belaya Invasion v3 Chora Chora AAS v1 Chora AAS v2 Chora RAAS v1 Chora Invasion v1 Night Chora Insurgency v1 Chora Skirmish v1 Night Fool's Road Fool's Road AAS v1 Fool's Road AAS v2 Fool's Road AAS v3 Fool's Road AAS v4 Fool's Road RAAS v1 Fool's Road Skirmish v1 Fool's Road Skirmish v2 Gorodok Gorodok AAS v1 Gorodok AAS v2 Gorodok AAS v3 Gorodok AAS v4 Gorodok RAAS v1 Gorodok RAAS v2 Gorodok Invasion v1 Gorodok Invasion v2 Gorodok Skirmish v1 Kamdesh Kamdesh AAS v1 Kamdesh RAAS v1 Kamdesh RAAS v2 Kamdesh RAAS v3 Kamdesh Invasion v1 Kamdesh Invasion v2 Kamdesh Invasion v3 Kamdesh Insurgency v1 Kamdesh Insurgency v2 Kamdesh Skirmish v1 Kohat Kohat AAS v1 Kohat AAS v2 Kohat RAAS v1 Kohat Invasion v1 Kohat Insurgency v1 Kohat Skirmish v1 Kokan Kokan AAS v1 Kokan AAS v2 Kokan RAAS v1 Kokan Invasion v1 Kokan Insurgency v1 Kokan Skirmish v1 Logar Valley Logar Valley AAS v1 Logar Valley AAS INF v1 Logar Valley RAAS v1 Logar Valley Insurgency v1 Logar Valley Insurgency v1 Night Mestia Mestia AAS v1 Mestia AAS v2 Mestia RAAS v1 Mestia Invasion v1 Mestia Invasion v2 Narva Narva AAS v1 Narva AAS v2 Narva AAS v3 Narva RAAS v1 Narva Invasion v1 Narva Invasion v2 Narva Skirmish v1 Sumari Sumari AAS v3 Sumari RAAS v1 Sumari Insurgency v1 Sumari Skirmish v1

Tallil Outskirts Tallil Outskirts AAS v1 Tallil Outskirts RAAS v1 Tallil Outskirts RAAS v2 Tallil Outskirts Invasion v1 Tallil Outskirts Skirmish v1 Tallil Outskirts Skirmish v2 Yehorivka Yehorivka AAS v1 Yehorivka AAS v2 Yehorivka AAS v3 Yehorivka AAS v5 Yehorivka RAAS v1 Yehorivka RAAS v2 Yehorivka Invasion v1 Yehorivka Invasion v2 Yehorivka Skirmish v1

Map Rotation: Add Steam-Workshop Maps
See this article: How to add one or more Steam Workshop Maps to the Squad Server

Message of the day in Motd.cfg
Motd.cfg is an optional file that can be created the ServerConfig folder that will display a small text box to each player on entering the server. This is ideal for displaying server information, simple rules, or other messages. Be mindful though that text entered into this file will not wrap in game, and will overflow out of view.

Remote Admin Lists in RemoteAdminListHosts.cfg
Each line should contain a URL to the admin file. The admin file will follow the exact same format as above. This should be used if you run multiple servers and would like to have a single admin file for all of them. If a player is listed in multiple files, their permissions will be combined.

Remote Ban Lists in RemoteBanListHosts.cfg
Each line should contain a URL to the ban file. The ban file will follow the exact same format as above. This should be used if you run multiple servers and would like to have a single admin file for all of them.

Server Configuration Settings in Server.cfg
This is the general server config file. Each variable should be on its own line. New additions will be added to this wiki. Since we do not overwrite config files you will need to manually add them to your existing server config if you wish to alter the default value. ServerName="Squad Dedicated Server" IsLANMatch=false ShouldAdvertise=true MaxPlayers=40 NumReservedSlots=0 NumPlayersDiffForTeamChanges=3 AllowTeamChanges=true PreventTeamChangeIfUnbalanced=true EnforceTeamBalance=true RejoinSquadDelayAfterKick=180 ServerMessageInterval=300 ServerPassword=Password AutoTkBanTime=1209600 TKAutoKickEnabled=true //set to false to disable autokick system, required true for licensed servers. RecordDemos=false VehicleClaimingDisabled=false VehicleKitRequirementDisabled=false AllowQA=false // Forced on for Licensed servers (Only OWI staff & qa are admins) AllowCommunityAdminAccess=false // Forced on for Licensed servers (Only OWI devs) AllowDevProfiling=false

Server Messages in ServerMessages.cfg
This will rotate server messages every x seconds (based on Server.cfg setting). Each message should have its own line. This should be used to display server rules and contact information.

Rcon control in Rcon.cfg
If you do not want to use RCON, leave the password= empty. NOTE: Leaving the RCONIP=0.0.0.0 will bind it to the public default IP. If your server has multiple IP's please specify the address here. // Edit this IP to bind the RCON socket to an alternate IP address. // Alternatively, set this from the command line with the argument: //  RCONIP=0.0.0.0 IP=0.0.0.0 // Edit this IP to bind the RCON socket to an alternate port. // Alternatively, set this from the command line with the argument: //  RCONPORT=21114 Port=21114 // Set this to enable the usage of RCON with the given password for login. // Leaving this empty will keep RCON turned off. // Alternatively, set this from the command line with the argument: //  RCONPASSWORD=MyPassword Password= // Set this to set the maximum number of allowable concurrent RCON // connections to the server. // Alternatively, set this from the command line with the argument: //  RCONMAXCONNECTIONS=5 MaxConnections=5 // Edit this to customize the number of seconds without contact from a connected // console before the server checks with that computer to see if the session is // still active, or if it got disconnected. Supports values between 30 and 3600. // Alternatively, set this from the command line with the argument: //  RCONSECONDSBEFORETIMEOUTCHECK=120 SecondsBeforeTimeoutCheck=120

Tournament Mode
1. To enable tournament mode, you must run the server instance at least once to generate the necessary file.

2. Go to your server folder, and locate the Game.ini file under \Saved\Config\WindowsServer, (or Saved\Config\LinuxServer), and add the below contents as needed.

3. A server restart is necessary to apply any changes to the tournament mode configuration.

For more information, see this forum post. This mode was added with Alpha 5.2.

V12 compatible version: [/Script/Squad.SQGameMode] bTournamentMode=true [/Script/Squad.SQTournamentModeRuleset] Restrictions=(Setting="r.ShadowQuality", Min=1, Max=5) Restrictions=(Setting="r.ViewDistanceQuality", Min=3, Max=4) Restrictions=(Setting="r.ViewDistanceScale", Min=1, Max=4) Restrictions=(Setting="grass.MaxUpdateFrequency", Min=10, Max=40)

Old version: [/Script/Squad.SQGameMode] bTournamentMode=true

[/Script/Squad.SQTournamentModeRuleset] Restrictions=(Setting="r.LightFunctionQuality", Min=1, Max=1) Restrictions=(Setting="r.ShadowQuality", Min=3, Max=5) Restrictions=(Setting="r.Shadow.CSM.MaxCascades", Min=1, Max=10) Restrictions=(Setting="r.Shadow.MaxResolution", Min=1024, Max=4096) Restrictions=(Setting="r.Shadow.RadiusThreshold", Min=0.03, Max=0.05) Restrictions=(Setting="r.Shadow.DistanceScale", Min=0.5, Max=1.0) Restrictions=(Setting="r.Shadow.CSM.TransitionScale", Min=0.4, Max=1.0) Restrictions=(Setting="r.DistanceFieldShadowing", Min=0, Max=1) Restrictions=(Setting="r.DistanceFieldAO", Min=0, Max=1) Restrictions=(Setting="r.AllowLandscapeShadows", Min=0, Max=1) Restrictions=(Setting="r.MotionBlurQuality", Min=0, Max=4) Restrictions=(Setting="r.AmbientOcclusionMipLevelFactor", Min=0.4, Max=1.0) Restrictions=(Setting="r.AmbientOcclusionMaxQuality", Min=0, Max=100) Restrictions=(Setting="r.DepthOfFieldQuality", Min=0, Max=4) Restrictions=(Setting="r.RenderTargetPoolMin", Min=300, Max=1000) Restrictions=(Setting="r.LensFlareQuality", Min=0, Max=3) Restrictions=(Setting="r.SceneColorFringeQuality", Min=0, Max=1) Restrictions=(Setting="r.EyeAdaptationQuality", Min=0, Max=2) Restrictions=(Setting="r.FastBlurThreshold", Min=0, Max=100) Restrictions=(Setting="r.Upscale.Quality", Min=1, Max=3) Restrictions=(Setting="r.Tonemapper.GrainQuantization", Min=0, Max=1) Restrictions=(Setting="r.LightShaftQuality", Min=0, Max=1) Restrictions=(Setting="r.Filter.SizeScale", Min=0.6, Max=1) Restrictions=(Setting="r.Tonemapper.Quality", Min=0, Max=5) Restrictions=(Setting="r.SkeletalMeshLODBias", Min=-1, Max=0) Restrictions=(Setting="r.ViewDistanceScale", Min=1.0, Max=10.0) Restrictions=(Setting="r.MipMapLODBias", Min=-1, Max=0) Restrictions=(Setting="r.Streaming.MipBias", Min=0, Max=1.5) Restrictions=(Setting="r.MaxAnisotropy", Min=0, Max=16) Restrictions=(Setting="r.TranslucencyLightingVolumeDim", Min=24, Max=64) Restrictions=(Setting="r.RefractionQuality", Min=0, Max=2) Restrictions=(Setting="r.SSR.Quality", Min=0, Max=4) Restrictions=(Setting="r.SceneColorFormat", Min=3, Max=4) Restrictions=(Setting="r.DetailMode", Min=0, Max=2) Restrictions=(Setting="r.TranslucencyVolumeBlur", Min=0, Max=1) Restrictions=(Setting="r.MaterialQualityLevel", Min=0, Max=2) Restrictions=(Setting="r.SSS.Scale", Min=0, Max=1) Restrictions=(Setting="r.SSS.SampleSet", Min=0, Max=2) Restrictions=(Setting="r.EmitterSpawnRateScale", Min=0.125, Max=1.0) Restrictions=(Setting="r.ParticleMinTimeBetweenTicks", Min=8, Max=33) Restrictions=(Setting="foliage.DensityScale", Min=0, Max=1.0) Restrictions=(Setting="grass.DensityScale", Min=0, Max=1.0) Restrictions=(Setting="grass.MaxUpdateFrequency", Min=10, Max=30) Restrictions=(Setting="r.PostProcessAAQuality", Min=0, Max=6) Restrictions=(Setting="r.Shadow.MaxCSMResolution", Min=512, Max=4096) Restrictions=(Setting="r.VolumetricFog", Min=0, Max=1) Restrictions=(Setting="r.Streaming.LimitPoolSizeToVRAM", Min=0, Max=1) Restrictions=(Setting="r.Streaming.MaxEffectiveScreenSize", Min=0, Max=0) Restrictions=(Setting="r.SSS.HalfRes", Min=0, Max=1) Restrictions=(Setting="r.ParticleLightQuality", Min=0, Max=2)