# How to Configure Your Icarus Dedicated Server (/docs/icarus/server-config)







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

Icarus uses `ServerSettings.ini` (INI format) for server configuration. Most settings live under the `[/script/icarus.dedicatedserversettings]` section header.

Config File Location [#config-file-location]

<Files>
  <Folder name="Icarus" defaultOpen>
    <Folder name="Saved" defaultOpen>
      <Folder name="Config" defaultOpen>
        <File name="ServerSettings.ini" />
      </Folder>

      <Folder name="PlayerData">
        <Folder name="DedicatedServer">
          <Folder name="Prospects" />
        </Folder>
      </Folder>
    </Folder>
  </Folder>
</Files>

> XGamingServer's Icarus image runs the Windows server binary (`IcarusServer-Win64-Shipping.exe`) through Wine on Linux, but the **config path is `Saved/Config/` directly** — there is **no** `WindowsServer/` subfolder. If you've followed older guides that mention `WindowsServer/`, that path doesn't exist on XGamingServer.

<img alt="ServerSettings.ini open in the panel editor" src={__img0} placeholder="blur" />

How to Edit [#how-to-edit]

<Steps>
  <Step>
    Stop the server [#stop-the-server]

    In the [XGamingServer Panel](https://panel.xgamingserver.com), go to **Console** and stop the server.
  </Step>

  <Step>
    Open ServerSettings.ini [#open-serversettingsini]

    Click **Files** in the sidebar and navigate to `Icarus/Saved/Config/ServerSettings.ini`.
  </Step>

  <Step>
    Make changes and save [#make-changes-and-save]

    Edit the settings under `[/script/icarus.dedicatedserversettings]`. Click **Save Content**.
  </Step>

  <Step>
    Start the server [#start-the-server]

    Start from **Console**.
  </Step>
</Steps>

ServerSettings.ini Reference [#serversettingsini-reference]

This is the actual default `ServerSettings.ini` on XGamingServer (taken directly from a fresh install):

```ini
[/Script/Icarus.DedicatedServerSettings]
SessionName=
JoinPassword=
MaxPlayers=
AdminPassword=
ShutdownIfNotJoinedFor=300.000000
ShutdownIfEmptyFor=300.000000
AllowNonAdminsToLaunchProspects=True
AllowNonAdminsToDeleteProspects=False
LoadProspect=
CreateProspect=
ResumeProspect=True
LastProspectName=
```

All settings live under `[/Script/Icarus.DedicatedServerSettings]`:

| Setting                           | Default      | Description                                                                                                           |
| --------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------- |
| `SessionName`                     | (empty)      | Server name. **Currently broken in-game** — use the `-SteamServerName` startup parameter instead                      |
| `JoinPassword`                    | (empty)      | Join password. Leave empty for a public server                                                                        |
| `MaxPlayers`                      | (empty)      | Maximum players per session. Leave empty for the game default (8).                                                    |
| `AdminPassword`                   | (empty)      | Password for admin commands. If empty, `/AdminLogin` with no argument grants admin                                    |
| `ShutdownIfNotJoinedFor`          | `300.000000` | Seconds before auto-shutdown if nobody joins. Set to `0` to disable. See [Auto-Shutdown](/docs/icarus/auto-shutdown). |
| `ShutdownIfEmptyFor`              | `300.000000` | Seconds before auto-shutdown when all players leave. Set to `0` to disable.                                           |
| `AllowNonAdminsToLaunchProspects` | `True`       | Whether non-admins can launch prospects from the lobby                                                                |
| `AllowNonAdminsToDeleteProspects` | `False`      | Whether non-admins can delete prospect saves                                                                          |
| `LoadProspect`                    | (empty)      | Load a specific prospect by name at startup                                                                           |
| `CreateProspect`                  | (empty)      | Create a new prospect. Format: `[ProspectType] [Difficulty 1-4] [Hardcore true/false] [SaveName]`                     |
| `ResumeProspect`                  | `True`       | Auto-resume the last active prospect on startup                                                                       |
| `LastProspectName`                | (auto)       | Name of last running prospect (auto-populated by the server)                                                          |

Startup Parameters [#startup-parameters]

These are set in the **Startup** tab on the panel, not in ServerSettings.ini. The XGamingServer panel exposes the most-used ones as variables you can edit directly:

<img alt="XGS panel Startup tab for Icarus" src={__img1} placeholder="blur" />

The default startup command on XGamingServer is:

```
wine ./Icarus/Binaries/Win64/IcarusServer-Win64-Shipping.exe -Log -SteamServerName=${SERVER_NAME} -PORT="${SERVER_PORT}" -QueryPort="${QUERY_PORT}"
```

| Parameter                                       | Description                                                                             |
| ----------------------------------------------- | --------------------------------------------------------------------------------------- |
| `-SteamServerName="Name"`                       | Server browser display name (64 character limit). **Use this instead of `SessionName`** |
| `-PORT=`                                        | Game port (UDP)                                                                         |
| `-QueryPort=`                                   | Steam query port (UDP) — XGamingServer assigns this per instance                        |
| `-UserDir=path`                                 | Custom base directory for server data                                                   |
| `-saveddirsuffix=suffix`                        | Append identifier to Saved folder (useful for running multiple instances)               |
| `-ResumeProspect`                               | Resume the last prospect                                                                |
| `-LoadProspect=Name`                            | Load a specific prospect                                                                |
| `-CreateProspect="Type Diff Hardcore SaveName"` | Create a new prospect on startup                                                        |
| `-Log`                                          | Show the server status console window                                                   |

For the full launch parameter reference see [Launch Parameters](/docs/icarus/launch-parameters).

Prospect System [#prospect-system]

Icarus has a unique mission-based system instead of a single persistent world:

| Mode           | Timer | Persistence | Description                                                          |
| -------------- | :---: | :---------: | -------------------------------------------------------------------- |
| **Prospects**  |  Yes  |  Temporary  | Timed missions (Tier 1–5) — gear lost if timer expires               |
| **Outposts**   |   No  |  Permanent  | Persistent bases with no timer (ARCWOOD, ICEHOLM, HOLDFAST, Olympus) |
| **Open World** |   No  |  Permanent  | `OpenWorld_Styx` — full sandbox on the Styx map                      |

Difficulty levels: 1 (Easy), 2 (Medium), 3 (Hard), 4 (Extreme). **Hardcore** mode disables respawning.

The server starts in a **lobby** where admins or players (if `AllowNonAdminsToLaunchProspects=true`) select which prospect to load. Set `ResumeProspect=true` to skip the lobby and auto-load the last session on restart.

> For a traditional "always-on" survival experience, use **Open World** (`OpenWorld_Styx`) or an **Outpost** mode.

Ports [#ports]

XGamingServer assigns the game port and query port automatically per instance — you don't need to forward anything. Check the **Startup** tab to see your exact ports.

| Variable                                    | Protocol | Purpose                              |
| ------------------------------------------- | -------- | ------------------------------------ |
| `SERVER_PORT`                               | UDP      | Game traffic                         |
| `QUERY_PORT` (`SERVER QUERY PORT` in panel) | UDP      | Steam query (server browser listing) |

Both must be reachable for the server to appear in the in-game browser and accept connections.

Related Guides [#related-guides]

* [Admin Setup](/docs/icarus/admin-setup)
* [How to Join](/docs/icarus/join-server)
* [Mod Setup](/docs/icarus/mod-setup)
* [Upload a Save](/docs/icarus/import-save)
