Headless Server Software/Example Configurations: Difference between revisions

From Resonite Wiki
No edit summary
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
To help our users with [[Headless Client/Configuration File|Headless Client configuration]] here are some example files:
To help our users with [[Headless Server Software/Configuration File|Headless Server configuration]] here are some example configuration files. When using these keep in mind that basic familiarity with the structure of [https://www.json.org/ JSON] is required to ensure that you do not create an invalid file.


== Minimal ==
== Minimal ==
The bare minimum required to run a single headless world
The bare minimum required to run a single headless world. In this case it just runs a Grid world with a name of "Testing"


<code>
<syntaxhighlight lang="json">
{
{
   "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
   "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
Line 10: Line 10:
     {
     {
       "isEnabled": true,
       "isEnabled": true,
       "sessionName": "Cheese Testing",
       "sessionName": "Testing",
       "maxUsers": 16,
       "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    }
  ]
}
</syntaxhighlight>
 
== Minimal with Login ==
This is an exact copy of the Minimal config but includes a User Login. For user management make sure to checkout [[Headless Server Software/Recommendations#Users| our recommendations for users on Headless]]
 
<syntaxhighlight lang="json">
{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "loginCredential": "<username>",
  "loginPassword": "<password>",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    }
  ]
}
</syntaxhighlight>
 
== Minimal with Specified World ==
This is the same as the minimal setup but will load a specified world record url rather than a grid space.
 
<syntaxhighlight lang="json">
{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldURL": "resrec:///U-ProbablePrime/R-49dd64cd-b2d6-40ac-be73-440abfa8bc48"
    }
  ]
}
</syntaxhighlight>
 
== Minimal with Builder/Admin Permissions ==
<syntaxhighlight lang="json">
{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid",
      "defaultUserRoles" : {
        "ProbablePrime":"Admin",
        "Frooxius":"Builder"
      }
    }
  ]
}
</syntaxhighlight>
 
== Multiple Worlds/Sessions ==
Resonite's Headless Server Software can run multiple worlds, to do this just add more entries to the <code>startWorlds</code> array, for example:
<syntaxhighlight lang="json">
{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing ONE",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    },
    {
      "isEnabled": true,
      "sessionName": "Testing TWO",
       "accessLevel": "Anyone",
       "accessLevel": "Anyone",
       "loadWorldPresetName": "Grid"
       "loadWorldPresetName": "Grid"
Line 17: Line 93:
   ]
   ]
}
}
</code>
</syntaxhighlight>
 


== Default ==
== Default ==
The default configuration file from the Resonite Installation.
The default configuration file from the Resonite Installation.
<pre>
<syntaxhighlight lang="json">
{
{
   "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
   "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
Line 73: Line 150:
   "autoSpawnItems": null
   "autoSpawnItems": null
}
}
 
</syntaxhighlight>
</pre>

Latest revision as of 05:52, 23 May 2024

To help our users with Headless Server configuration here are some example configuration files. When using these keep in mind that basic familiarity with the structure of JSON is required to ensure that you do not create an invalid file.

Minimal

The bare minimum required to run a single headless world. In this case it just runs a Grid world with a name of "Testing"

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    }
  ]
}

Minimal with Login

This is an exact copy of the Minimal config but includes a User Login. For user management make sure to checkout our recommendations for users on Headless

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "loginCredential": "<username>",
  "loginPassword": "<password>",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    }
  ]
}

Minimal with Specified World

This is the same as the minimal setup but will load a specified world record url rather than a grid space.

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldURL": "resrec:///U-ProbablePrime/R-49dd64cd-b2d6-40ac-be73-440abfa8bc48"
    }
  ]
}

Minimal with Builder/Admin Permissions

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid",
      "defaultUserRoles" : { 
        "ProbablePrime":"Admin",
        "Frooxius":"Builder"
      }
    }
  ]
}

Multiple Worlds/Sessions

Resonite's Headless Server Software can run multiple worlds, to do this just add more entries to the startWorlds array, for example:

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": "Testing ONE",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    },
    {
      "isEnabled": true,
      "sessionName": "Testing TWO",
      "accessLevel": "Anyone",
      "loadWorldPresetName": "Grid"
    }
  ]
}


Default

The default configuration file from the Resonite Installation.

{
  "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
  "comment": "DO NOT EDIT THIS FILE! Your changes will be lost. Copy it over and create a new file called Config.json",
  "universeId": null,
  "tickRate": 60.0,
  "maxConcurrentAssetTransfers": 4,
  "usernameOverride": null,
  "loginCredential": null,
  "loginPassword": null,
  "startWorlds": [
    {
      "isEnabled": true,
      "sessionName": null,
      "customSessionId": null,
      "description": null,
      "maxUsers": 16,
      "accessLevel": "Anyone",
      "useCustomJoinVerifier": false,
      "hideFromPublicListing": null,
      "tags": null,
      "mobileFriendly": false,
      "loadWorldURL": null,
      "loadWorldPresetName": "Grid",
      "overrideCorrespondingWorldId": null,
      "forcePort": null,
      "keepOriginalRoles": false,
      "defaultUserRoles": null,
      "roleCloudVariable": null,
      "allowUserCloudVariable": null,
      "denyUserCloudVariable": null,
      "requiredUserJoinCloudVariable": null,
      "requiredUserJoinCloudVariableDenyMessage": null,
      "awayKickMinutes": -1.0,
      "parentSessionIds": null,
      "autoInviteUsernames": null,
      "autoInviteMessage": null,
      "saveAsOwner": null,
      "autoRecover": true,
      "idleRestartInterval": -1.0,
      "forcedRestartInterval": -1.0,
      "saveOnExit": false,
      "autosaveInterval": -1.0,
      "autoSleep": true
    }
  ],
  "dataFolder": null,
  "cacheFolder": null,
  "logsFolder": null,
  "allowedUrlHosts": null,
  "autoSpawnItems": null
}