Config Reference¶
ggCON uses two layers of configuration:
ggCON.ini— static settings managed by GG Host (network binding, ports, RCON). These are pre-configured for your server and not directly visible to customers.ggcon_settings.json— runtime settings managed through the web panel's Settings tab, applied immediately without restartggcon_password— the authentication password, set during installation and changeable from the panel
All three files live in:
You don't need to edit the INI file
The ggCON.ini file is managed by GG Host and pre-configured when ggCON is installed. All customer-facing settings are available in the web panel's Settings tab. The INI-only settings documented below are for reference only.
| File | What goes here | How to change |
|---|---|---|
ggCON.ini |
Network binding, ports, RCON | Managed by GG Host |
ggcon_settings.json |
Everything else (admin IDs, logging, webhooks, etc.) | Panel Settings tab |
ggcon_password |
Authentication password | Panel Settings tab |
INI-only settings (managed by GG Host)¶
These settings are pre-configured by GG Host during installation. They require a server restart to take effect and are not exposed in the web panel. All keys are under the [ggCON] section header.
BindAddress¶
Type: string | Default: 127.0.0.1
The address the HTTP server binds to.
127.0.0.1— localhost only (recommended when using a reverse proxy)0.0.0.0— all interfaces
Port¶
Type: integer | Default: 8081
Port for the HTTP API.
PanelId¶
Type: string | Default: (empty — proxy disabled)
Identifier for the SSL panel proxy. When set, ggCON registers with the GG Host panel proxy, making the web panel available over HTTPS at:
For GG Host servers using TCAdmin, set this to your TCAdmin Service ID (available as ![ServiceId] in TCAdmin templates).
Leave empty to disable SSL proxy access entirely.
RconEnabled¶
Type: bool | Default: false
Set to true to start the RCON server on mod load.
RconPort¶
Type: integer | Default: 27020
Port the RCON server listens on.
RconBindAddress¶
Type: string | Default: (inherits BindAddress)
Address the RCON server binds to. Leave empty to use the same value as BindAddress.
RconMaxClients¶
Type: integer | Default: 16
Maximum number of simultaneous RCON connections. Additional connections are rejected until an existing client disconnects.
RconIdleTimeoutSecs¶
Type: integer (seconds) | Default: 30
Seconds of inactivity before an idle RCON connection is dropped. Prevents automation tools from exhausting connection slots by leaving sessions open.
Password¶
The password is stored in a dedicated file — ggcon_password — in the same config directory. It contains a single line of plain text.
The password is required via the X-Password header for HTTP API and RCON authentication.
Warning
Passwords are transmitted in plaintext HTTP headers. Use the SSL panel proxy or a reverse proxy with TLS if the API is exposed beyond localhost.
You can change the password from the panel's Settings tab or by editing the ggcon_password file directly and running #ReloadConfig.
Panel-managed settings¶
These settings are managed through the web panel's Settings tab. Changes apply immediately without a restart and are persisted to ggcon_settings.json.
AllowAllIPs¶
Type: bool | Default: true
When true, connections from any IP address are allowed (IP allowlist is skipped). Authentication still requires a valid password.
This is the default — ggCON ships open and relies on password authentication. Set to false and configure AllowedIPs or AllowedCIDRs if you want IP-level restrictions.
Warning
With the default AllowAllIPs = true, any IP can attempt to authenticate. Make sure you set a strong password.
AllowedIPs¶
Type: semicolon-separated list | Default: 127.0.0.1;::1
IP addresses allowed to connect. Both IPv4 and IPv6 are supported. Only used when AllowAllIPs = false.
If both AllowedIPs and AllowedCIDRs are empty, the mod falls back to allowing only 127.0.0.1 and ::1.
AllowedCIDRs¶
Type: semicolon-separated list | Default: (empty)
CIDR ranges allowed to connect. Only used when AllowAllIPs = false.
RestrictToAdmins¶
Type: bool | Default: false
If true, only players whose Steam ID is in AdminSteamIDs may be used as the command executor. If no qualifying admin is online when a command is issued, the command fails with "no admin player is online".
AdminSteamIDs¶
Type: semicolon-separated list | Default: (empty)
The Steam IDs of players who are permitted to act as command executors when RestrictToAdmins = true.
PreferredSteamIDs¶
Type: semicolon-separated list | Default: (empty)
Ordered list of Steam IDs to prefer as the command executor. The mod tries each ID in order and uses the first one that is currently online.
When RestrictToAdmins = true, candidates must also appear in AdminSteamIDs.
When RestrictToAdmins = false, falls back to any online player if none of the preferred IDs are online.
Per-command override with #ExecAs
These settings control which player is used for commands that go through the normal executor selection pipeline. The #ExecAs command bypasses this entirely — it always targets the player you specify, regardless of RestrictToAdmins or PreferredSteamIDs. The target player does not need to be an admin.
LimitAdminCommands¶
Type: bool | Default: false
If true, only commands listed in the allowed commands file will be executed. Any command not in the list is rejected before reaching the game. See AllowedCommandsFile below to configure a custom path.
If the allowed commands file is missing or empty, all commands are blocked (fail-safe behaviour).
SuppressCommandOutput¶
Type: bool | Default: false | Recommended: true
When ggCON runs a command, the player being used receives the command output in their in-game chat. Set to true to suppress that in-game delivery. The output is still captured and returned in the API response as normal.
This is recommended for most setups to avoid unexpected output appearing for whichever player happens to be online.
SuppressSpawnedReplies¶
Type: bool | Default: false
When ggCON spawns items for a player (from the panel, the API, or a plugin), the player used to deliver them normally sees Spawned X. confirmations in their in-game chat. Set to true to suppress those confirmations. The asset-loading chatter (Loading X…) is always suppressed for ggCON-dispatched items regardless of this setting. Commands an admin types in-game manually are unaffected.
UnlockDeveloperCommands¶
Type: bool | Default: false
When true, unlocks hidden developer-only commands (such as #UpgradeBaseBuildingElementsWithinRadius) so admins can use them in-game — no separate Lua mod required. Leave off unless you specifically need them.
SlashResponseColor¶
Type: string | Default: yellow
Color used for slash command responses sent back to the player in chat. Valid values: yellow, white, cyan, green, red, orange.
SlashResponsePrefix¶
Type: string | Default: (empty)
Optional prefix prepended to slash command responses in chat, e.g. [SERVER].
AdminDisplayName¶
Type: string | Default: ADMIN
The name substituted for the {name} placeholder in the admin chat prefix templates below.
AdminChatBroadcastTemplate¶
Type: string | Default: [ADMIN] {message}
Template applied to broadcasts sent from the panel's Send Message feature, so players can tell an admin is talking. Placeholders: {name} (the AdminDisplayName) and {message} (the text you typed). Clear it to send broadcasts with no prefix. Plugin-dispatched chat and slash command responses are unaffected.
AdminChatWhisperTemplate¶
Type: string | Default: [WHISPER from {name}] {message}
Template applied to private (per-player) messages sent from the panel. Placeholders: {name}, {message}, and {playerName} (the recipient's name). Clear it to send whispers with no prefix.
UnstuckDistanceMeters¶
Type: integer (meters) | Default: 100
How far a player is moved when they use the /unstuck slash command.
UnstuckCooldownHours¶
Type: integer (hours) | Default: 5
How long a player must wait between /unstuck uses. Set to 0 to disable the cooldown.
UnstuckRequiresApproval¶
Type: bool | Default: false
When true, /unstuck requests are queued for an admin to approve or deny from the panel header instead of teleporting the player immediately.
DiscordUnstuckWebhook¶
Type: string | Default: (empty)
Discord webhook URL that receives an alert whenever a new /unstuck request is queued for approval (used only when UnstuckRequiresApproval = true). Leave empty to disable.
LogMinSeverity¶
Type: string | Default: INFO
Minimum severity level for the log file. Valid values (from least to most severe):
| Value | Description |
|---|---|
TRACE |
Verbose internal events |
INFO |
Normal operational messages |
WARN |
Warnings and recoverable issues |
ERROR |
Errors only |
DiscordLogWebhook¶
Type: string | Default: (empty)
Discord webhook URL to receive operational log messages. Leave empty to disable Discord logging.
Log entries at or above LogMinSeverity are sent as Discord messages.
Warning
The URL must start with https://. An invalid URL triggers a one-time warning in the log file and disables Discord logging.
DiscordAuditWebhook¶
Type: string | Default: (empty)
Discord webhook URL to receive the audit log. Each command dispatched through ggCON generates one audit entry, regardless of LogMinSeverity.
Leave empty to disable Discord audit logging.
LogWatcherSources¶
Type: semicolon-separated list | Default: (empty — auto-discover)
Explicit list of log sources to watch. Leave empty to automatically discover all log file prefixes in SaveFiles/Logs/.
SCUM refers to the main SCUM.log file. All other names correspond to prefixes of files in SaveFiles/Logs/ (e.g. chat watches chat_20260316183008.log).
LogWatcherBacklog¶
Type: integer | Default: 100
Number of historical lines to load from each log file when the watcher starts. Set to 0 to only capture lines written after startup.
Note
Changes to this setting require a server restart to take effect.
LogWatcherStartupDelay¶
Type: integer (seconds) | Default: 30
Seconds to wait after mod load before scanning for log files. This gives the SCUM server time to create its log files during startup.
Note
Changes to this setting require a server restart to take effect.
AllowedCommandsFile¶
Type: string (file path) | Default: (empty)
Path to the allowed commands file used when LimitAdminCommands is enabled. One command per line (case-insensitive). Leave empty to use ggCON_allowed_commands.txt in the config directory.
Plugin configuration¶
Plugins can have their own configuration sections in ggCON.ini using the [Plugin:<id>] section header, where <id> is the plugin's unique identifier. Plugin configuration is INI-only and requires a restart.
See Plugins for available plugins and their configuration options.