Headless Server Software/Example Configurations

From Resonite Wiki

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"
      }
    }
  ]
}

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
}

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"
    }
  ]
}