SCP: Secret Lab ยท Server setup

How to set up an SCP: Secret Lab server from scratch

Full setup walkthrough for an SCP: Secret Laboratory dedicated server: deploy via SteamCMD, verify the server against your SCP Central Auth account, configure config_gameplay.txt and config_remoteadmin.txt, install the EXILED or NWAPI/LabAPI plugin framework, add popular plugins (CustomRoles, KeepInventory, RoundReports, SCP-914 upgrades), set up admins via the remote admin panel (RA), and fix the common errors.

What you need first

  • An active SCP: SL plan on Fatality Servers. See our SCP: Secret Lab hosting plans.
  • An SCP: SL Central Auth account (auth.scpslgame.com) โ€” required to verify the server onto Northwood's master list.
  • A Steam copy of SCP: Secret Laboratory for each player who wants to connect (the game itself is free, but you need a Steam account).
  • A basic SFTP client (FileZilla, WinSCP). Configs are plain text.
๐Ÿ’ก

Sizing note: SCP: SL is unexpectedly lightweight. A standard 30-slot server runs comfortably in ~2 GB RAM on a modest CPU. Plugin-heavy servers (big EXILED plugin lists + custom roles + round reports) push 3-4 GB and want 2 dedicated cores. Any of our plans handles it โ€” plan size is driven more by location/network quality than raw compute.

Deploy the server (1-click)

Our SCP: SL template runs SteamCMD to pull the dedicated server (App ID 996560), writes default configs, and opens UDP 7777 on your plan's IP.

  1. Pick the SCP: SL template at checkout

    On the SCP: Secret Lab hosting page, pick a plan. Most community servers run 20-40 slots; casual "fun" servers 50-70; max is 100 per server instance.

  2. Wait for SteamCMD

    Server binary is ~4 GB. First install takes 3-6 minutes.

  3. Paste your Central Auth credentials

    On first boot, the panel prompts for your SCP: SL Central Auth email + password so the server can verify. See the Verify via Central Auth section for details.

  4. Confirm the server is listening

    [INFO] [core] Starting SCP: Secret Laboratory dedicated server 13.X.X.
    [INFO] [core] Steam App ID: 996560
    [INFO] [core] Listening on port 7777
    [INFO] [core] Verifying server against Central Auth...
    [INFO] [core] Server verified successfully. Server ID: XXXX.
    [INFO] [core] Ready. Waiting for players.

Verify via Central Auth

SCP: SL servers aren't listed or usable until they're verified against Northwood's auth system. This is the equivalent of the GSLT system in CS2 / Rust.

  1. Create a Central Auth account

    Register at auth.scpslgame.com. Verify your email. Confirm your account owns SCP: SL via your Steam profile link.

  2. Enter credentials on first boot

    The server's startup process prompts for your Central Auth email + password in the console. Our panel wraps this in a first-boot wizard.

  3. Server gets verified

    After first successful verification, the server binds to your account permanently (a verkey.txt is written into AppData/SCP Secret Laboratory/). Future boots don't need the password. Keep that file safe โ€” it IS your verification token.

  4. Server appears in the browser

    Within 2-5 minutes, your server is listed in the in-game server browser under your chosen region.

โš ๏ธ

One Central Auth account = multiple verified servers allowed. Unlike some GSLT systems, Northwood allows a single auth account to verify many servers (useful if you run a network). But don't share your password โ€” the account controls all verified servers. If compromised, your whole fleet can be deleted from the master list.

File layout & where things go

SCP: SL's layout splits configs between the server install folder and the user-profile folder:

/server-root/
โ”œโ”€โ”€ LocalAdmin                  โ€” Northwood's server launcher wrapper
โ”œโ”€โ”€ LocalAdmin.exe
โ”œโ”€โ”€ SCPSL.x86_64                โ€” main server binary (Linux)
โ”œโ”€โ”€ SCPSL.exe
โ”œโ”€โ”€ dedicated.sh                โ€” Linux launcher script
โ””โ”€โ”€ logs/                       โ€” per-session logs

~/.config/SCP Secret Laboratory/   (Linux)
   OR %APPDATA%\SCP Secret Laboratory\   (Windows)
โ”œโ”€โ”€ verkey.txt                  โ€” verification token (don't share!)
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ [PORT]/                 โ€” one folder per server port (7777, 7778, ...)
โ”‚       โ”œโ”€โ”€ config_gameplay.txt
โ”‚       โ”œโ”€โ”€ config_remoteadmin.txt
โ”‚       โ”œโ”€โ”€ config_localadmin.txt
โ”‚       โ”œโ”€โ”€ serverbans.txt
โ”‚       โ”œโ”€โ”€ config_sharing.txt
โ”‚       โ””โ”€โ”€ scp_both_banlist/
โ””โ”€โ”€ PluginAPI/
    โ””โ”€โ”€ [PORT]/
        โ”œโ”€โ”€ main.cfg            โ€” NWAPI config
        โ””โ”€โ”€ plugins/            โ€” .dll plugin files

~/.config/EXILED/               (EXILED-specific)
โ”œโ”€โ”€ Plugins/
โ”‚   โ””โ”€โ”€ [PORT]/                 โ€” per-port plugin folder
โ”œโ”€โ”€ Configs/
โ”‚   โ””โ”€โ”€ [PORT]/
โ”‚       โ””โ”€โ”€ <plugin-name>/
โ””โ”€โ”€ logs/
โ„น๏ธ

Configs live under your user home, not the server root. This trips up new admins constantly. On our panel, both paths are accessible via SFTP under a single tree โ€” we symlink the config dirs into the server folder for convenience. If you ran vanilla elsewhere and need to find a file, it's under ~/.config/SCP Secret Laboratory/config/7777/.

Core config_gameplay.txt

Edit config_gameplay.txt. Plain key: value pairs. Key settings:

### --- Server identity ---
server_name: My SCP:SL Server [EU]
server_ip: any
port_queue: 7777
max_players: 30
friendly_fire: false
friendly_fire_mult: 0.0
friendly_fire_mult_ntf: 0.2

### --- Matchmaking / rounds ---
serverlist_visibility: public
round_start_delay: 90
restart_timeout: 30
server_tickrate: 60

### --- Spawns / team composition ---
team_respawn_queue: 40114014
spawn_protect_time: 5
spawn_protect_disable_after_damage: true

### --- SCP / class caps ---
# SCP lottery weights (how often each SCP spawns):
scp_lottery_disable: false
# Default role percentages are in the team_respawn_queue
mtf_queue_starting: 4
chaos_queue_starting: 4
ntf_queue_wave_size_step: 2

### --- Gameplay mechanics ---
disable_spawn_protection: false
protected_rooms: Hcz_079,Ez_Pc,Hcz_049
round_time: 0              # 0 = unlimited
can_spectator_chat_view_self: true
cicero_chat_enabled: true
spectator_chat: true

### --- Anti-grief ---
nontrusted_player_team_killing: false
server_ignore_afk_detection: false
afk_warn_seconds: 120
afk_kick_seconds: 180

### --- Logging ---
server_log_level: 2
logs_with_timestamps: true
logs_dispatch_cron: false

Most-tweaked values:

  • server_name โ€” browser name, ~60 chars.
  • serverlist_visibility โ€” public, verified_only, or private. public for community servers.
  • friendly_fire โ€” true or false. Default is false; most community servers leave it off and let plugins grant selective FF to specific teams.
  • round_start_delay โ€” seconds from lobby-full to round start. 30-90 is standard.
  • server_tickrate โ€” 60 default; 128 possible on powerful plans but niche.
  • max_players โ€” slot count. Match your plan.

Remote admin & config_remoteadmin.txt

SCP: SL's admin system is called Remote Admin (RA). It's an in-game overlay (press M as admin) and a command console.

Grant admin permissions

Edit config_remoteadmin.txt. The important bits are the groups and players sections:

### --- Groups ---
# Each group has a set of permissions + cosmetics
[groups]

owner:
  inheritance: []
  permissions: .*
  shared: false
  hidden_by_default: false
  cover: true
  kick_power: 10
  required_kick_power: 10
  badge_color: red
  badge_text: "[OWNER]"

admin:
  inheritance: []
  permissions: PlayersManagement,ServerConsoleCommands,SetGroup,Kick,Ban,ForceclassSelf,Overwatch,Announcer
  kick_power: 8
  required_kick_power: 8
  badge_color: orange
  badge_text: "[Admin]"

moderator:
  inheritance: [admin]
  permissions: ""
  kick_power: 5
  required_kick_power: 5
  badge_color: yellow
  badge_text: "[Mod]"

### --- Player assignments ---
[players]
YourSteamID64@steam: owner
76561198012345678@steam: admin
some-central-auth-uuid@northwood: moderator

Reload after edits โ€” in-game console (press ~ as admin):

reloadperms

Kick power

A player with kick_power 8 can kick/ban anyone with required_kick_power 8 or lower. Means your owner (kick_power 10) can kick admins (required 8), admins can kick mods (required 5), mods can kick players (required 0).

Common RA commands

.restart                           โ€” restart the round
.round-end                         โ€” force end round
.kick <playerid> <reason>
.ban <playerid> <minutes> <reason>
.unban <steam64>
.mute <playerid> <minutes>
.tpto <playerid>                   โ€” teleport to a player
.tpall                              โ€” teleport all players to you
.forceclass <playerid> <role>
.give <playerid> <item>
.server_event <event>               โ€” trigger warhead / Nuke / MTF etc.
.cassie "<message>"                 โ€” speak via C.A.S.S.I.E.
reloadconfig                        โ€” reload config_gameplay.txt
reloadperms                         โ€” reload config_remoteadmin.txt
reloadbans

EXILED vs NWAPI / LabAPI

Vanilla SCP: SL has an in-game admin panel but no real plugin system. Communities add plugins via one of two frameworks:

Framework Model Plugins Performance
EXILED Harmony-patched runtime mod loader, large ecosystem ~500+ plugins, mature API Very good
NWAPI / LabAPI Official Northwood plugin system (2023+) Smaller but growing; officially supported Very good, future-proof

EXILED has the wider plugin catalogue today, and most mature servers still use it. NWAPI / LabAPI is Northwood's first-party system and will likely overtake EXILED as the ecosystem matures. Some plugins exist on both; some are EXILED-only.

๐Ÿ’ก

Pick one, not both. EXILED and NWAPI can both be installed side-by-side, but if a plugin hooks the same engine event from both frameworks, behavior is undefined. Keep all your plugins on one framework for stability.

Install EXILED

  1. Download the latest installer

    From github.com/ExMod-Team/EXILED/releases โ€” grab the current installer executable (Exiled.Installer-Linux or Exiled.Installer-Win.exe).

  2. Run the installer on the server

    SSH / panel console, run:

    ./Exiled.Installer-Linux

    Installer drops Exiled.Loader.dll into the game's Managed folder and sets up ~/.config/EXILED/.

  3. Restart the server

    Console shows [EXILED] Exiled 9.X.X is loading... and then Exiled loaded successfully.

  4. Drop plugin DLLs into the plugin folder

    Per-port path: ~/.config/EXILED/Plugins/7777/. Each plugin is a single .dll. Restart to load.

Install NWAPI / LabAPI

NWAPI ships with the server since 2023. No install needed โ€” it's already there. Drop plugin DLLs into:

~/.config/SCP Secret Laboratory/PluginAPI/7777/plugins/

Restart. Plugins show in console: [PluginAPI] Loaded plugin MyPlugin v1.0.0.

Popular plugins

EXILED (most popular)

  • CustomRoles โ€” define entirely new roles (custom HP, inventory, spawn conditions)
  • CustomItems โ€” create custom items (modified guns, keycard variants, new medkits)
  • KeepInventory โ€” preserve inventory through role changes
  • RoundReports โ€” round summary posted to a Discord webhook
  • AdminToolbox โ€” adds commands and GUI admin tools beyond vanilla RA
  • Scp035 โ€” brings back the old SCP-035 mechanic (possessed corpse)
  • Scp914Upgrades โ€” extensive 914 upgrade paths
  • Respawn Timer โ€” show next MTF/Chaos wave countdown to spectators
  • SillyKillPlugin โ€” fun kill feed

NWAPI / LabAPI

  • LabAPI Core Plugins โ€” official starter set
  • Growing catalogue at github.com/northwood-studios โ€” most EXILED plugins are being ported

Connect and test

  1. Launch SCP: Secret Laboratory

    Main menu โ†’ Play.

  2. Find your server

    Server browser โ†’ filter by name or region. Visible within 2-5 minutes of first successful verification.

  3. Direct connect

    Game console (tilde):

    connect YOUR-SERVER-IP 7777
  4. Authenticate as admin

    Join the server. Press M โ€” the Remote Admin panel should open if your Steam64 is assigned to an admin+ group.

Common errors and fixes

"Authentication failed" / server can't verify

  • Wrong Central Auth email/password โ€” re-enter via panel first-boot wizard
  • Central Auth account's email isn't verified yet โ€” check your inbox
  • Your Steam profile isn't linked to the auth account โ€” link at auth.scpslgame.com
  • Verification service outage (rare) โ€” check Northwood's Discord announcements

Server doesn't appear in browser

  • serverlist_visibility: private โ€” set to public
  • Verification failed silently โ€” check logs/ for "verification successful"
  • UDP 7777 blocked โ€” check panel firewall
  • Wait 2-5 minutes โ€” master list indexing is slow

"EXILED failed to load"

  • Your EXILED version doesn't match the current SCP: SL game version โ€” EXILED lags 24-72 hours behind major SCP patches. Wait for an EXILED update.
  • Run the installer again with the --pre-releases flag to get early builds during transition windows

Plugin loads but events don't fire

  • Plugin built against old EXILED API โ€” check its release notes for the EXILED version requirement
  • Missing dependency plugin โ€” check plugin README for "requires CustomRoles" etc.
  • Plugin's config file is malformed โ€” check ~/.config/EXILED/Configs/7777/<plugin>/config.yml; YAML is finicky about indentation

Round never starts / stuck in waiting lobby

  • Minimum player count not reached โ€” vanilla requires 2+ players
  • A plugin is blocking OnRoundStart โ€” check logs for plugin errors
  • round_start_delay is very high and countdown is still running

RA commands say "You don't have permissions"

  • Your Steam64 isn't in config_remoteadmin.txt under the right group
  • After editing config_remoteadmin.txt, you didn't run reloadperms
  • Group inherits from a non-existent parent group โ€” check the inheritance list

Server crashes mid-round

  • Check logs/<date>.log for the last exception โ€” usually a plugin
  • Disable plugins one at a time to isolate the crasher
  • Low memory โ€” upgrade RAM if plan is undersized
  • After major SCP: SL patches, disable plugins entirely for 24h while EXILED/plugin authors update

"Player kicked for abnormal activity" on good players

SCP: SL's anti-cheat has false positives on high-latency connections. Mitigations:

  • Ensure your plan's location is close to your playerbase โ€” 100+ ms ping is where false positives start
  • Lower server_tickrate from 60 to 50 if you have consistent sim hitching
  • Report persistent false positives to Northwood's Discord with the affected player's server-side log

Save / ban list reset after restart

  • File permissions wrong on ~/.config/SCP Secret Laboratory/config/7777/serverbans.txt โ€” chmod 644
  • You edited bans while the server was running; SCP: SL may overwrite on restart. Stop server before hand-editing.

Stuck on something specific? Email support with your server IP, the last 200 lines of logs/<date>.log, and your config_gameplay.txt โ€” we'll usually have an answer within the hour.