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.
-
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.
-
Wait for SteamCMD
Server binary is ~4 GB. First install takes 3-6 minutes.
-
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.
-
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.
-
Create a Central Auth account
Register at auth.scpslgame.com. Verify your email. Confirm your account owns SCP: SL via your Steam profile link.
-
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.
-
Server gets verified
After first successful verification, the server binds to your account permanently (a
verkey.txtis written intoAppData/SCP Secret Laboratory/). Future boots don't need the password. Keep that file safe โ it IS your verification token. -
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, orprivate.publicfor community servers.friendly_fireโtrueorfalse. 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
-
Download the latest installer
From github.com/ExMod-Team/EXILED/releases โ grab the current installer executable (
Exiled.Installer-LinuxorExiled.Installer-Win.exe). -
Run the installer on the server
SSH / panel console, run:
./Exiled.Installer-LinuxInstaller drops
Exiled.Loader.dllinto the game's Managed folder and sets up~/.config/EXILED/. -
Restart the server
Console shows
[EXILED] Exiled 9.X.X is loading...and thenExiled loaded successfully. -
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
-
Launch SCP: Secret Laboratory
Main menu โ Play.
-
Find your server
Server browser โ filter by name or region. Visible within 2-5 minutes of first successful verification.
-
Direct connect
Game console (tilde):
connect YOUR-SERVER-IP 7777 -
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 topublic- 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-releasesflag 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_delayis very high and countdown is still running
RA commands say "You don't have permissions"
- Your Steam64 isn't in
config_remoteadmin.txtunder the right group - After editing
config_remoteadmin.txt, you didn't runreloadperms - Group inherits from a non-existent parent group โ check the
inheritancelist
Server crashes mid-round
- Check
logs/<date>.logfor 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_tickratefrom 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.