Squad: Server Setup, Admins and Licensing
Server.cfg and Admins.cfg explained, layer rotation that actually works, RCON, mods - and why your server shows up in the Custom tab instead of the main browser.
Where the configuration lives
Everything sits in SquadGame/ServerConfig/. The files you will actually touch:
| File | What it controls |
|---|---|
Server.cfg |
Name, player count, rotation mode, team changes |
Admins.cfg |
Groups and admins |
Bans.cfg |
Bans - normally written by the server itself |
LayerRotation.cfg |
Rotation at layer level |
LevelRotation.cfg |
Rotation at map level |
Rcon.cfg |
RCON access |
License.cfg |
Your server license from Offworld Industries |
ServerMessages.cfg |
Messages rotating in chat |
Motd.cfg |
Message of the day |
ExcludedLayers.cfg |
Layers you do not want to run |
There is no
MapRotation.cfgin Squad, even though some control panels call it that. The files areLayerRotation.cfgandLevelRotation.cfg.
Server.cfg
ServerName="My server name"
ShouldAdvertise=true
IsLANMatch=false
MaxPlayers=100
NumReservedSlots=0
PublicQueueLimit=25
MapRotationMode=LayerList
RandomizeAtStart=true
AllowTeamChanges=true
PreventTeamChangeIfUnbalanced=true
NumPlayersDiffForTeamChanges=3
ServerMessageInterval=300
TKAutoKickEnabled=true
AutoTKBanNumberTKs=7
AutoTKBanTime=300
AllowCommunityAdminAccess=true
| Key | Default | Meaning |
|---|---|---|
ServerName |
- | The name in the server browser |
ShouldAdvertise |
true |
Whether the server is advertised. false hides it |
IsLANMatch |
false |
LAN mode |
MaxPlayers |
100 |
Number of slots |
NumReservedSlots |
0 |
Slots reserved for the group holding the reserve permission |
PublicQueueLimit |
25 |
Queue length. 0 = no queue, -1 = unlimited |
MapRotationMode |
LayerList |
LevelList, LayerList, LevelList_Randomized or LayerList_Randomized |
RandomizeAtStart |
true |
Pick a random starting point in the rotation |
PreventTeamChangeIfUnbalanced |
true |
Block team changes that unbalance the teams |
ServerMessageInterval |
300 |
Seconds between messages from ServerMessages.cfg |
TKAutoKickEnabled |
true |
Automatic kick for teamkills |
MapRotationModedecides which file the server reads. Set toLayerList,LevelRotation.cfgis ignored - and vice versa. It is the most common cause of "my rotation is not working".
Admins.cfg
The syntax is two kinds of line: first you define a group with permissions, then you add people to it.
Group=Admin:changemap,pause,cheat,private,balance,chat,kick,ban,config,cameraman,immune,manageserver,teamchange,forceteamchange,reserve,canseeadminchat
Group=Moderator:kick,ban,chat,cameraman,canseeadminchat
Admin=76561198000000000:Admin
Admin=76561198000000001:Moderator
Admin=<SteamID64>:<GroupName> - the 17-digit Steam ID, a colon, and the name of a group you defined above.
The permissions:
| Flag | What it grants |
|---|---|
changemap |
Change map and layer |
pause |
Pause the game |
cheat |
Server cheat commands |
private |
Password-protect the server |
balance |
Ignore team balance |
chat |
Admin chat and broadcasts |
kick |
Kick players |
ban |
Ban players |
config |
Change the server configuration |
cameraman |
Admin spectator |
immune |
Cannot be kicked or banned |
manageserver |
Shut down the server |
reserve |
Uses a reserved slot |
demos |
Record demos server-side |
clientdemos |
Record demos client-side |
teamchange |
No time limits on team changes |
forceteamchange |
Can force others to change team |
canseeadminchat |
Can see admin chat and teamkill notifications |
debug |
Access to admin stats and debugging |
A typo in a single flag can make the whole group fail. Check the spelling if a group suddenly has no permissions at all.
Licensing: why your server is in the wrong tab
Squad has a licensing system run by Offworld Industries. It is not about payment - it is curation.
- Licensed servers appear in the server browser's primary tab.
- Unlicensed servers land in the Custom tab, alongside modded servers.
That is the key difference, and it is often the explanation for "my server is missing" - it is there, just in the other tab.
How to get a license:
- Apply through the Offworld Industries licensing portal at license.offworldindustries.com.
- If granted, you receive an ID and a key.
- Stop the server and paste the entire code exactly as you received it - both the ID and the key - into
License.cfg. - Start the server.
The policy sets real requirements for your community: a minimum number of active admins per license, coverage during peak hours, a system for handling ban appeals, and hardware that keeps the server above the stated TPS thresholds. A license can be revoked for admin abuse, too few admins or persistently poor performance.
The requirements change from time to time. Read the current policy on joinsquad.com before applying.
Ports
| Purpose | Port | Protocol |
|---|---|---|
| Game | 7787 (and 7788) |
UDP |
| Query | 27165 (and 27166) |
UDP/TCP |
| Beacon | 15000 |
UDP/TCP |
| RCON | 21114 |
TCP |
The beacon port is almost always forgotten. If you run several Squad servers on one machine, each instance needs its own beacon port (15000, 15001 and so on), otherwise only the first one starts properly.
Layer and map rotation
LevelRotation.cfg is used with MapRotationMode=LevelList. One map name per line:
AlBasrah
Gorodok
Narva
Yehorivka
LayerRotation.cfg is used with MapRotationMode=LayerList. One layer ID per line in the form Map_GameMode_vVersion:
Belaya_AAS_v1
AlBasrah_AAS_v1
Narva_Invasion_v2 USA RGF
You can append factions after the layer name. Two rules: the same faction cannot be on both teams, and two factions from the same alliance cannot meet.
Comments must not sit on the same line as a layer. Put them on their own line. A comment at the end of a layer line breaks that line.
Always use layer and map IDs, never the display names from the game.
RCON
Rcon.cfg contains:
IP=0.0.0.0
Port=21114
Password=Password1
MaxConnections=5
ConnectionTimeout=300
Change Password1 immediately. Squad uses Source RCON, so standard tools such as BattleMetrics and SquadJS work. Do not leave the RCON port open to the internet - restrict it to the IPs that need it.
Mods
Squad supports Steam Workshop mods on servers.
- Mods go in
SquadGame/Plugins/Mods/- note that it is insidePlugins, not a standalone folder in the root. - Download them with SteamCMD via
+workshop_download_item 393380 <mod ID>and copy them in. The server must not be running while you do. - Players do not download mods automatically. On joining they get the message
The following mods are missing or out of syncand a DOWNLOAD ALL button. They can also subscribe on the workshop in advance. - Modded servers get a wrench icon in the browser, where players can see which mods are running.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| The server is not in the server browser | It is unlicensed and sits in the Custom tab | Switch tab, or apply for a license |
| Still not there | ShouldAdvertise=false or IsLANMatch=true |
Fix both |
| Still not there (2) | Game or query port not open | Open 7787 and 27165 |
| A second instance will not start | The beacon port is in use | Give each instance its own beacon port |
| The rotation does not follow my file | MapRotationMode points at the other file |
Set it to LayerList or LevelList |
| One layer is skipped | Wrong layer ID, or a comment on the same line | Fix the ID, move the comment down |
| A layer is rejected | An illegal faction combination, or the layer is excluded | Check factions and ExcludedLayers.cfg |
| My admins do not work | Wrong SteamID, group name spelled differently in the two places, or an invalid flag | Check all three |
| The server crashes after a game update | Mods have not been updated yet | Remove the mods temporarily |
| Players are bounced from a modded server | They are missing the mods | Ask them to use DOWNLOAD ALL |
| The license does not take effect | Only the key was pasted, not the ID | Paste the whole code as received and restart |
Good advice
- Set up the license as early as you can. Without it, most players never see your server.
- Give
immuneto your own admins so they cannot kick each other. - Keep
ExcludedLayers.cfgup to date instead of deleting lines from the rotation - then you can put them back easily. - Use
ServerMessages.cfgfor your rules and Discord link. It is the cheapest moderation there is. - Test a new rotation with
RandomizeAtStart=falseso you can watch it run in order.
Unsure about a layer ID or a faction combination? Send us your LayerRotation.cfg in a ticket.