Configuration Overview
The tracker system is configured via platform/r5rdev_config.json. Use the Control Panel Config tab to generate/download the JSON and push updates.
- Convars can also be optionally configured through
platform/cfg/game.cfg
First time install
In order to activate tracker, you will need to download your config json file and place it into /platform/ folder of your R5Reloaded install.
Once this done, if tracker_ws_enable is enabled, you can manage this config directly from the web panel. Any values within the ‘settings’ and ‘restricted’
categories will take effect immediately without needing to restart the entire server OR reload the map, when reloaded from the web panel, or alternatively
in the servers console on the host machine with tracker_reload_config
Tracker-related settings previously placed in playlists_r5_patch.txt have been deprecated. Migrate any remaining values into the Config tab
Game Config (game.cfg)
Add these ConVars to your platform/cfg/game.cfg file to configure the WebSocket interface and tracker behavior.
WebSocket Settings
A limited set of convars that may be desirable to change will be overidden by the setting in r5rdev_config.json.
| ConVar | Default | Description |
|---|
tracker_ws_enable | 1 | Enable WebSocket remote command interface (0 = disabled, 1 = enabled). |
tracker_ws_port | 9705 | WebSocket server port. |
tracker_ws_debug | 0 | Enable WebSocket debug logging. |
tracker_ws_use_ssl | 1 | Use SSL for WebSocket connection. |
tracker_ws_lax_ssl | 0 | Lax SSL certificate validation (0 = strict, 1 = lax). See Getting Started. |
tracker_ws_buffer_size | 261120 | WebSocket buffer size in bytes (Startup only). |
tracker_ws_max_retries | 3 | Maximum number of connection retries. |
tracker_ws_retry_time | 5.0 | Time in seconds between retries. |
tracker_ws_time_out | 125 | Connection timeout in seconds. |
tracker_ws_keep_alive | 60 | Keep-alive interval in seconds. |
tracker_ws_throttle_rate | 0.10 | Message processing throttle rate (seconds). |
tracker_ws_hostname | r5r.dev | WebSocket server hostname. |
tracker_ws_tls_version | 3 | TLS Version (0: 1.0, 1: 1.1, 2: 1.2, 3: 1.3). |
tracker_ws_relay_chat | 0 | Relays chat messages to qualified clients via web panel. |
tracker_ws_reconnect_on_change | 1 | Reconnect to remote socket when qualified convars change. |
tracker_ws_reconnect_on_newgame | 0 | Reconnect the socket for each new game. |
tracker_ws_ca_bundle_file | Sectigobundle.pem | Certificate bundle file name. |
Playlist Patch (Deprecated)
Tracker-related entries in playlists_r5_patch.txt have been removed. Configure these settings in the Control Panel Config tab and apply/download r5rdev_config.json instead.
If you keep settings in the playlists file for other purposes, note that tracker settings in it are ignored.
Config JSON (r5rdev_config.json)
The platform/r5rdev_config.json file is the primary configuration file for the tracker plugin. It contains your API credentials, webhook settings, and server options.
You can edit this file manually or configure it visually and download it from the Host Control Panel Config Tab. This page also allows you to “Update Config” remotely if your server is connected via WebSockets.
Root Settings
| Key | Type | Description |
|---|
apikey | String | Required. Your Host API Key from the Control Panel. Without this, data will be rejected and rate limits will be lower. |
identifier | String | Unique ID for this server instance (e.g., main_server, server2). Used for WebSocket communication. |
logfolder | String | Folder name within platform/ to store logs (e.g., tracker_logs). Blocked paths: scripts, resource, maps, logs, cfg, mods. |
Webhooks
Configure Discord webhooks for server events.
"webhooks": {
"PLAYERS_WEBHOOK": "https://discord.com/api/webhooks/...",
"MATCHES_WEBHOOK": "https://discord.com/api/webhooks/..."
}
| Key | Description |
|---|
PLAYERS_WEBHOOK | URL for player join/leave notifications. |
MATCHES_WEBHOOK | URL for Match Recap notifications. |
Server Settings
Control low-level server behavior and logging.
The Control Panel config (r5rdev_config.json) can set and override a limited set of these ConVars for convenience. ConVars marked with * are applied from r5rdev_config.json when present.
"server": {
"MAX_LOGFILE_DIR_SIZE": 50,
"AUTO_DELETE_STATLOGS": false,
"USE_WEB_SOCKETS": true
...
}
| Key | Type | Description |
|---|
MAX_LOGFILE_DIR_SIZE | Int | Max size of the log directory in MB (Recommended: 20-50). |
AUTO_DELETE_STATLOGS | Bool | Automatically delete logs at the end of a round. |
DELETE_ALL_LOGS | Bool | Delete ALL logs after a match round. |
CVAR_MAX_BUFFER | Int | Log event accumulator size (Default: 50000). Keep high to prevent disk I/O lag. |
USE_WEB_SOCKETS* | Bool | Enable WebSocket features (Control Panel commands, live data). Uses SSL. |
LAX_SSL* | Bool | Allow self-signed/invalid certs. If false (recommended), Sectigobundle.pem must be in platform/. |
RELAY_CHAT_MESSAGES* | Bool | Relay in-game chat to the Control Panel; if disabled, Watch Chat will not show messages. |
RECONNECT_ON_NEWGAME* | Bool | Reconnect the socket on every map load. Requires USE_WEB_SOCKETS. |
TRACKER_ENABLED | Bool | Runs the tracker in scripts; disable if you only want Control Panel server management. |
TRACKER_ENCRYPTION | Bool | Encrypt outbound tracker data; disable for a small performance gain. |
TRACKER_SHIPSTATS | Bool | Post matches to the tracker system (enabled for normal tracker usage). |
USE_GLOBAL_STATS | Bool | Allow inbound/outbound live stat data (start/end of match or when needed for stat queries). |
TRACKER_MAX_WAIT | Float | Max seconds to wait for batch stat loading (Default: 7.0). Lower values may miss some players still connecting/loading. |
EA_VERIFY_SERVER | Bool | Allow EA account verification for servers registered as EA identification servers. |
Game Settings
Gameplay and administration settings.
"settings": {
"ADMINS": "100123456789,100987654321",
"ENABLE_CHATBOT": true
...
}
| Key | Type | Description |
|---|
ADMINS | String | Comma-separated list of Admin UIDs (or Name-UID format). |
ENABLE_CHATBOT | Bool | Enables the in-game chatbot. |
CHATBOT_PREFIX | String | Prefix for chatbot messages (e.g., [SERVER]). |
INTERVAL_MESSAGES | String | Pipe-separated list of time-based messages. Supports events like start, end, join, or seconds. Example: start=Match Started!|300=5 minutes passed!. |
LOOP_MESSAGES | String | Pipe-separated list of messages to cycle through. |
LOOP_MESSAGES_INTERVAL | Int | Interval in seconds (multiple of 10) to cycle LOOP_MESSAGES. |
OPT_IN_GLOBAL_MUTE | Bool | Apply global mutes to players who have opted in network-wide. |
Interval Messages
Use INTERVAL_MESSAGES to send timed and event-based chat notices. The value is a pipe-separated list of key=value pairs.
If you need to use | or = in a value, escape them with \. Example: join=Welcome #player! Your ELO \= #stat_score
- Keys:
start, numeric seconds (e.g., 300), end, and join.
- For join messages, placeholders resolve per player when the message is sent:
#player, #uid, #ping, #stat_<statKey> (uses tracker stats), #setting_<settingKey> (uses the player’s current tracker setting value).
- Example:
start=The match has started!|300=Remember to take breaks!|600=Stay hydrated!|end=The match is over!|join=Welcome to the server #player. Your current elo is #stat_score
Loop Messages
Use LOOP_MESSAGES with LOOP_MESSAGES_INTERVAL to rotate chat announcements on a fixed cadence.
- Provide a pipe-separated list of messages (e.g.,
Welcome to the server!\|Stats by r5r.dev!).
- Set
LOOP_MESSAGES_INTERVAL to a multiple of 10 (seconds) for how often to send the next entry.
Auto Rotation
Configure auto_rotate_list in playlists_r5_patch.txt to cycle map/playlist/gamemode combinations. This works with or without the tracker and has inline documentation in the playlists file.
- Format: comma-separated entries of
map playlist gamemode minplayers maxplayers (gamemode optional but recommended; minplayers optional, defaults to NO_MIN; maxplayers optional, defaults to no cap).
- Partials are supported for map/playlist/gamemode matches. Each combination should be unique; invalid combos assert at startup with details.
- If a map is due but player count is below
minplayers, that entry is skipped. Likewise, if count is over maxplayers, it will also be skipped.
- Leave blank to disable auto rotation.
- Example:
auto_rotate_list "comp 1v1 fs_dm, holiday winter winter 8, desert scenarios fs_dm, aque instagib fs_dm"
Restricted / Private Server Settings
These keys live under private in r5rdev_config.json and gate who can join when restricted mode is enabled.
| Key | Type | Description |
|---|
RESTRICTED_SERVER | Bool | Enables restricted/private server mode. |
RESTRICTED_WHITELIST_ONLY | Bool | Only allow whitelisted players; kicks others. |
RESTRICTED_PLAYER_WHITELIST | String | Comma-separated whitelist of player IDs. |
RESTRICTED_JOIN_MESSAGE | String | Message shown to players who meet restricted server requirements. |
RESTRICTED_WHITELIST_MESSAGE | String | Message shown to whitelisted players on join. |
RESTRICTED_ADMIN_MESSAGE | String | Message shown to admins on join. |
RESTRICTED_GAMESPLAYED | Int | Minimum games played required to join (requires USE_GLOBAL_STATS). |
RESTRICTED_PLAYTIME | Int | Minimum playtime (seconds) required to join (requires USE_GLOBAL_STATS). |
RESTRICTED_RANK | Int | Minimum leaderboard rank (elo) required to join (requires USE_GLOBAL_STATS). |
RESTRICTED_KILLS | Int | Minimum kills required to join (requires USE_GLOBAL_STATS). |
RESTRICTED_KD | Float | Minimum KD ratio required to join (requires USE_GLOBAL_STATS). |
RESTRICTED_KICK_LOG | Bool | Log/print when a player is kicked with the reason (verbose; useful for debugging restricted kicks). |