Actions

Editing Dedicated Server Guide

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 3: Line 3:
 
== Requirements ==
 
== Requirements ==
 
* Linux or Windows system, either physical or virtualised,  
 
* Linux or Windows system, either physical or virtualised,  
** NOT recommended also running a Stationeers client (there will be issues with router NAT-loopback).
+
** must NOT be being used to run a Stationeers client (the game will not permit this).
** Linux Glibcxx 3.4.29 & Glibc 2.34 (Ubuntu 22.04 LTS)
 
** if running on Windows you must have the Microsoft Visual C++ 2015, 2017 and 2019 runtime installed, [https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 click here to download it].
 
 
* ~16GB RAM (Tested and confirmed on Linux). 8GB or less and the server won't load.  
 
* ~16GB RAM (Tested and confirmed on Linux). 8GB or less and the server won't load.  
  
Line 13: Line 11:
  
 
''This is a command line tool''
 
''This is a command line tool''
 
For the stable branch:
 
  
 
<code>steamcmd +login anonymous +app_update 600760 validate +quit</code>
 
<code>steamcmd +login anonymous +app_update 600760 validate +quit</code>
  
 
+
== Dedicated Server Commands ==
For the beta branch:
 
 
 
<code>steamcmd +login anonymous +app_update 600760 -beta beta validate +quit</code>
 
 
 
<i>For getting back from beta to public use -beta public ,steamcmd has trouble with caching</i>
 
 
 
== Default ports ==
 
8081: Meta Server port (TCP).<br>
 
27016: Game port (UDP).<br>
 
27015: Steam update port (UDP).
 
 
 
== Legacy Server Startup Arguments ==
 
 
String parameters can take space with double quotes.
 
String parameters can take space with double quotes.
 
{| class="wikitable"
 
{| class="wikitable"
Line 36: Line 20:
 
! parameter !! value !! etc
 
! parameter !! value !! etc
 
|-
 
|-
| -NEW
+
| -batchmode|| || Dedicated server runs without UI and start to listen port.
| rowspan=2 | Worldtype (string)
+
|-
| rowspan=2 | Starts a new game at specific world automatically from launch. Must provide world type as argument<br>
+
| -nographics|| || When running in batch mode, do not initialize graphics device at all.
<code>moon, mars, europa, europa2, mimas, vulcan, vulcan2, space, loulan, venus</code>
 
 
|-
 
|-
| -NEWGAME
+
| -logfile|| "path" || If no output_log.txt use this parameter. Check examples below for syntax
 
|-
 
|-
| -LOAD
+
| -autostart|| || Dedicated server start to listen port without player input.<br> It's always enabled on Linux dedicated server
| rowspan=2 | savefolder (string)
 
| rowspan=2 | Loads a saved world file, a second argument can be given with worldtype when loading fails it will make a new world instead.
 
 
|-
 
|-
| -LOADGAME
+
| -autosaveinterval|| integer || Save world in every interval.
 
|-
 
|-
| -LOADLATEST
+
| -creator|| int64|| Set creator's steam id as gamedata and key-value.<br>
|  
+
This is for future integration of server instancing.
| Loads the last save or backup from the save name\folder specified (checking world.xml datestamp), second argument is worldtype to fallback to when loading fails.
+
|-
 +
| -worldname || string || Save game data automatically to existing file.
 +
|-
 +
| -worldtype || string  ||  Worldtype(Moon, Mars, Europa2, Mimas, Vulcan2, Space, Loulan)<br><u>Will overwrite actual map on server browser if you use rocket to travel beween maps etc</u>
 +
|-
 +
| -loadworld
 +
| string  || Load world from saved file. If loadworld is enabled, worldname command is ignored.
 +
|-
 +
| -gameport  || integer  || UDP port for game. Avoid to set 27015-27020. It's steam's local server query ports.
 
|-
 
|-
| -JOIN
+
| -updateport
| rowspan=2 | [address]:[port]
+
| integer
| rowspan=2 | Joins a client to the server
+
| UDP port for steam query
 
|-
 
|-
| -JOINGAME
+
| -servername
 +
| string
 +
| Server title. <br>''(Depreciated: commandline only uses the first word, use servername in default.ini instead)''
 
|-
 
|-
| -SETTINGSPATH
+
| -basedirectory
| "path"
+
| string
 
| Absolute base directory for custom profile Ex)<br> -basedirectory C:\Profile\Player1 <br> Config Path : default.ini <code>C:\Profile\Player1\</code> <br> Save Path : <code>C:\Profile\Player1\saves\[worldname]</code>
 
| Absolute base directory for custom profile Ex)<br> -basedirectory C:\Profile\Player1 <br> Config Path : default.ini <code>C:\Profile\Player1\</code> <br> Save Path : <code>C:\Profile\Player1\saves\[worldname]</code>
 
|-
 
|-
| -logfile|| "path" || If no output_log.txt use this parameter. Check examples below for syntax.
+
| -password
 +
| string
 +
| set server password
 +
|-
 +
| -maxplayer
 +
| integer
 +
| set maxplayer of dedicated server
 +
|-
 +
| -clearallinterval
 +
| integer
 +
| set the interval to run clearall command.<br>
 +
Default and minimum value is 60 seconds.
 +
|-
 +
| -bindip
 +
| string
 +
| Bind specific IP address on dedicated server when it has multiple IP addresses.
 
|-
 
|-
 +
| -modpath
 +
| string
 +
| Absolute base directory for mods (be sure to use \ or / depending on system and end with one as well)
 
|}
 
|}
 
batchmode, nographics and logfile are Unity3D commands.
 
batchmode, nographics and logfile are Unity3D commands.
  
 
https://docs.unity3d.com/Manual/CommandLineArguments.html
 
https://docs.unity3d.com/Manual/CommandLineArguments.html
 
[[https://github.com/rocket2guns/StationeersDedicatedServerGuide/blob/main/README.md Official Server Guide]]
 
 
=== Logging Alternates ===
 
Logging seems to be broken, here are some old skool alternatives.<br>
 
Small downside is they break the input of the console but it doesn't seem to throw warnings like usual.
 
 
* Linux <code>rocketstation_DedicatedServer.x86_64 2>&1 | tee filename.txt</code>
 
** extra options would be --a or --append in front of the filename to keep appending to the logfile
 
* Windows (powershell) <code>rocketstation_DedicatedServer.exe &> | tee -file filename.txt</code>
 
** extra options would be -Append at the end to keep appending to the logfile
 
** Command Prompt <code>powershell rocketstation_DedicatedServer.exe ^| tee -File filename.txt</code>
 
  
 
== Examples ==
 
== Examples ==
  
<span style="font-size: 120%;"> Dedicated server starts new Mars world. Autosave every 5 mins to Mars1. </span><br>
+
<span style="font-size: 120%;"> Dedicated server starts new Mars world. Autosave every 5 mins to Mars1. </span>
<code>rocketstation_DedicatedServer.exe -LOAD Mars1 Mars -SETTINGSPATH "C:\Server\User1" -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300</code>
+
rocketstation_DedicatedServer.exe -batchmode -nographics -autostart -autosaveinterval=300 -worldtype=Mars -worldname=Mars1 -basedirectory="C:\Server\User1"
 
 
  
<span style="font-size: 120%;"> Load Mothership file. Autosave every 5 mins. </span><br>
+
<span style="font-size: 120%;"> Load Mothership file. Autosave every 5 mins. </span>
<code>rocketstation_DedicatedServer.exe -LOAD Mothership -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300</code>
+
rocketstation_DedicatedServer.exe -batchmode -nographics -autostart  -gameport=27200 -updateport=27016 -autosaveinterval=300 -loadworld=Mothership
  
  
<span style="font-size: 120%;"> Load Mothership file. Autosave  every 5 mins. C:\Profile\Player1\saves\Mothership </span><br>
+
<span style="font-size: 120%;"> Load . Autosave  every 5 mins. C:\Profile\Player1\saves\Mothership C:\Profile\Player1\saves\map1 </span>
<code>rocketstation_DedicatedServer.exe -LOAD Mothership -SETTINGSPATH "C:\Profile\Player1" -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300</code>
+
rocketstation_DedicatedServer.exe -batchmode -nographics -autostart -autosaveinterval=300 -gameport=27200 -updateport=27016 -loadwo
 +
rld=Mothership -worldname=map1 -basedirectory="C:\Profile\Player1"
  
  
<span style="font-size: 120%;"> Example <code>-logfile</code> syntax </span><br>
+
<span style="font-size: 120%;"> Example -logfile syntax </span>
<code>-logFile "C:\Server_Path\rocketstation_DedicatedServer_Data\output_log.txt"</code>
+
-logFile "C:\Server_Path\rocketstation_DedicatedServer_Data\output_log.txt"
  
  
<span style="font-size: 120%;"> Example <code>-LOAD "myworld"</code> directory structure. </span><br>
+
<span style="font-size: 120%;"> Example -loadworld="myworld" directory structure. </span>
 
'''Note:''' ''BaseDirectory'' is by default in SteamApps/common/Stationeers Dedicated Server/''<Contents of BaseDirectory>'' if installed with SteamCMD<br>
 
'''Note:''' ''BaseDirectory'' is by default in SteamApps/common/Stationeers Dedicated Server/''<Contents of BaseDirectory>'' if installed with SteamCMD<br>
 
  
 
<big>'''Linux:'''</big><br>
 
<big>'''Linux:'''</big><br>
<code>-LOAD "myworld"</code> will look for a folder named "myworld" in the ''saves'' directory like this:<br>
+
-loadworld="myworld" will look for a folder named "myworld" in the ''saves'' directory like this:<br>
 
''BaseDirectory''/saves/myworld/<br>
 
''BaseDirectory''/saves/myworld/<br>
 
  
 
<big>'''Windows:'''</big><br>
 
<big>'''Windows:'''</big><br>
<code>-LOAD "myworld"</code> will look for a folder named "myworld" in the ''saves'' directory like this:<br>
+
-loadworld="myworld" will look for a folder named "myworld" in the ''saves'' directory like this:<br>
 
''BaseDirectory''\saves\myworld\
 
''BaseDirectory''\saves\myworld\
 
  
 
<big>'''Details:'''</big><br>
 
<big>'''Details:'''</big><br>
In the world directory named "myworld", these files must be present:
+
In the world directory named "myworld", there must be a few files:
 
* world.bin
 
* world.bin
 
* world.xml
 
* world.xml
Line 124: Line 118:
 
* worldsettings.xml
 
* worldsettings.xml
  
===== Configuration from setting.xml =====
+
===== Configuration from default.ini =====
setting.xml will be created once you start it up for the first time. <u>Command parameters reset setting.xml to default</u>
+
default.ini will be created once you start it up for the first time. <u>Command parameters override default.ini</u>
<hr>''The server is mostly a stripped down client as such it inherits certain features''
+
<hr><pre>
<hr>
+
[SERVER]
Example Setting.xml
+
SERVERNAME=My First Stationeers Server
<pre>
+
GAMEPORT=27500
  <?xml version="1.0" encoding="utf-8"?>
+
UPDATERPORT=27015
  <SettingData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
PASSWORD=
 +
ADMINPASSWORD=
 +
MAPNAME=Moon
 +
DESCRIPTION=Stationeers
 +
MAXPLAYER=10
 +
[RCON]
 +
RCONPASSWORD=stationeers
 +
</pre><hr>
 +
''MAPNAME is always ignored''
  
  <AutoSave>true</AutoSave>
+
== Configuration from setting.xml ==
  <SaveInterval>300</SaveInterval>
+
'''Undocumented feature'''
  <SavePath />
 
 
 
  <StartingConditions>Default</StartingConditions>
 
  <RespawnCondition>Easy</RespawnCondition>
 
  <HungerRate>0.5</HungerRate>
 
  <SunOrbitPeriod>1</SunOrbitPeriod>
 
 
 
  <ResearchPoolKey>ResearchOff</ResearchPoolKey>
 
 
 
  <RoomControlTickSpeed>1</RoomControlTickSpeed>
 
  <WorldOrigin>false</WorldOrigin>
 
 
 
<ServerName>Stationeers</ServerName>
 
  <StartLocalHost>true</StartLocalHost>
 
  <ServerVisible>true</ServerVisible>
 
  <ServerPassword />
 
  <AdminPassword>randomstringhere</AdminPassword>
 
  <ServerMaxPlayers>10</ServerMaxPlayers>
 
  <UpdatePort>27015</UpdatePort>
 
  <GamePort>27016</GamePort>
 
  <UPNPEnabled>true</UPNPEnabled>
 
  <DisconnectTimeout>10000</DisconnectTimeout>
 
  <NetworkDebugFrequency>500</NetworkDebugFrequency>
 
</pre><hr>
 
  
 +
''The server is mostly a stripped down client as such it inherits certain features''
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 209: Line 188:
 
|-
 
|-
 
|}
 
|}
 +
 +
Example Setting.xml
 +
<pre>
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<SettingData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 +
<RespawnCondition>Stationeer</RespawnCondition>
 +
<StartingConditions>Mimimal</StartingConditions>
 +
<ResearchPoolKey>ResearchOff</ResearchPoolKey>
 +
<SunOrbitPeriod>1</SunOrbitPeriod>
 +
</SettingData>
 +
</pre>
 +
  
 
== Savegames ==
 
== Savegames ==
Line 251: Line 242:
 
|-
 
|-
 
|}
 
|}
 +
 +
Note: as of version 0.2.2840, setting the starting conditions on a dedicated server will allways Default to the first key found in startingconditions.xml. Could probably be a bug.
  
  
Line 256: Line 249:
  
 
===In Game Admin===
 
===In Game Admin===
<ServerAuthSecret/> parameter must be added to setting.xml on both server and client and be the same token.
+
ADMINPASSWORD parameter must be added to default.ini and set a password. This is different from the RCON password.
 +
 
 +
All commands are typed in the chat (enter) by default, starting with /login
 +
 
  
All commands are typed in the chat (tilde) by default and prefixed by <code>serverrun</code>
 
  
=== Server Program Console===
+
===Browser Based RCON===
You can type commands in the running application which acts like a console
+
You can send commands on web browser, but this feature is currently broken. Login works, but all other commands are disabled.
 +
<nowiki>Link : http://[dedicated server address]:[GamePort]</nowiki>
 +
[[File:Dediserv1.png|frameless|735x735px]]
  
 
=== Command Lists ===
 
=== Command Lists ===
 
{| class="wikitable"
 
{| class="wikitable"
 
!Command
 
!Command
 +
!Parameter
 
!Details
 
!Details
!Parameter
 
 
|-
 
|-
| HELP
+
|login
| Displays helpful stuff
+
|password
| Arguments:
+
|RCONPASSWORD is defined in default.ini. Default rcon password is stationeers.
* commands
 
* list (l)
 
* <key>
 
* tofile: prints the help output to file
 
 
|-
 
|-
| CLEAR
+
|save
| Clears all console text ||
+
|worldname
|-
+
|Save world to basedirectory
| QUIT
+
 
| immediately quits the game without any prompts
+
When basedirectory is "C:\Profile\Player1",
|
+
 
|-
+
>> save "Moon 2"
| EXIT
+
 
| rowspan=2 | Leaves a game session and goes back to 'StartMenu'
+
Save world to "C:\Profile\Player1\Moon 2"
| rowspan=2 |
+
 
|-
+
>> save Moon
| LEAVE
+
 
 +
Save world to "C:\Profile\Player1\Moon"
 
|-
 
|-
| NEW
+
|shutdown
| rowspan=2 | Starts a new game at specific world automatically from launch.Must provide world name as argument
+
|[-m message] [-t timeout in seconds]
| rowspan=2 | worldName
+
|Shutdown dedicated server. If you run this command without any parameters, dedicated server will shutdown immediately. Countdown starts from 10 seconds. >> shutdown -m "Server will shutdown in 30 seconds" -t 30
 
|-
 
|-
| NEWGAME
+
|notice
 +
|message
 +
|Notice to all players. >> notice "Welcome to Stationeers!"
 
|-
 
|-
| LOAD
+
|status
| rowspan=2 | Loads a saved world file
 
| rowspan=2 | <foldername>
 
|-
 
| LOADGAME
 
|-
 
| LOADLATEST
 
| Loads the latest saved file, including auto saves
 
| <foldername>
 
|-
 
| JOIN
 
| rowspan=2 | Joins a client to the server
 
| rowspan=2 | [address]:[port]
 
|-
 
| JOINGAME
 
|-
 
| STEAM
 
| Commands to test Facepunch API. Just checks if steam is initialised and if DLC is purchased
 
 
|
 
|
 +
|Display game state and player lists.
 
|-
 
|-
| LISTNETWORKDEVICES
+
|ban
| No help text :(
+
|steamId timeout
| id
+
|Ban player for specific time. Timeout is double in hour. 0.5 is 30 minutes. 0 is infinite. >> ban 76561198299941358 0.5
 
|-
 
|-
| TESTBYTEARRAY
+
|unban
| Tests every item in world to check its network read/write functions are parallel. Only enabled in Editor.
+
|steamId
Supply a reference Id to check ONLY that item
+
|Remove player from the ban lists.
|  
 
 
|-
 
|-
| ROCKETBINARY
+
|kick
| Starts logging the size of each section of a delta update.
+
|steamId
| Arguments:
+
|Kick player from the current server.
* toggleloglength
 
* togglelogbps
 
 
|-
 
|-
| IMGUI
+
|clearall
| Toggles ImguiInWorldTestCube on/off
 
|
 
|-
 
| ATMOS
 
| Enables atmosphere debugging
 
| Arguments:
 
* pipe
 
* world
 
* room
 
* global
 
* thing
 
|-
 
| THING
 
| Thing related commands
 
| Arguments:
 
* No args returns total thing count
 
* find
 
* delete
 
* spawn
 
|-
 
| KEYBINDINGS
 
| Displays all the keybindings bound to LocalHuman
 
| Arguments:
 
* reset (Resets the keybindings stack. Can help solve input issues)
 
|-
 
| RESET
 
| Restarts the application
 
|
 
|-
 
| VERSION
 
| Returns the game version
 
|
 
|-
 
| LOGTOCLIPBOARD
 
| Copies the content of the console buffer to the system clipboard buffer
 
|
 
|-
 
| KICK
 
| Kick clients from server commands
 
| clientId - disconnects the client from the game
 
|-
 
| BAN
 
| Bans a client from the server (server only command)
 
| clientId
 
|-
 
| UPNP
 
| returns universal plug and play (upnp) state
 
|
 
|-
 
| NETWORK
 
| returns the current network status
 
|
 
|-
 
| PAUSE
 
| will pause/unpause the game (including for clients)
 
| Arguments:
 
* true
 
* false
 
|-
 
| SAY
 
| sends a message to all connected players
 
|
 
|-
 
| SAVE
 
| Saves the current game to specified path
 
| Arguments:
 
* <foldername>
 
* delete <foldername>
 
* list
 
|-
 
| LOG
 
| Dumps all the logs to a file
 
| Arguments:
 
<logname> (optional)
 
clear
 
|-
 
| DISCORD
 
| Interaction with the Discord SDK
 
|
 
|-
 
| SETTINGS
 
| Change the settings.xml. e.g settings servermaxplayers 5
 
| Arguments:
 
* list
 
* print
 
<PropertyName> <Value>
 
|-
 
| NETCONFIG
 
| Change the master server setting in NetConfig.xml. e.g netconfig ip 127.0.0.1
 
| Arguments:
 
* list
 
* print
 
* <PropertyName> <Value>
 
|-
 
| SETTINGSPATH
 
| Sets the default settings path to a new location. Launch command only. If none found default is used.
 
| <full-directory-path>
 
|-
 
|  DIFFICULTY
 
| Sets game difficulty to one of the predefined settings
 
|  -DIFFICULTY [<difficulty>]
 
|-
 
| REGENERATEROOMS
 
| Regenerates all rooms for the world
 
|
 
|-
 
| STORMBEGIN
 
| Starts weather event
 
 
|
 
|
 +
|Delete disconnected players
 
|-
 
|-
| STORMEND
+
|hungerRate
| Stops weather event
+
|hunger rate
|
+
|Set hunger rate of server. 0 to disable hunger, higher numbers to make hunger drop more quickly.
|-
 
| DEBUGTHREADS
 
| Show the times that the worker threads take to run.
 
| GameTick
 
|-
 
| STATUS
 
| Displays a bunch of info to give insight into state of server.
 
|
 
|-
 
| MASTERSERVER
 
| Commands to help with interacting with the Master Server.
 
| refresh
 
|-
 
| DELETELOOSEITEMS
 
| Removes all items in world that isn't in a slot
 
|
 
|-
 
| SUNTIME
 
| Set the time of day between 0 and 1 (e.g. 0 is sunrise, 0.5 is sunset)
 
| Arguments:
 
* time
 
|-
 
| CLEANUPPLAYERS
 
| Cleans up player bodies
 
| Arguments:
 
* dead
 
* disconnected
 
* all
 
|-
 
| TEST
 
| No help text :(
 
|
 
 
|}
 
|}
 +
Game client displays messages in the system message window at this moment.
 +
[[File:Dediserv2.png|frameless|332x332px]]
  
 
== Modding on Servers ==
 
== Modding on Servers ==
Line 488: Line 328:
 
<HR><pre>
 
<HR><pre>
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
<ModConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
<ModConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
   <Mods>
 
   <Mods>
     <ModData>
+
     <unsignedLong>1</unsignedLong>
      <Id>1</Id>
+
     <unsignedLong>1001</unsignedLong>
      <IsEnabled>true</IsEnabled>
+
     <unsignedLong>1002</unsignedLong>
      <LocalPath />
 
     </ModData>
 
    <ModData>
 
      <Id>0</Id>
 
      <IsEnabled>true</IsEnabled>
 
      <LocalPath>YourFirstModFolderHere</LocalPath>
 
     </ModData>
 
    <ModData>
 
      <Id>0</Id>
 
      <IsEnabled>true</IsEnabled>
 
      <LocalPath>YourSecondModFolderHere</LocalPath>
 
    </ModData>
 
 
   </Mods>
 
   </Mods>
 +
  <DisabledMods>
 +
  </DisabledMods>
 +
  <LocalMods>
 +
    <LocalMod>
 +
      <folder>YourFirstModFolderHere</folder>
 +
      <modID>1001</modID>
 +
    </LocalMod>
 +
    <LocalMod>
 +
      <folder>YourSecondModFolderHere</folder>
 +
      <modID>1002</modID>
 +
    </LocalMod>
 +
  </LocalMods>
 
</ModConfig>
 
</ModConfig>
 
</pre><HR>
 
</pre><HR>
  
Local mods have Id 0.<br>
+
Assign a number to each entry you want to add.<br>
So try and keep the same structure in the server to prevent complications.<br>
+
Numbers seem to default to 4 digits for mods when generated by the client,<br>
 +
so try and keep the same structure in the server to prevent complications.<br>
 
''1 is core file and always need to be enabled''
 
''1 is core file and always need to be enabled''
 
===Alternate ModConfig.xml===
 
If the above modconfig don't work, try this one:
 
 
<HR><pre>
 
<?xml version="1.0" encoding="utf-8"?>
 
<ModConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
    <Mods>
 
        <unsignedLong>1</unsignedLong>
 
        <unsignedLong>1001</unsignedLong>
 
        <unsignedLong>1002</unsignedLong>
 
    </Mods>
 
    <DisabledMods>
 
    </DisabledMods>
 
    <LocalMods>
 
        <LocalMod>
 
            <folder>"FirstModFolderPath"</folder>
 
            <modID>1001</modID>
 
        </LocalMod>
 
        <LocalMod>
 
            <folder>"SecondModFolderPath"</folder>
 
            <modID>1002</modID>
 
        </LocalMod>
 
    </LocalMods>
 
</ModConfig>
 
</pre>
 
  
 
=== Storing Mods ===
 
=== Storing Mods ===
 
 
  WIN: C:\Users\'''USERNAME_HERE'''\Documents\My Games\Stationeers\mods\
 
  WIN: C:\Users\'''USERNAME_HERE'''\Documents\My Games\Stationeers\mods\
 
  LIN: /home/'''USERNAME_HERE'''/My Games/Stationeers/mods/
 
  LIN: /home/'''USERNAME_HERE'''/My Games/Stationeers/mods/
 
  OSX: /Users/'''USERNAME_HERE'''/My Games/Stationeers/mods/
 
  OSX: /Users/'''USERNAME_HERE'''/My Games/Stationeers/mods/
  
Mods folder root is displaced by the <SavePath> setting in setting.xml,<br>
 
not sure if it's a bug or feature
 
  
 
  \Modname or workshopid\About\
 
  \Modname or workshopid\About\
Line 560: Line 372:
 
Look for ExampleMod.zip and AttributesExampleMod.zip .
 
Look for ExampleMod.zip and AttributesExampleMod.zip .
  
 +
= Linux Server with LinuxGSM =
 +
You could run a Linux Dedicated Server on these Distros:
 +
* Ubuntu 16.04/18.04 LTS
 +
* Debian 8
 +
* CentOS 7
 +
 +
=== Installation on a Ubuntu 18.04 LTS Server ===
 +
It's possible to download the iso-file for installation from here:<br>
 +
https://ubuntu.com/download/server<br>
 +
<br>
 +
This should not be a tutorial on how to set up a VM and install Ubuntu. There are many of them already out there.
 +
<br>
 +
First it's necessary to install all the dependencies for LinuxGSM:
 +
<br>
 +
    sudo dpkg --add-architecture i386; sudo apt update; sudo apt install mailutils postfix curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux lib32gcc1 libstdc++6 lib32stdc++6 steamcmd zlib1g
 +
<br>
 +
To not having the server running with root privileges, it is recommended to set up a new user for the game server.<br>
 +
To create a new user in linux use:
 +
    adduser stserver
 +
 +
'''For security best practice, ensure you set a strong password!'''
 +
 +
After installing the dependencies and creating a user, switch to that user and do the following steps:
 +
    su - stserver
 +
 +
<br>Download linuxgsm.sh with wget.
 +
  wget -O linuxgsm.sh https://linuxgsm.sh
 +
 +
<br>Make the script executable.
 +
  chmod +x linuxgsm.sh
 +
 +
<br>Setup the Stationeers Server instance.
 +
  bash linuxgsm.sh stserver
 +
 +
<br>Run the installer following the on-screen instructions.
 +
  ./stserver install
 +
 +
<br>The script now downloads the server binaries and default configuration.
 +
=== Start and Stop the Server ===
 +
To start the server use this command.
 +
  ./stserver start
 +
<br>In Default the server will start a Moon map. To join the server use the local IP with the Port 27500.
 +
<br>To join the server from a different location, it's necessary to forward the port 27500/tcp and 27015/udp to the local server.
 +
<br>If it's not possible to connect make sure the Ubuntu Firewall is off or configured to let these ports open. To check this run this as root user.
 +
  ufw status
 +
<br>To disable it use:
 +
  ufw disable
 +
 +
<br>To see the details use:
 +
  ./stserver details
 +
 +
<br>To stop the server use:
 +
  ./stserver stop
 +
 +
<br>This command shows all attributes
 +
  ./stserver help
  
Note: There seems to be some changes as to how where the dedicated server loads mods from. The above solution seems to be deprecated, see below if above solution doesn't work.
+
<br>To show the live console of the server use:
 +
  ./stserver console
 +
'''To exit the console pres CTRL+b and then "d"'''
  
WIN:[Where you've installed the server]/Steam/steamapps/common/Stationeers Dedicated Server/rocketstation_DedicatedServer_Data/StreamingAssets/Data/Mods <br>
+
== Edit configuration ==
LIN:/home/'''USERNAME_HERE'''/Steam/steamapps/common/Stationeers Dedicated Server/rocketstation_DedicatedServer_Data/StreamingAssets/Data/Mods <br>
+
The Configuration is stored under the folder lgsm/config-lgsm/stserver. There are three files:
OSX:[Where you've installed the server]/Steam/steamapps/common/Stationeers Dedicated Server/rocketstation_DedicatedServer_Data/StreamingAssets/Data/Mods <br>
+
* _default.cfg (contains the whole configuration with the default values '''Do not edit this file''')
 +
* common.cfg (the settings for this server)
 +
* stserver.cfg (the settings for this instance)
 +
If there is only one instance/server running and there will not be any other server it doesn't matter if you change the settings in common.cfg or stserver.cfg. If you planing to run more than one server or instance on the same VM you have to consider if the setting should apply server wide (all instances), or just for a specific Stationeers instance.
  
The Mods folder in /StreamingAssets/ is not premade, but needs to be added manually. Put the mods you want in here, and the server will load them. It is unknown if a ModConfig is even needed when doing it this way.
+
=== Example: Change map to Mars ===
 +
Use your favorite text editor (ex. vi or nano) and open the _default.cfg (remember not to do any changes here) search for the setting you want to change and copy the text. In our example it is this:
 +
  worldtype="Moon"
 +
  worldname="moon_save"
 +
<br>Now open the file you want to configure. If you want any instance to run a Mars map use common.cfg or if only one instance should run this map use stserver.cfg (or stserver-2.cfg for the next instance). Paste the text at the end of the file and change "Moon" to "Mars"
 +
  worldtype="Mars"
 +
  worldname="mars_save"
 +
<br>Now restart your server with ./stserver restart
 +
<br>Make sure you also change the worldname (this is the folder where the savegame is). If the savegame-file is for a different world than the config is set to, the server will not start.

Please note that all contributions to Unofficial Stationeers Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Unofficial Stationeers Wiki:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)