# How to Configure Your Romestead Server (config.json) (/docs/romestead/server-config)



import { Step, Steps } from 'fumadocs-ui/components/steps';
import { File, Folder, Files } from 'fumadocs-ui/components/files';

The Romestead dedicated server reads its settings from a `config.json` file in the server's root directory. The dedicated server itself is a .NET 8 application launched as `dotnet Server.dll` from `server-files/`. Changes only take effect on **server restart**, so save your edits and then restart from the **Dashboard**.

Startup Tab vs config.json [#startup-tab-vs-configjson]

**Important:** On XGamingServer, the panel regenerates `config.json` from the **Startup** tab variables every time the server starts. If you edit `config.json` directly via the **Files** tab and then restart, your edits get **overwritten** by what's in the Startup tab.

| You want to change a setting that...    | Edit it here                                                                                                    |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Persists across restarts**            | The **Startup** tab variable (e.g. `PASSWORD`, `MAX_PLAYERS`, `PORT`, `AUTO_START_WORLD_NAME`, `ENABLE_CHEATS`) |
| **For a one-shot test** before deciding | `config.json` directly via **Files** — but it'll reset on the next restart unless you also update Startup       |

The Startup tab field names are the `UPPER_SNAKE_CASE` env-var versions of the `PascalCase` JSON keys — `MAX_PLAYERS` ↔ `MaxPlayers`, `ENABLE_CHEATS` ↔ `EnableCheats`, etc. See the [Startup tab variables reference](/docs/romestead/getting-started#startup-tab-variables) for the full mapping.

Where the Config Lives [#where-the-config-lives]

<Files>
  <Folder name="server-files" defaultOpen>
    <File name="Server.dll" />

    <File name="config.json" />

    <Folder name="linux64">
      <File name="libsteam_api.so" />
    </Folder>

    <Folder name="saves" />

    <Folder name="logs" />
  </Folder>
</Files>

The config is plain JSON — open it in the panel's Monaco code editor, change the values, save.

The Full config.json Schema [#the-full-configjson-schema]

These are the eight fields the dedicated server reads. Field names are case-sensitive:

| Field                    | Type              | Default | What it does                                                                                                                                                  |
| ------------------------ | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AutoStartWorldName`     | string            | `""`    | Name of an existing world to load on start. Leave empty if you want the server to use `AutoCreateAndLoadWorld` to spin up a fresh one                         |
| `AutoCreateAndLoadWorld` | boolean           | `true`  | If `true` and no world matches `AutoStartWorldName`, create a new world and load it automatically. Set to `false` if you want to upload a world save manually |
| `AutoCreateWorldSize`    | integer           | `1`     | Size of the auto-created world. Higher = more world to explore but more disk + RAM                                                                            |
| `AutoCreateWorldSeed`    | integer or `null` | `null`  | RNG seed for procedural generation. `null` = random seed. Set a specific number to recreate the same world layout                                             |
| `Password`               | string            | `""`    | Server password. Empty string = open server (anyone with the IP can join). Set this for a private group                                                       |
| `Port`                   | integer           | `8050`  | UDP port the dedicated server listens on. If you change it, the panel's **Network** tab port allocation must match                                            |
| `MaxPlayers`             | integer           | `8`     | Max concurrent players. Romestead is **balanced for 1-8**; stretching past 8 works on higher-tier plans but difficulty scaling targets ≤8                     |
| `EnableCheats`           | boolean           | `false` | Enable cheat commands. Useful for testing or "creative mode" worlds; leave `false` for normal play                                                            |

Edit the Config [#edit-the-config]

<Steps>
  <Step>
    Open the Files tab [#open-the-files-tab]

    From your server in the [XGamingServer Panel](https://panel.xgamingserver.com), click **Files** in the sidebar. The default working directory is `server-files/`.
  </Step>

  <Step>
    Open config.json [#open-configjson]

    Click `config.json` to open it in the **Monaco code editor**.
  </Step>

  <Step>
    Edit and save [#edit-and-save]

    Change the values you need. Mind JSON syntax — a trailing comma or unquoted string will keep the server from starting. Click **Save Content** at the bottom right.
  </Step>

  <Step>
    Restart the server [#restart-the-server]

    Go back to the **Dashboard** and click **Restart**. Watch the **Console** for the startup output confirming the new values are loaded.
  </Step>
</Steps>

Example config.json [#example-configjson]

A private 6-player server with a fixed world seed:

```json
{
  "AutoStartWorldName": "TheForumRoma",
  "AutoCreateAndLoadWorld": true,
  "AutoCreateWorldSize": 2,
  "AutoCreateWorldSeed": 1337,
  "Password": "vivatRoma",
  "Port": 8050,
  "MaxPlayers": 6,
  "EnableCheats": false
}
```

A public server using all defaults:

```json
{
  "AutoStartWorldName": "",
  "AutoCreateAndLoadWorld": true,
  "AutoCreateWorldSize": 1,
  "AutoCreateWorldSeed": null,
  "Password": "",
  "Port": 8050,
  "MaxPlayers": 8,
  "EnableCheats": false
}
```

After You Change Settings [#after-you-change-settings]

* **Always restart** — the server only reads `config.json` at startup
* **Watch the Console** — if a field is malformed, the dedicated server prints the error and stops
* **Back up first** — before changing `AutoStartWorldName` or world generation values, take a manual snapshot from the **Backups** sidebar. See [Automated World Backups](/docs/romestead/world-backups)

Troubleshooting [#troubleshooting]

| Problem                                             | Fix                                                                                                                                                                            |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Server won't start after edit                       | Check the **Console** for a JSON parse error. Open `config.json` again, fix the syntax (trailing comma, unquoted value), save, restart                                         |
| New world keeps spawning instead of loading my save | Set `AutoStartWorldName` to the exact name of your existing world. The server looks for that world first; only falls back to creating a new one if not found                   |
| Players hit the player cap                          | Increase `MaxPlayers`. If you're already at 8+ consider whether your plan has enough RAM — see the [hosting plans](https://xgamingserver.com/romestead-server-hosting#pricing) |
| Port change broke connections                       | Update the **Network** tab port allocation to match `Port` in `config.json`, and tell your players the new port                                                                |
| Want a "creative mode" test world                   | Set `EnableCheats: true` on a separate test world. Don't enable it on your main world unless you want every player to have access to cheat commands                            |
| Lost a world after restart                          | Romestead is in active Early Access — Beartwigs may break save compatibility between patches. Restore from a [backup](/docs/romestead/world-backups) taken before the update   |

Related Guides [#related-guides]

* [Join Your Server](/docs/romestead/join-server)
* [Admin Setup](/docs/romestead/admin-setup)
* [Automated World Backups](/docs/romestead/world-backups)
