ICARUS · DEDICATED SERVER SETUP · NOVEMBER 2026

How to Set Up an Icarus Dedicated Server

From a SteamCMD install to friends joining your Open World: the ports, launch line and ServerSettings.ini values that make an Icarus dedicated server show up in the list and stay running.

Browser listing depends on the query port

If UDP query traffic cannot reach the server, friends will not see it in Join Session even if the world itself is healthy. The game port handles play traffic after joining; the query port is what gets you listed.

The name comes from the launch line

SessionName in the INI currently does nothing for the browser entry. Use -SteamServerName="Your Server Name", then restart so the new name is registered.

A server can be up but still have no world loaded

Icarus runs one prospect at a time. If none is loaded, the server sits in a lobby state, which is valid, but players will land in the lobby until someone creates or loads a prospect.

The five-minute shutdown is the usual trap

Both idle timers default to 300 seconds. That is useful for mission-style lobby flow, but it is the wrong behaviour for an always-on Open World unless you change those values.

Before you start: what an Icarus dedicated server is

An Icarus dedicated server is a separate Windows server process that holds one active prospect at a time. If no prospect is loaded, it does not become useless or broken; it waits in a lobby state that players can join, then use to create or load an Open World, Outpost or mission. That one-world-at-a-time design is why prospect management matters more here than it does in some survival servers.

The dedicated server supports up to 8 players and it is free to run. It is also the better fit for a persistent Open World because the save lives on the server instead of on one player’s PC. It is PC only, so if your group is mixing platforms, check whether Icarus servers support crossplay before you build anything around a console player joining.

This guide sticks to the supported Windows build. You can self-host on a Windows PC at home or rent a server that already has the ports and Windows side handled for you. If you are still choosing hardware or a rental plan, the practical starting point is how much RAM an Icarus server needs.

What you need in advance is simple: a Windows machine or rented server, router access if you are self-hosting, a join password and admin password ready, and a decision on how you want an empty server to behave. The setup path below follows the order that avoids most first-day mistakes.

The diagram below shows the whole path from install to your friends joining.

The Icarus dedicated server setup path
Four stages, in the order that avoids most first-day problems
1. Install
SteamCMD
app 2089300
login anonymous
No Icarus licence needed
2. Open the ports
UDP 17777 game
UDP 27015 query
Forward both at home
3. Launch and configure
IcarusServer.exe -Log
-SteamServerName
ServerSettings.ini
Passwords and timers
4. Join
Join Session
dedicated servers toggle
pick by name
Lobby if no prospect
Decide before friends join
  • Join and admin passwords
  • Keep the world loaded when empty, or fall back to the lobby
  • Who may launch or delete prospects
  • Who updates the server after weekly patches
Up to 8 players. The server is a Windows build and only PC players can join.
Install, open both ports, launch with a name and settings, then join from the dedicated server list.

Step 1: install the server with SteamCMD

Icarus uses a separate dedicated server app in SteamCMD, so you do not need a normal Icarus licence on the machine just to install the server. That matters for rented boxes and spare PCs because it keeps the server side clean: one app, one folder, anonymous login, no Steam client session fighting with your personal account.

force_install_dir C:\IcarusServer
login anonymous
app_update 2089300 validate

That installs the dedicated server app ID 2089300 into C:\IcarusServer. The executable you will launch is the Windows build, IcarusServer.exe. If you prefer a different folder, change the install directory here and keep the rest of the guide pointed at the same location.

The server’s config lives under Saved\Config\WindowsServer\. On a first setup, do not worry if that path is missing yet; Icarus creates its Saved structure after the server has been launched into a lobby or prospect at least once.

Step 2: open the right ports and let the server through the firewall

Icarus uses two UDP ports by default: 17777 for the game traffic and 27015 for server queries. The query port is the one that decides whether the server appears in the dedicated server browser. That is why some servers look healthy in a console window yet never show up for friends: only the game port is reachable, so nobody can discover it in the first place.

For a self-hosted server, forward both UDP ports on your router to the Windows PC running the server. Then allow the server through Windows Firewall so those packets are not dropped locally after they make it across the internet. If you only forward the game port, clients may still fail at the very first step because the Steam server browser never gets a valid query response.

If you run more than one Icarus server on the same machine, each instance needs its own game port and query port. You change those with -PORT= and -QueryPort= on the launch line, then forward the matching pair. Changing ports does not improve performance by itself; it simply prevents one server from trying to bind to a port already used by another.

On a rented server, the host normally assigns the ports and opens them for you, often on values that are not the defaults because the IP is shared. In that case there is no home router forwarding to do. Use the assigned ports exactly as given.

This is the important split to keep in mind when something is invisible or unreachable.

Two ports, two different jobs
Showing up in the list
Friend’s Join Session list
Steam query · UDP 27015
Your server
Playing
Friend’s game
game traffic · UDP 17777
Your server
Change them with -QueryPort= and -PORT=. A second server on the same machine needs its own pair. Rented servers usually get different numbers from the host.
A blocked query port hides a healthy server from the list. A blocked game port lets friends see it but not get in.
  • UDP 27015 query port: discovery and browser listing.
  • UDP 17777 game port: actual play traffic after a client joins.

How to tell this step helped: after a clean restart, the server should appear under dedicated servers in Join Session. If you have just restarted it, allow 5 to 10 minutes for the Steam master server list to refresh before assuming the query port is still wrong.

Step 3: launch it with the right parameters

The launch line controls what friends see in the browser, what ports the server binds to, and whether you get a live log window. Always include -Log; without it, nothing visible appears on screen while the server runs, which makes first-time setup harder than it needs to be.

"C:\IcarusServer\IcarusServer.exe" -Log -SteamServerName="Friends Open World" -PORT=17777 -QueryPort=27015

The name in the dedicated browser comes from -SteamServerName, not from the INI. SessionName currently does nothing for browser naming. Keep the Steam server name under the 64-character limit, and remember that any name change only shows up after a restart because the server has to register again.

Step 4: set up ServerSettings.ini

ServerSettings.ini is generated on the first lobby or prospect launch. If the file is not there yet, start the server once, let it reach the lobby, stop it, then edit the file in [ServerInstallDirectory]\Icarus\Saved\Config\WindowsServer\. RocketWerkz also provides a template copy you can place there manually. If you use a custom Saved location with -UserDir=, the same relative Saved\Config\WindowsServer\ path applies there instead, and the Saved folder can also live under %localappdata%\Icarus\.

For a friends-only persistent Open World, the safest starting point is to lock down admin access, stop non-admins from changing prospects in the lobby, and prevent empty-server shutdown. This is RocketWerkz’s own template with those values filled in. Swap in your own passwords; the table underneath explains every line.

[/Script/Icarus.DedicatedServerSettings]
SessionName=
JoinPassword=SetAJoinPassword
MaxPlayers=8
AdminPassword=SetAnAdminPassword
ShutdownIfNotJoinedFor=-1
ShutdownIfEmptyFor=-1
AllowNonAdminsToLaunchProspects=False
AllowNonAdminsToDeleteProspects=False
LoadProspect=
CreateProspect=
ResumeProspect=True
LastProspectName=
Key What it does Recommended value Why
SessionName Legacy session field in the template Leave blank It currently does nothing. The browser name comes from -SteamServerName on the launch line.
JoinPassword Password players enter when they join Set one for a private friends server Your server is listed publicly in the dedicated server browser, so without a password anyone who finds it can walk in. Leave it empty only if that is what you want.
MaxPlayers Slot cap from 1 to 8 8, or your group size if you want a hard cap Icarus sessions top out at eight players, so this only limits how many can be on at once. A lower cap keeps a slot from being taken by someone outside the group.
AdminPassword Required for /AdminLogin Set one If this is blank, anyone can type /AdminLogin and become admin, which means they can kick, ban or send the server back to the lobby.
ShutdownIfNotJoinedFor Time before an unjoined prospect is closed and the server returns to lobby -1 for a persistent Open World, or keep 300 for lobby-driven sessions Closing an idle world saves CPU time, RAM and background simulation state. The trade-off is convenience: a non-negative value can dump you back to the lobby before your group arrives.
ShutdownIfEmptyFor Time before an empty prospect is closed and the server returns to lobby -1 for a persistent Open World, or keep 300 if you want on-demand worlds This is the setting that decides whether the world stays ready between play sessions. Indefinite uptime uses more machine time than unloading the prospect, but it avoids surprise resets to the lobby.
AllowNonAdminsToLaunchProspects Lets players in the lobby create or load prospects False for a shared Open World Stops guests changing the active world by accident or loading the wrong save. The trade-off is that an admin must be around if the server is sitting in the lobby.
AllowNonAdminsToDeleteProspects Lets non-admins delete saved prospects False This is pure safety. There is no upside for most friend groups beyond convenience, and the downside is losing a save.
LoadProspect Loads a specific saved prospect by name at startup Blank unless you need a named save Useful when you want one exact save every boot. It avoids manual selection, but only if you already know the correct saved prospect name in the dedicated server prospects folder.
CreateProspect Creates a prospect at startup using a command string Blank for Open World Good for automating missions or outposts, not for guessing Open World internals. Leaving it blank avoids startup conflicts and keeps creation in the official lobby UI.
ResumeProspect Reloads the last prospect stored in LastProspectName True This is the simplest reliable restart behaviour. After updates or scheduled restarts, the same world comes back without manual work.
LastProspectName Tracks the last active prospect Let the server manage it It exists to support ResumeProspect. Manual edits are usually unnecessary, and leaving it alone reduces the chance of pointing the server at the wrong save state.

Step 5: understand the shutdown timers before they surprise you

The two shutdown timers are the biggest source of “it worked, then vanished” reports. Their default is 300 seconds. One applies after the server starts a prospect and nobody joins in time; the other applies after the last player leaves an active prospect. In both cases, the server shuts the prospect down and returns to the lobby state.

That behaviour exists for a reason: unloading an empty world frees the ongoing cost of keeping the prospect resident in memory and active on the server. It is sensible for mission-style use where someone joins, starts something, finishes, then leaves. It is not sensible for a persistent Open World that you expect to remain loaded and ready every evening.

Look at the timer flow below, then decide which model you want.

What the two shutdown timers do
A prospect starts, or the last player leaves it
Is the timer negative (for example -1)?
Yes
World stays loadedThe prospect keeps running until you stop it. Best for an always-on Open World.
No
Does someone join within the time set (default 300 seconds)?
Yes
Play carries onThe game was paused while it waited, then resumes.
No
The prospect shuts down and the server returns to the lobby. A value of 0 does this straight away.
ShutdownIfNotJoinedFor covers the start, ShutdownIfEmptyFor covers an empty server. Both behave the same way.
  • Keep the defaults: best if you like the lobby workflow and want the server to fall back to it when nobody is around.
  • Set both values to -1: best for an always-on Open World. Negative values run indefinitely.
  • Use a long positive value: valid if you want a long grace period but not a permanently loaded world. A common host suggestion is 86400 for a full day.
  • Do not use 0 to disable them: 0 means “shut down as soon as possible”, not “off”.

How to tell a timer is the problem: the server appears online, but when players come back later they land in the lobby instead of the world they expected. That means the process is fine; the active prospect is what got unloaded.

Step 6: create or bring your prospect

Icarus only runs one prospect at a time, so you need to be deliberate about what the server should open. If you leave the startup keys blank and simply join, the server will wait in the lobby and let you create an Open World, Outpost or mission through the normal server lobby UI. For Open World, that is the cleanest route because it avoids guessing internal prospect identifiers.

If you want the server to reopen the last used world after every restart, keep ResumeProspect=True. If you want a specific saved prospect every time, use LoadProspect with the save name from Saved\PlayerData\DedicatedServer\Prospects\. The server processes startup prospect instructions in order, so leave unused ones blank rather than setting several at once and hoping the right one wins.

The startup creation syntax is:

CreateProspect="[ProspectType] [Difficulty 1-4] [Hardcore true/false] [SaveName]"
CreateProspect="Tier1_Forest_Recon_0 3 false TestProspect01"

That official example creates the tutorial prospect on hard. For outposts, the save name must be included. For Open World, use the lobby UI instead. Also note the expansion rule: the player who creates a prospect needs the map’s expansion if that map requires one.

Migrating a local prospect to the dedicated server

This works, but handle the save carefully. Back it up first, then copy it as-is. Do not rename the file and do not edit the JSON, because that can corrupt the prospect unrecoverably.

  • Local prospect source: %UserProfile%\AppData\Local\Icarus\Saved\PlayerData\{SteamID}\Prospects\{Name}.json
  • Dedicated server destination: [server]\Icarus\Saved\PlayerData\DedicatedServer\Prospects\

If the PlayerData\DedicatedServer\Prospects folders do not exist on the server yet, create them. Once the file is copied, load it by name or let the server find it through the normal resume flow.

Step 7: join the server and become admin

To join, launch Icarus, select your character, open Join Session in the HAB menu, switch the top-right filter to dedicated servers, then pick the server by the Steam server name you set on the launch line. If a JoinPassword is set, players must enter it to continue. If no prospect is currently running, they will land in the Server Lobby rather than directly in-world.

Admin is separate from joining. Use /AdminLogin YourAdminPassword in chat after you are connected. If the admin password is blank, anyone can do this, which is why setting one is worth the tiny bit of extra friction. These are chat or lobby commands, not a separate port you need to open.

Command What it does When to use it
/AdminLogin [password] Grants admin access to the current player Run this first when you need management rights. In the lobby, the slash is not needed.
/KickPlayer [SteamId or name] Removes a player from the current session Useful for a stuck client, griefing, or freeing the session so someone can rejoin cleanly.
/BanPlayer [SteamId or name] Bans a player Use for repeated disruption, not ordinary connection problems.
/UnbanPlayer [SteamId or name] Removes a ban Use if the wrong player was banned or you are reversing a temporary block.
/ReturnToLobby Sends the server back to the lobby Handy when you want to stop the current prospect and create or load a different one.
/ReturnToLobbyWhenEmpty Returns to the lobby after the current players leave Good for planned maintenance without throwing everyone out immediately.
/AdminSay Sends an admin message Use it to warn about restarts, prospect changes or mod updates.

Step 8: keep it healthy with updates, backups, restarts and mod discipline

RocketWerkz patches Icarus most weeks, and version matching is strict: a server on an older build cannot be joined by updated clients. That makes a simple update routine essential. Stop the server first so files are not in use, update the dedicated server app, then start it again. Point SteamCMD at the same folder you installed to, or it will download a second copy somewhere else.

taskkill /im IcarusServer.exe
"C:\steamcmd\steamcmd.exe" +force_install_dir C:\IcarusServer +login anonymous +app_update 2089300 validate +quit

Before every game update, take a manual backup of the server’s save data. Save formats can change across patches, so the safe habit is to read how to back up a game server once, then keep a copy before each update and before any save migration.

A scheduled restart at a quiet hour is a sensible housekeeping step, especially on an always-on server. With ResumeProspect=True, the same prospect comes back after the reboot, so the cost to players is just a short interruption. If the save is large, the first boot can take a few minutes because the server has more world to load before it is ready for joins.

Mods are simple but strict. Icarus uses .pak files placed in Icarus/Content/Paks/mods/, and every connecting player needs the same mod set. That is less about raw performance than data compatibility: if the server and client disagree about content, loads fail or clients cannot join cleanly. There is no Steam Workshop layer here to synchronise that for you automatically.

Symptom, likely cause, first fix

If a friend cannot get in, work down this chart before changing anything. It checks the causes in the order they usually turn up.

Friend can’t get into your Icarus server?
A friend on PC cannot join your dedicated server
Is it missing from the dedicated server list?
Yes
Query port or timingCheck UDP 27015 is forwarded or assigned. After a restart, give the list 5 to 10 minutes.
No
Does joining time out or fail straight away?
Yes
Build, password or game portUpdate the server, have them verify files, re-enter the join password, check UDP 17777.
No
Do they land in the lobby instead of the world?
Yes
No prospect loadedLoad or resume it, then check the shutdown timers.
No
Still stuck with a big Open World? Wait for the first load to finish, and check everyone has the same mods.
Most join problems are the query port, a build mismatch after a patch, or a prospect that was unloaded.
Symptom Likely cause First fix
Server is not in the browser The UDP query port is not reachable, or you have just restarted the server Check the forwarded or assigned QueryPort, make sure the server is allowed through the firewall, then wait up to 5 to 10 minutes for the listing to refresh.
Server shows in the browser but nobody can join The game port is blocked, the join password is wrong, or the server is still finishing its first load Check the game port, re-enter the JoinPassword, and wait until the server log indicates it is ready before trying again.
The server shuts itself down after about five minutes ShutdownIfNotJoinedFor or ShutdownIfEmptyFor is still on the default 300 Set both timers negative for an always-on Open World, or use a longer positive value if you only want a larger grace period.
Players land in the lobby, not the world they expected No prospect is loaded, or the shutdown timers returned the server to the lobby Create or load a prospect from the lobby, then keep ResumeProspect=True and adjust the timers if the lobby fallback is unwanted.
Anyone can kick players or claim admin AdminPassword is empty Set an admin password in ServerSettings.ini and restart the server.
Version mismatch after a patch Server and clients are on different builds Update the server with SteamCMD, then make sure every player updates or verifies their game files before rejoining.
Join times out on the loading screen A large Open World save is still loading and streaming in Wait longer after a restart before the first joins, especially on a large prospect, then try again once the server has settled.
Console friends cannot find the server Icarus dedicated servers are PC only Do not treat this as a port problem. The limitation is platform support, not server discovery.
The browser shows the wrong server name You changed SessionName instead of -SteamServerName, or you changed the launch name without restarting Edit the launch line, not the INI, and restart so the new Steam server name is registered.
The listing is missing right after a restart The Steam master server list has not refreshed yet Give it 5 to 10 minutes before you start changing ports again. A healthy server can still take time to reappear.

Self-host or rent: which route fits this server best?

An Icarus dedicated server is not hard to run, but it does expect you to handle Windows upkeep, updates and prospect files properly. If you are deciding between home hosting and renting, think less about raw “power” and more about who will look after ports, uptime and weekly patching. If you want the background on the home route first, read self-hosting a game server.

Factor Self-host on a Windows PC Rented server
Best fit You want full file access and do not mind router and Windows admin work You want the simpler path to an always-online server for friends
Ports and firewall You must forward the game and query ports and allow the server through Windows Firewall The host normally assigns and opens the ports for you
Browser visibility You control the name and ports directly, but one bad forwarding rule stops discovery Usually easier, because the network side is already prepared
Always-on Open World Works well if the PC stays on and the idle timers are configured for persistence Usually the easier fit if your group joins at mixed times
Weekly updates You run SteamCMD updates yourself and should keep backups before patches Usually an update button or automatic updates in the panel; still check the build after each patch
Prospect files and migrations Direct access makes local save migration straightforward Still possible, but you work through the host’s file manager or remote access tools
When to pick it Good for a technically comfortable group and a server that lives close to the owner Good when reliability and convenience matter more than hands-on control
Need the simpler route?

If you would rather skip router forwarding and most of the Windows housekeeping, our Icarus server hosting comparison is the faster way to choose a setup that is ready to list in the browser and stay online for a persistent Open World.

Compare the best Icarus server hosts

Icarus server FAQ

Do I need to own Icarus to run a dedicated server?

No. The dedicated server installs through SteamCMD with anonymous login, using app ID 2089300. That means you can install and update the server on a Windows machine without tying it to a personal game licence.

What ports does an Icarus dedicated server use?

By default it uses UDP 17777 for the game and UDP 27015 for the query traffic. The query port is what gets the server into the browser, while the game port is what players use after they click Join. You can change both with -PORT= and -QueryPort=.

Why does my Icarus server shut down after five minutes?

The two shutdown timers default to 300 seconds. One returns the server to the lobby if nobody joins after startup, and the other does the same after the prospect becomes empty. For a persistent Open World, set them to a negative value so they run indefinitely.

Why can’t my friends see my Icarus server in the browser?

The usual reason is that the query port is not reachable, so the server never registers properly for discovery. Less often, the server has just restarted and the master list has not refreshed yet. Also check that the name is being set with -SteamServerName, because changing SessionName will not fix a bad browser entry.

Can I move my single-player Icarus prospect to a dedicated server?

Yes, by copying the local prospect JSON into the dedicated server prospects folder. Make a backup first, then copy the file without renaming it or editing the JSON. Renaming or editing that file can corrupt the save unrecoverably.

More Icarus server help

Check how much RAM your Open World needs, what crossplay supports, or compare hosts if you would rather rent.

Icarus updates frequently, and host panels do change. If a host’s current panel labels a step differently from this guide, follow the host’s live panel wording while keeping the same core rules on ports, naming, prospects, timers and build matching.

Similar Posts