# Schedule 1 Dedicated Server Setup (/docs/schedule-1/dedicated-server-setup)



import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';

<Callout type="info">
  **TL;DR:** Schedule I has no official dedicated server. The community **S1 DedicatedServerMod** (`ifBars/S1DedicatedServers`, GPL-3.0) provides headless authoritative hosting via MelonLoader. XGamingServer pre-installs the whole stack — you just configure operators in `permissions.toml` and go.
</Callout>

What is the S1 DedicatedServerMod? [#what-is-the-s1-dedicatedservermod]

The base Schedule I multiplayer is **Steam P2P**: one player's session is the authoritative world, friends join via the Steam Friends list, and if the host logs off the world is gone.

The community **S1 DedicatedServerMod** (open-source, GPL-3.0, by ifBars — repo: [`ifBars/S1DedicatedServers`](https://github.com/ifBars/S1DedicatedServers)) replaces that with a true headless authoritative server.

What it provides:

* **Headless operation** — no display required
* **Save / load / time / sleep / multiplayer flow** all preserved server-side
* **Steam-based authentication** (`SteamGameServer` provider)
* **Permissions system** with 5 built-in groups and dotted permission nodes
* **TCP console** (RCON-style remote admin, default port 4050)
* **Optional localhost web panel** (default port 4051) for browser-based admin
* **Configurable messaging backend** (FishNet RPC or Steam Networking Sockets)
* **TOML-based configuration** across three files: `server_config.toml`, `permissions.toml`, `client_mod_policy.toml`

<Callout type="warn">
  The DedicatedServerMod is **not officially affiliated with or endorsed by TVGS** — it's a community project. When Schedule I patches, the mod may need an update before it works again. XGamingServer keeps the preinstalled version aligned with the latest stable release.
</Callout>

What's pre-installed on your XGamingServer plan [#whats-pre-installed-on-your-xgamingserver-plan]

Every Schedule 1 plan ships with the full stack ready to go:

| Component                           | Purpose                                                                                           |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- |
| **Schedule I (Steam, App 3164500)** | Base game install                                                                                 |
| **MelonLoader**                     | Universal Unity mod loader (the entry point for Schedule I mods)                                  |
| **S1API**                           | Standardized modding API                                                                          |
| **S1 DedicatedServerMod**           | Headless authoritative server                                                                     |
| **Three TOML configs**              | `server_config.toml`, `permissions.toml`, `client_mod_policy.toml` (auto-generated on first boot) |
| **MultiplayerPlus** (optional)      | Raise player cap from 4 → 20                                                                      |

First-launch checklist [#first-launch-checklist]

<Steps>
  <Step>
    **Start the server from the panel.** Click **Start** on the **Dashboard**. The DedicatedServerMod boots in headless mode. The three TOML configs are auto-generated on first boot if they don't exist.
  </Step>

  <Step>
    **Verify the listen port.** Open **Network → Allocations** in the panel — the assigned UDP port is what `serverPort` in `server_config.toml` will be set to. Default upstream is `38465`.
  </Step>

  <Step>
    **Open the File Manager.** Edit `server_config.toml` to set:

    * **Server name** and any branding fields in the top-level block
    * Confirm `[authentication].authProvider = 'SteamGameServer'` for public servers
    * Confirm `[storage].saveGamePath` is set (it should be already — the server refuses to start without it)
  </Step>

  <Step>
    **Add yourself as operator.** Open **Console** tab and run:

    ```
    op 76561198000000000
    ```

    (replace with your SteamID64 from [steamid.io](https://steamid.io/)). Or edit `permissions.toml` directly — see [Operators, Admins & TCP Console](/docs/schedule-1/operators-admins).
  </Step>

  <Step>
    **Decide on player cap.** Vanilla = 4. To raise it to 20, install the MultiplayerPlus mod on the server (and all clients). See [MultiplayerPlus →](/docs/schedule-1/multiplayerplus).
  </Step>

  <Step>
    **Restart the server** for any config changes that need it (run `reloadconfig` / `reloadpermissions` in the **Console** for hot reloads where possible).
  </Step>

  <Step>
    **Share your IP:port** with your crew. They install the **DedicatedServerMod client launcher** on their copy of Schedule I, type your IP and port, and connect directly — Steam P2P is bypassed entirely.
  </Step>
</Steps>

Config file references [#config-file-references]

See [Server Config Reference](/docs/schedule-1/server-config) for the full field list. Key blocks:

* `[storage]` — `saveGamePath` (required)
* `[authentication]` — Steam-based auth (recommended `SteamGameServer`)
* `serverPort` — top-level UDP port for gameplay (default 38465)
* `[messaging]` — FishNetRpc (default) or SteamNetworkingSockets
* `[gameplay]` — sleep, time progression, pause-when-empty
* `[webPanel]` — optional browser admin (off by default)
* `[tcpConsole]` — RCON-style TCP admin (localhost by default, port 4050)

The authoritative reference lives at: [docs.s1servers.com](https://docs.s1servers.com/).

Networking — ports [#networking--ports]

| Default     | Field                         | Purpose              |
| ----------- | ----------------------------- | -------------------- |
| `38465` UDP | `serverPort` (top-level)      | Gameplay traffic     |
| `27016` UDP | `steamGameServerQueryPort`    | Steam server query   |
| `4050` TCP  | `[tcpConsole].tcpConsolePort` | Remote admin console |
| `4051` HTTP | `[webPanel].webPanelPort`     | Optional web admin   |

On XGamingServer hosting the gameplay port is pre-assigned in **Network → Allocations**; everything else binds to localhost by default and reaches you over an SSH tunnel.

The DedicatedServerMod **bypasses Steam P2P entirely**. Players connect via IP:port using the client launcher mod, not via Steam friends.

Linux / Docker hosting [#linux--docker-hosting]

The official repo ships Docker images supporting both **Mono** and **Il2Cpp** runtimes via environment variables. Linux native hosting needs Wine for the Mono runtime; Il2Cpp on Linux is in beta. For most users the smoother path is **Windows hosting**, which is what XGamingServer uses.

Related Guides [#related-guides]

* [Server Config Reference →](/docs/schedule-1/server-config)
* [Operators, Admins & TCP Console →](/docs/schedule-1/operators-admins)
* [Commands Reference →](/docs/schedule-1/commands-reference)
* [MultiplayerPlus — Raise the Cap →](/docs/schedule-1/multiplayerplus)
* [Web Panel →](/docs/schedule-1/web-panel)
* [Backup and Restore →](/docs/schedule-1/backup-restore)
* [Troubleshooting →](/docs/schedule-1/troubleshooting)

> **Need this fully managed?** [XGamingServer Schedule 1 hosting](https://xgamingserver.com/schedule-1-server-hosting) preinstalls MelonLoader + DedicatedServerMod + S1API on every plan. From **$17.50/month** (Rookie tier, 8 GB / 3 cores), 30% off your first month with code `XGAMEON`.
