How to Make a Schedule 1 Dedicated Server (2026 Setup Guide)
Set up a Schedule I dedicated server with the S1DS mod on Windows, Linux with Wine or Docker. Config, ports, first boot and updates.
Updated Sep 30, 2026 · 11 min read
On this page
- How a Schedule I dedicated server works
- What you need
- Step 1: Copy the game to a server folder
- Step 2: Install MelonLoader and the server mod
- Step 3: First boot
- Step 4: Edit server_config.toml
- Step 5: Open the ports
- Step 6: Friends connect
- Linux: Docker or Wine
- Updating after a game patch
- Common problems
- The easier option
- FAQ
Schedule I has co-op for up to 4 players, but the world only exists while the host is playing. There is no official dedicated server. The community mod S1DedicatedServers (S1DS) by ifBars fills that gap: it runs the full game headless as a server, keeps the world online around the clock and lets up to 64 players join by IP. This guide covers setting it up yourself on Windows, on Linux with Wine or the official Docker image, and keeping it updated afterwards.
Short on time? A hosted Schedule I server comes with the game, MelonLoader and S1DS already installed. Our quick start for hosting a Schedule 1 server walks through it.
How a Schedule I dedicated server works
S1DS is free and open source (GPL-3.0), with source on GitHub and documentation at docs.s1servers.com. It is not made or endorsed by TVGS, the studio behind Schedule I.
Instead of a separate server program, S1DS loads into a copy of the game through MelonLoader and starts it in batch mode with no graphics. A few things follow from that:
- The server needs its own copy of the game files. That means a Steam account that owns Schedule I (Steam app ID
3164500). - Every player needs the client mod. The vanilla game cannot join an S1DS server. Players install the matching client package, covered in how to join a Schedule 1 dedicated server.
- Everything must match. The server and every player must run the same game build and the same runtime.
IL2CPP or Mono
Schedule I ships in two runtimes, and S1DS supports both:
| Runtime | Steam branch | S1DS files |
|---|---|---|
| IL2CPP | The default branch, what everyone has unless they opted into a beta | Il2cpp_Server.zip, Il2cpp_Client.zip |
| Mono | The alternate beta branch (Steam, Properties, Betas) |
Mono-Server.zip, Mono-Client.zip |
Pick IL2CPP unless your group already plays on the alternate branch or uses mods that need Mono. Whichever you choose, the server and all players must be on it.
What you need
- A Windows PC or server that stays on. Windows is the primary target. Linux works through Wine or Proton, or the Docker image covered below. Schedule I itself is Windows only.
- A copy of Schedule I on a Steam account that owns it.
- CPU and RAM headroom. The S1DS docs list 2 vCPUs at about 2.0 GHz and 4 GB of RAM as the bare minimum, and that was observed at roughly 72% CPU and 3.0 GB of RAM in use with only 0 to 1 players. Treat it as a floor, not a target:
| Group | Suggested RAM for the server |
|---|---|
| Testing, 1 or 2 players | 4 to 6 GB |
| Up to 8 players | 8 GB |
| 9 to 16 players with lots of buildings and employees | 12 GB or more |
These are our planning numbers built on that baseline. Wine adds overhead on Linux, so lean higher there. More on sizing in how much RAM a game server needs.
- MelonLoader, version
0.6.x,0.7.0or0.7.2and newer. Avoid0.7.1, which S1DS does not support. - Access to your router if friends outside your home will join.
Step 1: Copy the game to a server folder
Keep your normal game install for playing, and make a separate copy for the server.
- In Steam, right click Schedule I, choose Manage, then Browse local files.
- Copy the whole folder to a new location, for example
C:\S1Server. This copy becomes the dedicated server install.
If the server is a different machine, copy the folder across, or install the game there with the same Steam account.
Step 2: Install MelonLoader and the server mod
- Install MelonLoader into the server copy for the runtime you picked, pointing the installer at
C:\S1Server\Schedule I.exe. - Download the latest S1DS release from GitHub Releases. At the time of writing that is v1.1.0, released on 21 September 2026.
- Extract
Il2cpp_Server.zip(orMono-Server.zip) intoC:\S1Serverso itsModsfolder merges with the game's andstart_server.batlands next toSchedule I.exe. - Check that
steam_appid.txtsits besideSchedule I.exeand contains only:
3164500
The packaged start_server.bat creates this file if it is missing. If you ever start the executable another way, create it yourself, or the Steam game server API can fail to start.
Only install a Server package on the server. Players install the Client package on their own game.
Step 3: First boot
Run start_server.bat. It is a one line launcher:
start "" "Schedule I.exe" --batchmode --nographics --dedicated-server --stdio-console %*
The game starts with no window, MelonLoader opens its console, and S1DS writes its config files into C:\S1Server\UserData\:
| File | What it holds |
|---|---|
server_config.toml |
Name, ports, password, auth, autosave, gameplay and console settings |
permissions.toml |
Staff groups, bans and command access |
client_mod_policy.toml |
Rules for which client mods players may run |
Once it has finished starting, close it so you can edit the config.
Hosting and playing on the same PC? Start your normal Schedule I client first, then start_server.bat. Steam may refuse to open the game client after the server is already running, but the reverse order works.
Step 4: Edit server_config.toml
The file is TOML, grouped into sections. These are the settings most people change, with their defaults:
[server]
serverName = 'Schedule One Dedicated Server'
serverDescription = 'A dedicated server for Schedule One'
maxPlayers = 16
serverPort = 38465
serverPassword = ''
[gameplay]
allowSleeping = true
pauseGameWhenEmpty = false
timeProgressionMultiplier = 1.0
[autosave]
autoSaveEnabled = true
autoSaveIntervalMinutes = 15.0
autoSaveOnPlayerJoin = true
autoSaveOnPlayerLeave = true
[performance]
targetFrameRate = 60
[storage]
saveGamePath = ''
What they do:
maxPlayers: 16 by default, up to a hard limit of 64. S1DS ignores the vanilla 4 player lobby cap for direct IP joins. More on player counts in Schedule 1 with more than 4 players.serverPassword: in v1.1.0 this only marks the server as password protected in Steam and the public list. The client has no password box and the server does not check it, so do not rely on it to keep people out. Steam sign in, keeping your address private andbanare the real controls.pauseGameWhenEmpty: set totrueif the world should stop ticking while nobody is online, so crops and deals do not progress unattended.timeProgressionMultiplier: speeds up or slows down in game time. Keep it above zero.targetFrameRate: the server's tick target. The docs call 30 to 60 the normal range.saveGamePath: leave it empty and the server creates and usesUserData/DedicatedServerSave, which is the recommended start. To host a specific world, point it at the save folder with a single quoted Windows path, for example'C:\Users\you\AppData\LocalLow\TVGS\Schedule I\Saves\<SteamID>\SaveGame_1'.
Bringing an existing co-op or single player world across needs care, because the server keeps its own Players\Player_0 data that you must not overwrite. The steps are in how to transfer a Schedule 1 save to a dedicated server.
Leave the [authentication] section on its defaults (authProvider = 'SteamGameServer', anonymous login, query port 27016, client mod checks on) unless you have a reason to change it.
Most keys can also be overridden at launch, since start_server.bat passes extra arguments to the game:
start_server.bat --server-name "Hyland Point Crew" --max-players 8
There is no server side launch flag for the port, so change serverPort in the file. Save, then start the server again with start_server.bat.
Step 5: Open the ports
| Port | Protocol | Purpose | Forward it? |
|---|---|---|---|
38465 (serverPort) |
UDP | Game traffic | Yes |
38465 (serverPort) |
TCP | S1DS status query, used by the server list, Favorites and add flows | Yes |
27016 (steamGameServerQueryPort) |
UDP | Steam query | Yes, with the default SteamGameServer auth |
4050 (tcpConsolePort) |
TCP | Remote admin console | Only if you enable it and bind it beyond localhost |
4051 (webPanelPort) |
TCP | Built in web panel | Never, it is loopback only |
- Give the server a fixed local IP in your router.
- Forward
38465on both UDP and TCP, plus27016UDP, to that address. - Allow the same ports through Windows Defender Firewall.
The classic mistake is forwarding 38465 as UDP only. Joins may work, but the server shows as unavailable when players try to add or favorite it. Our port forwarding guide covers routers step by step. If your provider uses CGNAT, forwarding will not work at all.
Step 6: Friends connect
Each player installs MelonLoader and the matching S1DS Client package into their own game, on the same runtime and game version as the server. Then, from the main menu:
- Click Servers.
- Open Direct Connect and type the server's public IP and port (
38465) into the separate IP and Port fields. - Saved servers appear under Favorites and History. There is also a Public tab, but servers only appear there if you opt in with a listing credential from the S1 server portal.
If anyone gets stuck, send them to Schedule 1 can't connect to dedicated server.
To give yourself admin rights, type op <your name or SteamID64> into the server console. The full list is in Schedule 1 dedicated server commands.
Linux: Docker or Wine
S1DS has no native Linux build, because the game itself is Windows only. There are two routes.
The official Docker image
The easiest option on Linux is the image published at ghcr.io/ifbars/s1dedicatedservers. It is built on Wine 11 with Xvfb and preinstalls the Windows runtimes MelonLoader needs, including the .NET 6 desktop runtime for IL2CPP. On first start it downloads the game through SteamCMD, which needs a Steam account that owns Schedule I. Anonymous login cannot download the game.
docker run --name s1ds \
-p 38465:38465/udp \
-p 38465:38465/tcp \
-p 27016:27016/udp \
-e STEAM_USER=your_steam_login \
-e STEAM_PASS=your_steam_password \
-e S1DS_RUNTIME=il2cpp \
-v s1ds-game:/home/steam/game \
ghcr.io/ifbars/s1dedicatedservers:latest
Useful environment variables:
S1DS_RUNTIME:mono(the image default) oril2cpp. The container picks the matching Steam branch for you.STEAM_GUARD: a Steam Guard code if Steam asks for one on first login.FORCE_STEAMCMD_UPDATE=true: forces a fresh game update on the next start.STEAM_BRANCH: only set this if you deliberately want a non default branch.
For Compose, copy docker-compose.example.yml from the Docker.zip release to docker-compose.yml, put the same variables in a .env file beside it, and run docker compose up -d. It also persists the SteamCMD and Steam folders. Edit server_config.toml inside the mounted game volume after first boot, and pin an exact version tag instead of latest if you want controlled upgrades.
Wine by hand
You can also run the Windows install under Wine or Proton yourself. It is unofficial territory and usually takes troubleshooting. The Docker image is a working reference: it launches the game with WINEDLLOVERRIDES set so MelonLoader's version.dll proxy loads, uses the native Steam DLLs from the Steamworks redistributable, and runs with these arguments:
-batchmode -nographics --dedicated-server --require-auth --auth-provider steam_game_server --messaging-backend steam_networking_sockets --steam-gs-anonymous
IL2CPP under Wine also needs the .NET 6 desktop runtime and the Visual C++ 2019 runtime in the Wine prefix. If you are not already comfortable with Wine prefixes, use the Docker image.
Updating after a game patch
When TVGS ships an update, players' games update automatically and they can no longer join an older server. To update:
- Stop the server and back up the save folder (
UserData/DedicatedServerSaveor yoursaveGamePath). - Update the server's game files, either by copying the freshly updated game folder again or letting SteamCMD update it.
- Check the S1DS releases for a new version and extract the new Server package over the install. Players then update their Client package to match.
- On IL2CPP, delete
MelonLoader/Dependencies/Il2CppAssemblyGenerator/Cpp2IL/cpp2il_out. It is a disposable cache, and stale files there cause errors such asPass11ComputeTypeSpecificsafter a game update. MelonLoader regenerates it on the next start. The Docker image does this for you on every start. - Start the server and watch the console until it finishes loading.
Autosave does not replace backups, so keep dated copies of the save folder before every update.
Common problems
- Steam game server API fails to initialize:
steam_appid.txtis missing, the server was not started from the game folder, or another program is using38465or27016. - Players connect then drop after a few seconds: usually the authentication handshake timing out. Make sure
27016UDP is reachable, and considerauthTimeoutSeconds = 60under[authentication]. - The server shows as unavailable in Favorites:
38465is forwarded for UDP but not TCP.
More fixes are in Schedule 1 can't connect to dedicated server.
The easier option
Self hosting works, but it means a machine left on all day, ports on both UDP and TCP, and redoing the update steps whenever the game or mod changes. On GamezServers we install the game, MelonLoader, S1DS, Wine and the runtimes, set up the ports and config, and give you an address with no port forwarding. You pick the Normal version (IL2CPP, recommended) or the Mono version, and an Update game button reinstalls the newest game and mod with the world backed up first. Plans start at 14.99 USD a month for 6 GB, and you can split the bill with up to 10 friends. The quick start guide shows the whole process.
FAQ
Is there an official Schedule 1 dedicated server?
No. Schedule I only has host based co-op for up to 4 players. Dedicated servers come from the community mod S1DedicatedServers (S1DS).
How many players can a Schedule 1 dedicated server hold?
S1DS defaults to 16 players and allows up to 64 through maxPlayers. Your hardware is the real limit.
Can I run a Schedule 1 server on Linux?
Yes, through Wine. The easiest route is the official Docker image, ghcr.io/ifbars/s1dedicatedservers, which bundles Wine and the required runtimes.
Do my friends need mods to join?
Yes. Everyone needs MelonLoader and the S1DS Client package that matches the server's runtime and version.
Skip the setup. Your Schedule I server, live in 60 seconds.
Plans first month from $7.49. No command line, cancel any time.