View the documentation docs.5stack.gg
This repo holds the CS2 game server images and the tooling that keeps them honest.
| App | What it is | Image |
|---|---|---|
apps/counterstrikesharp |
CS2 server + 5stack plugin on CounterStrikeSharp | ghcr.io/5stackgg/game-server-css |
apps/swiftly |
the same plugin on SwiftlyS2 | ghcr.io/5stackgg/game-server-sw |
apps/player-management-css / apps/player-management-sw |
enforces panel bans, mutes and gags on community servers | ships inside both game-server images |
apps/gamedata-validator |
checks our byte-pattern signatures still resolve after a CS2 update | ghcr.io/5stackgg/gamedata-validator |
shared/ holds what the two plugins have in common: the server cfg/, the setup scripts/,
the signature gamedata/, and the framework-agnostic C# (entities, enums, utilities) that both
FiveStack.csproj files pull in with a Compile glob. It compiles into each plugin assembly —
nothing extra ships in the plugin zip.
Both plugins are published to releases. They version independently and share one tag namespace, so pick by prefix:
- CounterStrikeSharp —
css-v0.0.N, assetFiveStack-css-v0.0.N.zip - SwiftlyS2 —
sw-v0.0.N, assetFiveStack-sw-v0.0.N.zip
Community (non-Ranked) dedicated servers run no match plugin, so the sanctions a moderator sets in
the panel reach them through this plugin instead. It syncs every 30 seconds and whenever the panel
sends player_management_refresh, kicks banned players, mutes voice and blocks chat. It has no
byte-pattern signatures, so a CS2 update does not break it.
A server on a 5stack node loads it automatically. Anywhere else, take the asset from the same
release as the match plugin and extract it into game/csgo:
- CounterStrikeSharp:
PlayerManagement-css-v0.0.N.zip, configured inaddons/counterstrikesharp/configs/plugins/PlayerManagement/PlayerManagement.json - SwiftlyS2:
PlayerManagement-sw-v0.0.N.zip, configured inaddons/swiftlys2/configs/plugins/PlayerManagement/config.jsonc(under aPlayerManagementkey)
Either config takes API_DOMAIN, SERVER_ID and SERVER_API_PASSWORD; the panel's player
management card shows the values for each server. Environment variables of the same names win over
the file. Over RCON, player_management_status reports what the plugin sees.