s&box hits Steam on April 28th after years of closed developer preview, and if you're reading this you've probably figured out that yes, you can run your own dedicated server for it. Facepunch ship a binary for both Windows and Linux (it's a .NET app), and the tooling is small enough that you can be up and running in 10 minutes once SteamCMD's installed.
I've been poking at the docs for a while now, and the flow for hosting an s&box server is genuinely tidy once you know what you're looking for. The short version is: install the server via SteamCMD (anonymous login, app ID 1892930), pick which game-on-the-platform you want to host via a command-line flag, and you're in. Longer version below.
If you'd rather skip the setup and just have a box running somewhere that isn't your desktop, we rent s&box servers at LOW.MS with automatic backups, DDoS protection, and 24/7 support. The guide below works either way – the underlying Facepunch server is the same binary whether you're hosting with us or on your own metal.
What you're actually hosting
Before we get to the commands, a quick orientation. s&box isn't one "game" in the traditional sense. It's a platform – Facepunch call it the spiritual successor to Garry's Mod – where creators publish their own games and gamemodes to the sbox.game cloud, and players jump between them from the same client. So when you host a dedicated server, you're not just launching "s&box the game", you're launching s&box with a specific gamemode loaded (e.g. facepunch.sandbox, which is Facepunch's first-party sandbox mode and the example used throughout the official docs).
This is different from how, say, Garry's Mod or ARK handle things. There's no Steam Workshop subscription step, no gamemode.cfg file shipping with twenty ConVars. Game packages live on sbox.game and your server pulls them at start time.
What you'll need
For the self-hosted path:
- A machine running Windows or Linux. Facepunch ship
sbox-server.exeas a .NET binary; on Linux you'll need the .NET Runtime installed first. We host all our games on Windows, so the rest of this guide assumes Windows paths, but the flags themselves are identical. - SteamCMD installed. If you've ever set up any other Steam-based dedicated server (ARK, CS, Rust, Valheim) you already have it.
- Enough RAM and CPU to run whatever gamemode you pick. Facepunch haven't published official server specs because it depends entirely on the game you're loading – a small Party Royale will run on a lot less than a large-map sandbox build.
- A firewall rule open for whatever port your server binds. Default game and query ports are configurable via
+portand+net_query_port, so if you're behind a firewall make sure those are open.
For the LOW.MS-hosted path the box comes pre-configured and you don't need to touch SteamCMD, so skip ahead to the "Picking a gamemode" section.
Self-hosting: the SteamCMD install
Get SteamCMD running, then:
steamcmd +login anonymous +app_update 1892930 validate +quit
1892930 is the server app ID. 590830 is the client – don't use that by mistake, it'll pull a 30+ GB install you don't need and won't give you the server binary. Plenty of secondary tutorials get this wrong; stick with 1892930.
Once that completes you'll find sbox-server.exe inside steamcmd\steamapps\common\sbox dedicated server\. That's your binary.
If you're testing against a newer build than what's on the public branch, Facepunch also publish a staging branch:
steamcmd +login anonymous +app_update 1892930 -beta staging validate +quit
For 99% of operators the default branch is what you want. Staging is for people who specifically want to play with tomorrow's build.
Picking a gamemode
This is where s&box diverges from anything you've hosted before. You tell the server which game package to load via +game:
sbox-server.exe +game facepunch.sandbox facepunch.flatgrass +hostname My Dedicated Server
Three things happening there. facepunch.sandbox is a game package on sbox.game – the "org.name" identifier. facepunch.flatgrass is an optional map package (the same flatgrass map a lot of people will recognise from Garry's Mod). +hostname is what players see in the lobby list.
Facepunch's docs document five command-line switches for the dedicated server: +game, +hostname, +net_game_server_token, +port, and +net_query_port. If you see a tutorial referencing +gamemode, +map, +maxplayers, sv_tickrate, a server.cfg, or a gamemode.json file, it's almost certainly copy-pasted from Garry's Mod or Source 1 and doesn't apply to s&box. Assume anything Source-1-flavoured you see online is wrong until you can check it against Facepunch's own docs.
You can also point +game at a local .sbproj file if you're hosting a project you're developing yourself:
sbox-server.exe +game c:/projects/mygame/.sbproj +hostname Dev Server
Missing assets and code get streamed from the server to connecting clients, which is handy for iteration. It's also the only supported way to run truly serverside-only code – when you publish a game on sbox.game, Facepunch strip out the serverside code, so a local .sbproj is the workaround.
net_game_server_token and why you probably want one
By default, every time your server restarts it generates a new Steam ID. Not a huge deal for casual servers, but if you want a persistent identity – the same server keeps showing up in lobby lists, friends' "recent" entries keep working – generate a token at Steam's game server management page and pass it:
sbox-server.exe +game facepunch.sandbox +hostname My Server +net_game_server_token YOUR-TOKEN
Facepunch note that this flag is optional and only becomes available at full release, not during the developer preview. For anything longer-lived than a quick one-off, set it.
How players find your server
s&box discovery works through Steam lobbies, not a classic Source-style in-game server browser. Players see servers in the multiplayer UI of whatever gamemode they're trying to play. This is less "paste an IP" and more "the game finds the server through Steam", and if you're coming from Garry's Mod it takes a minute to get used to.
If you need to share a direct join link, check the specific gamemode's own docs – each game on sbox.game handles its own UI and may or may not expose a copy-link button.
Admin permissions: users/config.json
This is the one config file s&box actually documents. You'll find it at users/config.json in your server directory, and it's a JSON array of Steam IDs plus a list of "claims":
[
{
"SteamId": "76561198012345678",
"Claims": ["kick", "ban", "restart"],
"Name": "Example"
}
]
A couple of things worth knowing:
- The Steam ID goes in as a string (in quotes), not a JSON number. Facepunch's own example formats it that way and the parser is fussy about it.
- The optional
Namefield is just a label for your own reference – the server doesn't use it for anything. - Claims are arbitrary strings.
"kick","ban", and"restart"are the ones Facepunch document as examples, but gamemode authors can define their own and check them viaConnection.HasPermission("..."). The host implicitly has every claim, so this file is for granting trusted players partial admin only. - Permissions aren't networked – only the host can check them. Don't rely on claims for clientside UI affordances; only for server-enforced actions.
If you're hosted with us, the Configuration Files section in the LOW.MS Control Panel exposes this file directly, so you don't need to SFTP in to edit admins.
Keeping the server updated
Re-run the SteamCMD update:
steamcmd +login anonymous +app_update 1892930 validate +quit
Facepunch don't ship an in-process auto-updater, so you'll want this on a scheduled task or, if you're hosted with us, the Steam Update button in the panel handles it with one click. Game packages themselves update separately via sbox.game's cloud, so your server pulls the latest version of the gamemode on restart without a SteamCMD step.
A few launch-day gotchas
Things worth flagging if you're about to host your first s&box server:
- If
+gameis being silently dropped or rejected with an "unrecognised command" error, the most likely culprit is a stale Steam install. Run a full validate (+app_update 1892930 validate) and try again. If that doesn't clear it, switching briefly to thestagingbranch and back is a fast sanity check on whether yourpublicbranch is out of sync. - Anticheat details haven't been published. Facepunch haven't said anything public about VAC, EAC, or BattlEye on dedicated servers, so I don't want to guess. Check whichever gamemode's own docs if your players care.
- The
+gameargument takes a package identifier, not a free-form name.+game DeathMatchwon't work. It has to be+game author.package-name, e.g.+game facepunch.sandbox. - "Server browser empty" isn't always a server problem. Because discovery goes through Steam lobbies per-gamemode, if you're looking at the wrong gamemode's lobby list you won't see your server. Join via your token or a direct Steam invite if you're unsure whether the server's even up.
For a tidier end-to-end walkthrough from the panel side, Getting started with your s&box dedicated server covers setup from the LOW.MS Control Panel, and s&box server configuration goes deeper on the CLI switches and users/config.json format. If something's broken, s&box server troubleshooting has the usual suspects.