Skip to content

Start The Server

IainMcCracken edited this page Jun 6, 2025 · 1 revision

The index of this documentation is at Iains Documentation Skunkworks.

Under construction!

Note: As of this writing, all of this information is for the Robust server. There is overlap with the OpenSim server, and this documentation will cover that in time, as work on this continues.

Starting The Server

There are two files which can be used to start the server. The preferred way is to start the server dll file (eg dotnet Robust.dll) directly.

The other way to start the server is an executable file. In Linux it is a regular ELF executable, and in Windows it is a regular PE executable. Both of them simply grab the dll file and hand it to dotnet.

The Current Working Directory

The current working directory, called "the pwd" (after the Linux pwd command) is important in this software. When you start the server, the directory that command is given from is the pwd. If you have the startup in a shell script, and that script changes directory before starting the server, that directory is the pwd, not the one you started the script from.

Almost all relative paths provided in the configuration are relative to the pwd. Default paths for things not provided are often relative to the pwd.

For example, by default the server expects to find a Robust.ini file in the pwd. It also expects the Robust.dll.config file to be in the pwd (not in the executable's directory). The various dll files mentioned in the [ServiceList] config section are assumed by default to be in the pwd.

However, some things ignore the pwd and, instead, make relative paths relative to the executable. Log4Net does this. It ignores the pwd and the file appenders specified in the Robust.dll.config put the files in the same directory as the executable.

Configuration Source

The configuration source is the file or web stream that the server gets its configuration from. If the -i --inifile command line switch is not provided, this defaults to an INI file in the pwd with the same base name as the executable. So, in a default build, it defaults to Robust.ini in the pwd.

If the -i --inifile command line switch is provided, it is either an URL or a pathname. If the pathname is relative, it is relative to the pwd.

If the source is a file, it is expected to be in the INI file format. If it is an URL, it is expected to be an XML stream.

Command Line Switches

These can also be set in the configuration source (except for --inifile) in the [Startup] section. The command line switches override the ini file contents.

  • --inifile (short form -i) Specifies where to retrieve the main configuration from. It can be a pathname for a file in the local file system, or it can be an URL.
    • If it is an URL, the scheme must be http: or https:.
    • Default: If this switch is not specified, the default is a local file with the same name as the executable with the extension (if any) replaced by .ini in the pwd. This file is expected to be in the INI format.
  • --prompt (short form -p) This is the text of the prompt in the command console.
    • Default: If not specified, the prompt is R.O.B.U.S.T.
  • --console (short form -c) This is the console type. Options are local, basic, rest, and mock.
    • Default: local.
  • --logfile -l
  • --logconfig (short form -g) The location of the Log4Net configuation.
    • Default: A file called 'Robust.dll.config' in the pwd.

Environment variables

If there is a section called [Environment] it lists environment variables to be added to the configuration. They are added to this section.

Note: If a property exists in this section that is not the name of an existing environment variable, it is not put in the configuration! So, if you have the line BLAH="some value" in this section, but the BLAH environment variable is not set, there will be no property named BLAH in the loaded config.

Clone this wiki locally