SCUMServer Automation
Server owners · Configuration
Server owners

Configuration

Two files hold everything — and you rarely need to touch either by hand, because every setting is editable from the admin panel with a description next to it.

On every update, newly added settings are filled in with defaults automatically — your values are never overwritten. Features marked 💎 need an active Premium subscription.

Server & launch

SettingWhat it does
publicIPthe connect address shown to players (game port + 2)
serverArgsport, query port, max players, BattlEye toggle, custom launch args
serverDir / savedDir / backupRootwhere the server, its save and the backups live
startServerWithManagerstart the game server whenever the manager starts
autoStartOnBootstart the manager at Windows boot (Scheduled Task)
serverPriorityprocess priority for the server (idle → high)
stopTimeoutSecondshow long a graceful stop may take before force-kill

The game server is stopped gracefully (the same as pressing Ctrl+C in its console), so the world is saved on every stop, restart and update.

Restarts, backups, updates

SettingWhat it does
restartTimesdaily restart schedule (HH:mm list) — players get 15/5/1-minute in-game warnings
autoRestartautomatic crash recovery for the game server, with a cooldown and an attempt limit
autoRelaunchOnCrashif the manager itself stops on an error, start it again (default on). Without it your server keeps running but nothing is watching it — no monitoring, no scheduled restart, no backups. A crash in the first minute after starting does not relaunch: a fault that early would just repeat, so the log tells you instead of looping
periodicBackupEnabled + backupIntervalMinutesscheduled backups
maxBackups / compressBackupsretention and zip compression
preRestartBackupEnabled / runBackupOnStartextra safety backups
runUpdateOnStart / updateCheckIntervalMinutes / updateDelayMinutesSteamCMD game updates — checked on a schedule, applied with player warnings

Backups are taken while the server keeps running, and SCUM.db is the one file where that matters: the game keeps part of its live state in a write-ahead log (SCUM.db-wal), so copying those files one after another can capture halves that don't belong together — a backup that looks fine and only fails when you actually need it. The manager instead asks SQLite for a consistent snapshot of the database, which is why a backup contains SCUM.db but no -wal/-shm files: their contents are already in the snapshot. Restoring by hand: copy the save files back, and delete any leftover SCUM.db-wal and SCUM.db-shm in the target folder before starting the server.

Monitoring & logs

SettingWhat it does
monitoringIntervalSecondshow often FPS/CPU/RAM are sampled (default every second)
performanceThresholds + performanceAlertThresholdFPS bands that trigger Discord performance alerts
dataRetentionhow long kill-feed, trade, notification and chat history is kept (chat is now stored in the manager's database, so it survives log rotation; chatMessageDays defaults to 90). adminAuditDays covers the admin activity trail and defaults to 365 — it answers "who changed this", which is usually asked long after the fact; it is never pruned below 7 days
consoleLogLevel / logRotationEnabled / maxLogFileSizeMBmanager log verbosity and rotation

Web panel (web)

SettingWhat it does
port / bindAddresswhere the panel listens (default 8080 on all interfaces)
publicUrlthe public URL of your Field Console — Discord embeds link to it
adminAllowlistoptional IP/CIDR allowlist for the admin panel
adminChatNamethe name your players see on chat you send from the panel without picking a player — in game, on the website and on Discord. Default Server; set it to ADMIN, your server's name, or anything in your own language. Empty = send with no name, as before
adminLanguageadmin panel language
trustProxy / cookieSecure / ssl / httpRedirectPortHTTPS setup — see Domain & HTTPS
fieldConsolewhich public tabs are visible / login-gated — see Public Field Console

Your scumsa.com Premium credentials are entered in the admin Premium tab, not in the config file — see Premium.

Discord (Discord)

SettingWhat it does
GuildIdyour Discord server — slash commands are registered there
Presencethe bot's "Watching" activity, with a live {players} counter
LiveEmbedschannels + refresh intervals for the self-updating status / players / bunkers / economy / leaderboard embeds
Notificationswhich alert goes to which channel, with optional role pings
ChatRelaygame ↔ Discord chat relay channels and rules
SlashCommands.AdminRolesDiscord roles allowed to use admin commands
CommandRelay💎 a Discord channel where admins type SCUM game commands (#SpawnItem …) and the manager runs them through the SSA Bridge — edited under Discord → Command relay
AccountLinkinggive linked players a Discord role (removed on unlink) and, with Premium + the SSA Bridge, confirm the link in their in-game chat — edited under Discord → Account linking

Account linking (edited under Discord → Account linking):

Per-feed settings (kill feed, login feed, economy feed, and the rest) live under SCUMLogFeatures — each feed has its own channel and toggles. See Discord bot.

The economy feed's delay is the anti-snipe setting: it holds back both recent trades and trader funds on the Field Console, so nobody can watch restocks and price swings as they happen. Set it to whatever you like — the manager keeps enough history to cover it. It can't be shortened from the browser; the delay is applied on the server. Right after you raise it, funds show current values for a little while, until that much history has been recorded.

Player Intelligence (playerIntel) 💎

Edited in the admin panel under Discord → Player intelligence (see player management).

SettingWhat it does
enabledenrich every join into a local risk verdict (default on; needs Premium at run time)
alertChannelDiscord channel ID for a risk alert on a risky join — blank = risk badge only, no message
alertThresholdwatch (alert on Watch and High) or high (High only). Alerts only notify — never auto-act

If you turn on the automatic kick or ban, the "skip Discord-linked" and "skip reviewed" exemptions are re-checked at the moment the action fires — so marking someone reviewed during the grace period still saves them. And if the manager can't check at that moment, it doesn't act: a player you protected is never banned on the strength of a lookup that failed.

A timed ban lifts itself when its hours are up, including one that expired while the manager was off — it's checked at startup and every minute after. The record of when each ban ends is written safely, so an interrupted save can't turn your temporary bans into permanent ones, and if that record ever can't be read you'll see a warning in the log rather than silently banned players.

Kept out of the rankings (leaderboardExclude)

Who never shows up in a leaderboard. Until now admins were simply always hidden, which is not what every server wants — plenty of owners play on their own server and would like to compete, and the accounts that really need hiding are more often a test character, a builder squad or an event team.

SettingWhat it does
adminshide everyone listed in AdminUsers.ini. On by default, so nothing changes unless you turn it off
steamIdshide individual players from the player leaderboards
squadIdshide squads from Top Squads and the squad list — the people in them stay on the player leaderboards

The two are separate on purpose. Hiding a squad does not hide its members, and hiding a player does not hide their squad — an event team should not disappear from Top Kills just because their squad is not competing for the squad title.

One setting covers everywhere: the Leaderboards tab, the Overview, the weekly snapshot and the Discord embeds. Somebody you exclude can still see their own stats — being left off the board is not being erased.

Edit it in the admin panel under Frontend → Kept out of the rankings. Both lists have a search: players by name or Steam ID, squads by name or id with how many members they have, so two squads called the same thing are still telling apart. You can also just paste ids into the box underneath — useful for somebody who has not joined your server yet, or for a list a fellow admin sent you.

Economy traders (economyTraderMap)

SCUM stores traders only by a bare id — there's no record of which outpost a trader sits in — so you map them once under Frontend → Economy traders:

  1. The editor auto-groups traders into outposts and guesses each type from what it sells (clean on a freshly-wiped server, where every outpost has 9 traders in a fixed order).
  2. Set each group's outpost with "Set all to" and fix any wrongly guessed type.
  3. Hit "Copy types → all outposts" to apply one outpost's order to the rest.

Traders then show up correctly and fully localized across the Field Console, Discord and recent trades. The mapping is keyed by the stable trader id, so trading never disturbs it.

.env (secrets)

DISCORD_TOKEN=            # bot token — empty disables the bot
WEB_ADMIN_PASSWORD=       # the recovery admin password
SESSION_SECRET=           # generated automatically

DISCORD_CLIENT_ID=        # Discord OAuth (player + admin "Login with Discord")
DISCORD_CLIENT_SECRET=
DISCORD_OAUTH_REDIRECT=   # https://your-domain/api/auth/discord/callback

You don't have to edit this file by hand either: the bot token and OAuth credentials are editable live from the admin Discord section — saving applies immediately, no manager restart needed.