Configuration
The server reads settings from server_config.toml under the MelonLoader user data directory. The file is created automatically on first run.
If you already have a legacy server_config.json, the server will import it automatically on first run and write the migrated TOML file next to it.
The dedicated server now uses separate config files by responsibility:
server_config.toml: runtime server settings such as ports, auth, autosave, gameplay, logging, and messagingpermissions.toml: groups, bans, direct grants and denies, and console command authorizationclient_mod_policy.toml: client mod verification policy overrides
If the server detects a legacy permission section in server_config.toml, it migrates that data into permissions.toml and rewrites the normalized server config without the deprecated section.
Required
saveGamePath: full path to the save folder you want to host
Windows example:
[storage]
saveGamePath = 'C:\Users\you\AppData\LocalLow\TVGS\Schedule I\Saves\<SteamID>\SaveGame_1'
The folder must contain files such as Game.json and Metadata.json.
Recommended
serverPortserverNameserverDescriptionmaxPlayersserverPasswordfor private servers
Authentication
Use Steam ticket authentication on public servers to verify player identities:
[authentication]
authProvider = 'SteamGameServer'
authTimeoutSeconds = 15
authAllowLoopbackBypass = true
steamGameServerLogOnAnonymous = true
steamGameServerQueryPort = 27016
steamGameServerMode = 'Authentication'
Quick reference:
authProvideroptions:None,SteamGameServer,SteamWebApiSteamGameServeris recommended for public serversNoneis acceptable for private LAN serversSteamWebApiis not fully implemented yetrequireAuthenticationis still accepted as a legacy compatibility flag, but new configs should preferauthProvider
See Authentication Guide for:
- provider comparison
- configuration examples
- troubleshooting
- security guidance
Client Mod Verification
Client mod verification runs after authentication and before a player is fully admitted to the server.
[authentication]
modVerificationEnabled = true
modVerificationTimeoutSeconds = 20
blockKnownRiskyClientMods = true
allowUnpairedClientMods = true
strictClientModMode = false
Quick reference:
modVerificationEnableddefaults totrue- paired companion mods are discovered automatically from installed server mods
- unpaired client-only mods are allowed by default
- known risky client mods are blocked by default
strictClientModModeis available for hardened/private servers
See Client Mod Verification for:
- the full config and
client_mod_policy.tomlformat - deny-list examples
- strict mode behavior
- command-line overrides
Messaging Backend
Choose how custom server-client messages are transmitted:
[messaging]
messagingBackend = 'FishNetRpc'
The same key names are still used as before; TOML just groups them into sections and allows inline comments.
Recommended:
FishNetRpcfor Mono buildsSteamNetworkingSocketsfor IL2CPP and dedicated server deployments
Avoid:
SteamP2Pfor dedicated server hosting; it is not the recommended path here
See Messaging Backends Guide for:
- backend comparison
- deployment guidance
- configuration examples
- security and performance notes
Access Control
Access control now lives in permissions.toml, not server_config.toml.
- use
permissions.tomlfor built-in staff groups, bans, and direct user rules - use
reloadpermissionsafter editing the file on a running server - see Permissions for the file format and default group layout
Auto-Save
autoSaveEnabledautoSaveIntervalMinutesautoSaveOnPlayerJoinautoSaveOnPlayerLeave
See Auto-Save for details.
Gameplay
ignoreGhostHostForSleepallowSleepingpauseGameWhenEmptytimeProgressionMultiplier
Current builds already force headless time progression to remain positive at runtime, so there is no separate timeNeverStops toggle.
See Gameplay for details.
TCP Console
Enable remote console access via TCP:
[tcpConsole]
tcpConsoleEnabled = false
tcpConsoleBindAddress = '127.0.0.1'
tcpConsolePort = 38466
tcpConsoleMaxConnections = 3
tcpConsoleRequirePassword = false
tcpConsolePassword = ''
- Use
127.0.0.1for local-only access - Use a password before exposing it remotely
- Keep the listener bound narrowly unless you really need remote administration
Web Panel
Enable the integrated localhost web panel only when you want a browser-based operator UI on the same machine as the server:
[webPanel]
webPanelEnabled = true
webPanelBindAddress = '127.0.0.1'
webPanelPort = 4051
webPanelOpenBrowserOnStart = true
webPanelSessionMinutes = 120
webPanelExposeLogs = true
webPanelEnableddefaults tofalse- v1 is loopback-only and intended for local/home-hosted administration
- hosted providers should usually leave it disabled and use the stdio host console path instead
- if enabled, the server can attempt to open the launch URL automatically and falls back to logging the URL when that is not possible
See Web Panel for behavior, security model, and deployment guidance.
Host Console
Enable panel-friendly stdin/stdout console support:
[tcpConsole]
stdioConsoleMode = 'Auto'
Disabled: never start the stdio host console transportAuto: start stdio console only when stdin is redirectedEnabled: always start stdio consoleAutois the default because hosted panels usually inject commands through stdin, while local desktop runs should avoid stealing the interactive console unless you explicitly opt in
See Host Console for deployment guidance and runtime behavior.
Performance
[performance]
targetFrameRate = 60
vSyncCount = 0
targetFrameRate: 30-60 is the normal dedicated-server rangevSyncCount: should usually stay0
Starting The Server
- Use
start_server.batfrom the release package to launch the dedicated server install. - The server refuses to start if
saveGamePathis not set.
Command-Line Arguments
All server_config.toml settings can be overridden via command line arguments. These take precedence over values in server_config.toml.
Permission graph data lives in permissions.toml and is managed separately.
Server Startup
| Argument | Description | Example |
|---|---|---|
--dedicated-server or --server |
Enable dedicated server mode and auto-start | --dedicated-server |
--server-name <name> |
Set server name | --server-name "My Server" |
--max-players <count> |
Set maximum players | --max-players 16 |
--server-password <password> |
Set server password | --server-password "secret" |
Authentication
| Argument | Description | Example |
|---|---|---|
--require-authentication or --require-auth |
Require authentication for players | --require-authentication |
--auth-provider <provider> |
Set auth provider | --auth-provider SteamGameServer |
--auth-timeout <seconds> |
Authentication timeout in seconds | --auth-timeout 30 |
--steam-gs-anonymous |
Use anonymous Steam server login | --steam-gs-anonymous |
--steam-gs-token <token> |
Set Steam game server token | --steam-gs-token "xxxxx" |
Client Mod Verification
| Argument | Description | Example |
|---|---|---|
--mod-verification |
Enable client mod verification | --mod-verification |
--no-mod-verification |
Disable client mod verification | --no-mod-verification |
--mod-verification-timeout <seconds> |
Set mod verification timeout | --mod-verification-timeout 30 |
--strict-client-mod-mode |
Enable strict client mod mode | --strict-client-mod-mode |
--allow-unpaired-client-mods <true|false> |
Allow client-only mods without a paired server mod | --allow-unpaired-client-mods true |
--block-known-risky-client-mods <true|false> |
Enable built-in risky client mod blocking | --block-known-risky-client-mods true |
Networking
| Argument | Description | Example |
|---|---|---|
--messaging-backend <backend> |
Set messaging backend | --messaging-backend SteamNetworkingSockets |
--steam-p2p-relay <true/false> |
Allow Steam P2P relay | --steam-p2p-relay true |
--steam-p2p-channel <channel> |
Set Steam P2P channel | --steam-p2p-channel 0 |
--server-steamid <steam_id> |
Set Steam P2P server SteamID | --server-steamid 90000000000000000 |
Host Console
| Argument | Description | Example |
|---|---|---|
--stdio-console |
Always enable stdio host console | --stdio-console |
--no-stdio-console |
Disable stdio host console | --no-stdio-console |
--stdio-console-auto |
Enable stdio host console only when stdin is redirected | --stdio-console-auto |
Legacy Permission Bootstrap
These flags remain for compatibility with the older config-based permission flow. Prefer editing permissions.toml and using reloadpermissions for normal administration.
| Argument | Description | Example |
|---|---|---|
--add-operator <steam_id> |
Seed the built-in operator group during legacy migration/bootstrap |
--add-operator 76561198000000001 |
--add-admin <steam_id> |
Seed the built-in administrator group during legacy migration/bootstrap |
--add-admin 76561198000000001 |
TCP Console
| Argument | Description | Example |
|---|---|---|
--tcp-console |
Enable TCP console | --tcp-console |
--tcp-console-port <port> |
Set TCP console port | --tcp-console-port 38466 |
--tcp-console-max-connections <limit> |
Set maximum TCP console connections | --tcp-console-max-connections 3 |
--tcp-console-bind <address> |
Set TCP bind address | --tcp-console-bind 0.0.0.0 |
--tcp-console-password <password> |
Set TCP console password | --tcp-console-password "adminpass" |
Performance
| Argument | Description | Example |
|---|---|---|
--target-framerate <fps> |
Set target framerate | --target-framerate 60 |
--vsync <count> |
Set VSync count | --vsync 0 |
Debug
| Argument | Description | Example |
|---|---|---|
--debug |
Enable debug mode | --debug |
--verbose |
Enable verbose logging | --verbose |
Example:
start_server.bat --dedicated-server --server-name "My Server" --auth-provider SteamGameServer --mod-verification --block-known-risky-client-mods true
Networking (Port Forwarding)
- Forward the value of
serverPortfrom your router to the server machine if players are connecting from outside your LAN. - Forward both TCP and UDP.
- Ensure the OS firewall also allows inbound traffic on that port.
Helpful links:
- Beginners Guide to Port Forwarding (Tinkernut)
- Router-specific port forwarding guides (PortForward.com)
Some ISPs use CGNAT. If port forwarding does not work, you may need a public IPv4, IPv6, or a hosted server.