Opensim - Separating Robust Instances - Opensimulator Logo
Opensimulator Logo

Opensim – Separating Robust Instances is an article detailing the process of separating Opensimulator Robust services into separate instances of Robust. Not all services should be separated and there are good reasons to leave them combined. This guide will grow over time. Initially, just the asset service is covered. Other services will be covered later if possible. Furthermore, it is likely other services will not use separate databases.

**Note This article Works with Opensimulator 0.92 development code, not Opensim 0.911**

For Opensim 0.911 please see a previous article which details the process. It does not cover using separate databases.

Do you need sperate instances? – Opensim – Separating Robust Instances

There are a few key considerations when choosing the best approach for using Opensimulator. Firstly think about the scale of the grid. If it is only ever going to be small with a small number of users, there is no benefit to even starting this process. Consequently, Stay with one single instance and keep all the services combined in one place. This is both the simplest to set up and the easiest to upgrade and manage in the future.

A lot will depend on how many users are online at one time. The frequency they access assets is also a factor. Other considerations, such as how often they move around will factor in.

Does the grid use Hyper-Grid?

There are different things to consider for closed grids compared with Hypergrid configuration. Many of the Hypergrid services have to use a public rather than a private port. Consequently, if a Robust service is separate, the port must be a public port. The scale of impact will depend largely on the servers’ network configuration.

Network Setup Of The Servers.

Different Network configurations will require different Firewall rules as well as using different URLs and Ports. Consequently, I have added extra constants in the ini files. This should mean only the top section will need modifying. Notably, some grids run on private networks with just one access point to the internet. However, others are all separate servers which communicate via the internet.

Firewall Changes and Security Considerations

With a single Robust instance and a publicly accessible grid, Robust uses two primary ports. In the default configuration port, 8002 is a public port, and port 8003 is a private port. The public port is openly accessible to the internet while the private port is only accessible to servers running simulators connected to the Robust. When separating the services on a closed grid, it is possible to keep only 8002 as a public port while the extras remain private. However, a Hypergrid enabled system will need to make the port for each separated service public. Consequently, for Hypergrids there is a little less security with separate Robust instances.

Separation Considerations – Opensim – Separating Robust Instances

  • Single Machine or Multiple servers
  • Network setup of the servers.

Conflicting Advice from the Opensimulator Wiki

The advice on the Opensimulator Wiki changed around December 2020. Before this point, the advice was that substantial gains could be made by separating Robust services even if they were running on the same physical machine and using the same database. In contrast, their current advice states that this method will give little or no performance benefit. I have done no testing to prove the validity of either statement.

Understanding the Directory Structure in the example configurations

Generic Information

This configuration is not a default opensimulator structure. There are two top-level directories ‘OpenSim’ and ‘OpenSimGrid’. These two directories are at the same level in the overall directory structure. The ‘OpenSimGrid’ folder contains the grids settings and data such as the assets. Consequently, everything which needs backing up to recover the grid is contained in this folder. In contrast, the ‘OpenSim’ folder contains standard Opensimulator files and directories. These can simply be replaced during an upgrade. Both of these folders have a subfolder called ‘Robust’. This allows both ‘Robust’ and Simulators’ to run on the same server using the same directory structure.

Operating System

These configurations are written for a Linux. While the principles will work the same in Windows, the syntax for directories (folders) might need adjusting.

.

├── OpenSim
│   └── Robust
│       ├── bin
│       │   ├── addon-modules
│       │   ├── assets
│       │   │   ├── AnimationsAssetSet
│       │   │   ├── Avatar
│       │   │   │   └── Newruth
│       │   │   ├── BodyPartsAssetSet
│       │   │   ├── ClothingAssetSet
│       │   │   ├── CollisionSoundsAssetSet
│       │   │   ├── GesturesAssetSet
│       │   │   ├── LandmarksAssetSet
│       │   │   ├── MyAssetSet
│       │   │   ├── NotecardsAssetSet
│       │   │   ├── ObjectsAssetSet
│       │   │   ├── PhotosAssetSet
│       │   │   ├── ScriptsAssetSet
│       │   │   ├── SettingsAssetSet
│       │   │   ├── SoundsAssetSet
│       │   │   └── TexturesAssetSet
│       │   ├── config-include
│       │   │   └── storage
│       │   ├── data
│       │   ├── Estates
│       │   ├── inventory
│       │   │   ├── AnimationsLibrary
│       │   │   ├── BodyPartsLibrary
│       │   │   ├── ClothingLibrary
│       │   │   ├── GesturesLibrary
│       │   │   ├── LandmarksLibrary
│       │   │   ├── NotecardsLibrary
│       │   │   ├── ObjectsLibrary
│       │   │   ├── OpenSimLibrary
│       │   │   ├── PhotosLibrary
│       │   │   ├── ScriptsLibrary
│       │   │   ├── SettingsLibrary
│       │   │   ├── SoundsLibrary
│       │   │   └── TexturesLibrary
│       │   ├── lib
│       │   │   └── NET
│       │   ├── lib32
│       │   ├── lib64
│       │   ├── Library
│       │   ├── openmetaverse_data
│       │   └── Regions
│       └── ThirdPartyLicenses
├── OpenSimGrid
│   └── Robust
│       ├── addins-config
│       ├── addins-registry
│       ├── bakes
│       ├── fassets
│       ├── maptiles
│       ├── RegistryLocation
│       └── Settings

All the configuration ‘ini’ files go in the Settings folder below.

├── OpenSimGrid
│   └── Robust
│       ├── addins-config
│       ├── addins-registry
│       ├── bakes
│       ├── fassets
│       ├── maptiles
│       ├── RegistryLocation
│       └── Settings

After running Opensimulator, many sub-folders will be added automatically to the example above. All the Robust ini configuration files go in the ‘Settings’ folder. The names of the configuration files are not important. However, it is important that the name specified for the ‘ini file’ in the startup script.

File Names (ini)

  • Robust.HG.Main.ini – Sometimes called Robust login, it will contain more than just login in this example.
  • Robust.HG.Asset.ini – configuration file for the Asset Instance of Robust
  • Robust.HG.GridUser.ini – configuration file for the Grid User instance of Robust
  • Robust.HG.Inventory.ini – configuration file for the Inventory instance of Robust
  • Robust.HG.Map.ini – configuration file for the Map instance of Robust.

Sample Single Instance Configuration – – Opensim – Separating Robust Instances

This is the starting point for splitting up Robust services. This configuration file is a single instance set up to work with the directory structure above. A lot of the comments have been removed. Where substantial sections are removed smaller comments stating the removal are there. Since this is a demonstration, I have made a few assumptions.

  • Hypergrid V2 is used, references to V1 and 1.5 are removed.
  • All information about remote console and RPC is removed
  • FS-Asset configuration rather than MySQL asset configuration.
  • No restrictions to hyper-grid travel are wanted.
  • The Grid info section assumes the grid is using WiFi and the website URL matches the login servers.
  • Freeswitch voice service is not in use.
;; Sample Single Robust Instance configuration. Lots of comments have been removed, where this has been done a smaller comment has been added to advise. 

[Const]
    BaseURL = "http://MyGridUrl"
    PublicPort = "8002"
    PrivatePort = "8003"

    ;; Extras Added For Separate Services, not used in the single service configuration
    AssetURL = "http://MyAssetUrl"
    GridUserURL = "http://MyGRidUserUrl"
    InventoryURL = "http://MyInventoryUrl"
    MapURL = "http://MyMapUrl"
    AssetPort = "8004"
    GridUserPort = "8005"
    InventoryPort = "8006"
    MapPort = "8007"

; * The full syntax of a connector string is:
; * [[<ConfigName>@]<port>/]<dll name>[:<class name>]
; *
[Startup]
    PIDFile = "/tmp/RobustMain.pid"
    RegistryLocation = "../../../OpenSimGrid/Robust/addins-registry"
    ConfigDirectory = "../../../OpenSimGrid/Robust/addins-config"
    ConsoleHistoryFileEnabled = true
    ConsoleHistoryFile = "RobustMainConsoleHistory.txt"
    ConsoleHistoryFileLines = 2000
    NoVerifyCertChain = true
    NoVerifyCertHostname = true 

[ServiceList]
    AssetServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    InventoryInConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    ;; Uncomment if you have set up Freeswitch (see [FreeswitchService] below)
    ;VoiceConnector = "8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector"
    GridServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridServiceConnector"
    GridInfoServerInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GridInfoServerInConnector"
    AuthenticationServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector"
    OpenIdServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:OpenIdServerConnector"
    AvatarServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AvatarServiceConnector"
    LLLoginServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector"
    PresenceServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:PresenceServiceConnector"
    UserAccountServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:UserAccountServiceConnector"
    GridUserServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridUserServiceConnector"
    AgentPreferencesServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AgentPreferencesServiceConnector"
    FriendsServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:FriendsServiceConnector"
    MapAddServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:MapAddServiceConnector"
    MapGetServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:MapGetServiceConnector"
    ;; Uncomment this if you want offline IM to work
    OfflineIMServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.OfflineIM.dll:OfflineIMServiceRobustConnector"
    ;; Uncomment this if you want Groups V2 to work
    GroupsServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.Groups.dll:GroupsServiceRobustConnector"
    ;; Uncomment to provide bakes caching
    BakedTextureService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XBakesConnector"
    ;; Uncomment for UserProfiles see [UserProfilesService] to configure...
    UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector"
    ;; Uncomment if you want to have centralized estate data
    EstateDataService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:EstateDataRobustConnector"
    MuteListConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:MuteListServiceConnector"
    ;; Additions for Hypergrid
    GatekeeperServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector"
    UserAgentServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserAgentServerConnector"
    HeloServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HeloServiceInConnector"
    HGFriendsServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HGFriendsServerConnector"
    InstantMessageServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:InstantMessageServerConnector"
    HGInventoryServiceConnector = "HGInventoryService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    HGAssetServiceConnector = "HGAssetService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    ;; Uncomment this if you want Groups V2, HG to work
    HGGroupsServiceConnector = "${Const|PublicPort}/OpenSim.Addons.Groups.dll:HGGroupsServiceRobustConnector"

; * This is common for all services, it's the network setup for the entire
; * server instance, if none is specified above
; *
[Network]
    port = ${Const|PrivatePort}
    ;; removed ssh information for remote console here
    AllowllHTTPRequestIn = false
    ;; removed remote console user details here

[Hypergrid]
    HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

[AccessControl]
    ;; Removed sections to ban viewers. Since they can be spoofed anyway why bother?

[DatabaseService]
    StorageProvider = "OpenSim.Data.MySQL.dll"
    ConnectionString = "Data Source=localhost;Database=RobustMain;User ID=RobustUser;Password=RobustUserPassword;Old Guids=true;"

; * As an example, the below configuration precisely mimics the legacy
; * asset server. It is read by the asset IN connector (defined above)
; * and then loads the OUT connector (a local database module). That,
; * in turn, reads the asset loader and database connection information
; *
[AssetService]
    AssetServerURI = "${Const|AssetURL}:${Const|AssetPort}"
    BaseDirectory = "../../../Opensim/Robust/fsassets/Main/data"
    SpoolDirectory = "../../../Opensim/fsassets/Main/tmp"
    
[InventoryService]
    LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AllowDelete = true

; * This is a new style grid service.
; * "Realm" is the table used for user lookup.
; * It defaults to "regions", which uses the legacy tables
; *
[GridService]
    LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
    ;;;;AssetService = "OpenSim.Services.AssetService.dll:AssetService"
    AssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
    MapTileDirectory = "/home/sara/FireAndIceGrid/Robust/maptiles"
    ;;default region information removed here
    HypergridLinker = true
    ExportSupported = true

; * This is the configuration for the Freeswitch server in grid mode
[FreeswitchService]
    ;; removed free switch configuration as I am not using it. 

[AuthenticationService]
    LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    ;;removed remote consule section here

[OpenIdService]
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"

; * This is a new style user service.
; * "Realm" is the table used for user lookup.
; * It defaults to "UserAccounts", which uses the new style.
; * Realm = "users" will use the legacy tables as an authentication source
; *
[UserAccountService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    CreateDefaultAvatarEntries = true
    ;;remove remote rpc entries here

[GridUserService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"

[AgentPreferencesService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:AgentPreferencesService"

[PresenceService]
    LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"

[AvatarService]
    LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"

[FriendsService]
    LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"

[EstateService]
    LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"

[LibraryService]
    LibraryName = "OpenSim Library"
    DefaultLibrary = "./inventory/Libraries.xml"

[LoginService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
    ; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    MinLoginLevel = 0
    ;; for hypergrid
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ; This inventory service will be used to initialize the user's inventory
    HGInventoryServicePlugin = "HGInventoryService@OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ;; end hypergrid

    ; Ask co-operative viewers to use a different currency name
    Currency = "$G"
    ClassifiedFee = 0

    WelcomeMessage = "Welcome, Avatar!"
    AllowRemoteSetLoginLevel = "false"

    ; For V2 map
    MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/";
    ; SearchURL = "${Const|BaseURL}:${Const|PublicPort}/";
    ; DestinationGuide = "${Const|BaseURL}/guide"
    ; AvatarPicker = "${Const|BaseURL}/avatars"

    SRV_HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_FriendsServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_IMServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_GroupsServerURI = "${Const|BaseURL}:${Const|PublicPort}"

    DSTZone = "America/Los_Angeles; Pacific Standard Time."
    ;; removed DDOS defaults here

[MapImageService]
    LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
    TilesStoragePath = "../../../OpenSimGrid/Robust/maptiles"
    ; If for some reason you have the AddMapTile service outside the firewall (e.g. ${Const|PublicPort}),
    ; you may want to set this. Otherwise, don't set it, because it's already protected.
    ; GridService = "OpenSim.Services.GridService.dll:GridService"

[GridInfoService]
    login = ${Const|BaseURL}:${Const|PublicPort}/
    gridname = "My Open SimGrid"
    gridnick = "MyOpenSimGrid"
    ;login = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    ;welcome = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html 
    ;economy = ${Const|BaseURL}/economy
    ;about = ${Const|BaseURL}
    ;register = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    ;help = ${Const|BaseURL}/contact.html
    ;password = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/
    ;GridStatus = ${Const|BaseURL}:${Const|PublicPort}/GridStatus
    ;GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/GridStatusRSS

[GatekeeperService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    ;; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    AllowTeleportsToAnyRegion = true
    ;; removed section for restricting hypergrid access here

[UserAgentService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ;; for the service
    GridUserService     = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    GatekeeperService   = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    FriendsService      = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService  = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    ;;removed section about restricting hypergrid travel here

[HGInventoryService]
    ; For the InventoryServiceInConnector
    LocalServiceModule    = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ;;removed HG1.0 ahd HG1.5 info as not using it. 
    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    AuthType = None

[HGAssetService]
    ;; Use the second option if you have FSAsset service enabled
    ;LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFSAssetService"
    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    ;;removed notes about other authentication types here
    AuthType = None
    ;;removed export restion section here

[HGFriendsService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFriendsService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"


[HGInstantMessageService]
    LocalServiceModule  = "OpenSim.Services.HypergridService.dll:HGInstantMessageService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    UserAgentService    = "OpenSim.Services.HypergridService.dll:UserAgentService"
    InGatekeeper = True

[Messaging]
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"

[Groups]
    ;; for the HG Groups service
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    MaxAgentGroups = 42

[UserProfilesService]
    LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService"
    Enabled = false
    ;; Configure this for the separate profiles database
    ;; ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;Old Guids=true;"
    ;; Realm = UserProfiles
    UserAccountService = OpenSim.Services.UserAccountService.dll:UserAccountService
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"

[BakedTextureService]
    LocalServiceModule = "OpenSim.Server.Handlers.dll:XBakes"
    ;; This directory must be writable by the user ROBUST runs as. It will be created automatically.
    BaseDirectory = "../../../OpenSimGrid/Robust/bakes"

[MuteListService]
	LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService"

Separating The Asset Service – Opensim – Separating Robust Instances

The asset service can be on a completely separate server to the Main robust services. It is worth noting that if FSAssets is in use, the Main Robust needs a directory for FSAssets. However, this does not mean the assets get saved there. The size of the folder on Main Robust server remains the same before and after asset transfers. In contrast, the size of the folder on the Asset server increases with each new item. It is also noteworthy that both the ‘assets’ and ‘fsassets’ tables are still in the Main Robust database. Similarly to the folders, these tables do not change with more assets. They appear to just store information about the default assets.

Changes

  • ServiceList Section
  • AssetService Section
  • LoginService Section

[ServiceList] Section

Comment out or delete the AssetServiceConnector

;;;;AssetServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"

AssetService Section

Amend the LocalServiceModule so it has the URL and port for the asset service at the start.

;;;;LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"
AssetServerURI = "${Const|AssetURL}:${Const|AssetPort}"

LoginService Section

Amend the SRV_AssetServerURI to use the asset service URL and port.

;;;;SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}"
SRV_AssetServerURI = "${Const|AssetURL}:${Const|AssetPort}"

GridService Section

Amend the Asset service line so it uses a connector. Note the plural AssetServices rather than AssetService.

;;;;AssetService = "OpenSim.Services.AssetService.dll:AssetService"
AssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"

Robust.HG.Main.ini – Separate Asset Service

Make a new file for the Asset Services Robust. Some of the changes in this section assume the asset service is running on the same server. In such a case having a different name for log files makes sense. If they are completely different machines, it is not important but does no harm.

;; Sample of Robust Main with Asset Service separated out
[Const]
    BaseURL = "http://MyGridUrl"
    PublicPort = "8002"
    PrivatePort = "8003"

    ;; Extras Added For Separate Services, not used in the single service configuration
    AssetURL = "http://MyAssetUrl"
    GridUserURL = "http://MyGRidUserUrl"
    InventoryURL = "http://MyInventoryUrl"
    MapURL = "http://MyMapUrl"
    AssetPort = "8004"
    GridUserPort = "8005"
    InventoryPort = "8006"
    MapPort = "8007"

; * The full syntax of a connector string is:
; * [[<ConfigName>@]<port>/]<dll name>[:<class name>]
; *
[Startup]
    PIDFile = "/tmp/RobustMain.pid"
    RegistryLocation = "../../../OpenSimGrid/Robust/addins-registry"
    ConfigDirectory = "../../../OpenSimGrid/Robust/addins-config"
    ConsoleHistoryFileEnabled = true
    ConsoleHistoryFile = "RobustMainConsoleHistory.txt"
    ConsoleHistoryFileLines = 2000
    NoVerifyCertChain = true
    NoVerifyCertHostname = true 

[ServiceList]
    ;;;;AssetServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    InventoryInConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    ;; Uncomment if you have set up Freeswitch (see [FreeswitchService] below)
    ;VoiceConnector = "8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector"
    GridServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridServiceConnector"
    GridInfoServerInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GridInfoServerInConnector"
    AuthenticationServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector"
    OpenIdServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:OpenIdServerConnector"
    AvatarServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AvatarServiceConnector"
    LLLoginServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector"
    PresenceServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:PresenceServiceConnector"
    UserAccountServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:UserAccountServiceConnector"
    GridUserServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridUserServiceConnector"
    AgentPreferencesServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AgentPreferencesServiceConnector"
    FriendsServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:FriendsServiceConnector"
    MapAddServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:MapAddServiceConnector"
    MapGetServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:MapGetServiceConnector"
    ;; Uncomment this if you want offline IM to work
    OfflineIMServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.OfflineIM.dll:OfflineIMServiceRobustConnector"
    ;; Uncomment this if you want Groups V2 to work
    GroupsServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.Groups.dll:GroupsServiceRobustConnector"
    ;; Uncomment to provide bakes caching
    BakedTextureService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XBakesConnector"
    ;; Uncomment for UserProfiles see [UserProfilesService] to configure...
    UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector"
    ;; Uncomment if you want to have centralized estate data
    EstateDataService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:EstateDataRobustConnector"
    MuteListConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:MuteListServiceConnector"
    ;; Additions for Hypergrid
    GatekeeperServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector"
    UserAgentServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserAgentServerConnector"
    HeloServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HeloServiceInConnector"
    HGFriendsServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HGFriendsServerConnector"
    InstantMessageServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:InstantMessageServerConnector"
    HGInventoryServiceConnector = "HGInventoryService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    HGAssetServiceConnector = "HGAssetService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    ;; Uncomment this if you want Groups V2, HG to work
    HGGroupsServiceConnector = "${Const|PublicPort}/OpenSim.Addons.Groups.dll:HGGroupsServiceRobustConnector"

; * This is common for all services, it's the network setup for the entire
; * server instance, if none is specified above
; *
[Network]
    port = ${Const|PrivatePort}
    ;; removed ssh information for remote console here
    AllowllHTTPRequestIn = false
    ;; removed remote console user details here

[Hypergrid]
    HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

[AccessControl]
    ;; Removed sections to ban viewers. Since they can be spoofed anyway why bother?

[DatabaseService]
    StorageProvider = "OpenSim.Data.MySQL.dll"
    ConnectionString = "Data Source=localhost;Database=RobustMain;User ID=RobustUser;Password=RobustUserPassword;Old Guids=true;"

; * As an example, the below configuration precisely mimicks the legacy
; * asset server. It is read by the asset IN connector (defined above)
; * and it then loads the OUT connector (a local database module). That,
; * in turn, reads the asset loader and database connection information
; *
[AssetService]
    AssetServerURI = "${Const|AssetURL}:${Const|AssetPort}"
    ;;;;LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"
    ;LocalServiceModule = "${Const|AssetURL}:${Const|AssetPort}/OpenSim.Services.FSAssetService.dll:FSAssetConnector"
    BaseDirectory = "../../../OpenSimGrid/Robust/fsassets/Main/data"
    SpoolDirectory = "../../../OpenSimGrid/Robust/fsassets/Main/tmp"
    ;;;;FallbackService = "OpenSim.Services.AssetService.dll:AssetService";
    ;;;;DaysBetweenAccessTimeUpdates = 30
    ;;;;ShowConsoleStats = true
    ;;;;DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
    ;;;;AssetLoaderArgs = "./assets/AssetSets.xml"
    ;;;;AllowRemoteDelete = true
    ;;;;AllowRemoteDeleteAllTypes = false
    
[InventoryService]
    LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AllowDelete = true

; * This is a new style grid service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "regions", which uses the legacy tables
; *
[GridService]
    LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
    ;;;;AssetService = "OpenSim.Services.AssetService.dll:AssetService"
    AssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
    MapTileDirectory = "../../../OpenSimGrid/Robust/maptiles"
    ;default regions removed here and will need adding back
    HypergridLinker = true
    ExportSupported = true

; * This is the configuration for the Freeswitch server in grid mode
[FreeswitchService]
    ;; removed free switch configuration as I am not using it. 

[AuthenticationService]
    LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    ;;removed remote consule section here

[OpenIdService]
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"

; * This is a new style user service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "UserAccounts", which uses the new style.
; * Realm = "users" will use the legacy tables as an authentication source
; *
[UserAccountService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    CreateDefaultAvatarEntries = true
    ;;remove remote rpc entries here

[GridUserService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"

[AgentPreferencesService]
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:AgentPreferencesService"

[PresenceService]
    LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"

[AvatarService]
    LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"

[FriendsService]
    LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"

[EstateService]
    LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"

[LibraryService]
    LibraryServerURI = "${Const|InventoryURL}:${Const|InventoryPort}"
    LibraryName = "OpenSim Library"
    DefaultLibrary = "./inventory/Libraries.xml"

[LoginService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
    ; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    ;;;;LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
    LibraryService = "OpenSim.Services.Connectors.dll:LibraryServiceConnector"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    MinLoginLevel = 0
    ;; for hypergrid
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ; This inventory service will be used to initialize the user's inventory
    HGInventoryServicePlugin = "HGInventoryService@OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ;; end hypergrid

    ; Ask co-operative viewers to use a different currency name
    ;Currency = "$G"
    ;ClassifiedFee = 0

    WelcomeMessage = "Welcome, Avatar!"
    AllowRemoteSetLoginLevel = "false"

    ; For V2 map
    MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/";
    ; SearchURL = "${Const|BaseURL}:${Const|PublicPort}/";
    ; DestinationGuide = "${Const|BaseURL}/guide"
    ; AvatarPicker = "${Const|BaseURL}/avatars"

    SRV_HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    ;;;;SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_AssetServerURI = "${Const|AssetURL}:${Const|AssetPort}"
    SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_FriendsServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_IMServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_GroupsServerURI = "${Const|BaseURL}:${Const|PublicPort}"

    DSTZone = "America/Los_Angeles;Pacific Standard Time"
    ;; removed DDOS defaults here

[MapImageService]
    LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
    TilesStoragePath = "../../../OpenSimGrid/Robust/maptiles"
    ; If for some reason you have the AddMapTile service outside the firewall (e.g. ${Const|PublicPort}),
    ; you may want to set this. Otherwise, don't set it, because it's already protected.
    ; GridService = "OpenSim.Services.GridService.dll:GridService"

[GridInfoService]
    login = ${Const|BaseURL}:${Const|PublicPort}/
    gridname = "Fire And Ice Grid"
    gridnick = "Fire & Ice"
    login = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    welcome = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html 
    ;economy = ${Const|BaseURL}/economy
    about = ${Const|BaseURL}
    register = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    help = ${Const|BaseURL}/contact.html
    password = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/
    ;GridStatus = ${Const|BaseURL}:${Const|PublicPort}/GridStatus
    ;GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/GridStatusRSS

[GatekeeperService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    ;; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    AllowTeleportsToAnyRegion = true
    ;; removed section for restricting hypergrid access here

[UserAgentService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ;; for the service
    GridUserService     = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    GatekeeperService   = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    FriendsService      = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService  = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    ;;removed section about restricting hypergrid travel here

[HGInventoryService]
    ; For the InventoryServiceInConnector
    LocalServiceModule    = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ;;removed HG1.0 ahd HG1.5 info as not using it. 
    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AvatarService = "OpenSim.AvatarService.dll:AvatarService"
    AuthType = None

[HGAssetService]
    ;; Use the second option if you have FSAsset service enabled
    ;LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFSAssetService"
    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    ;;removed notes about other authentication types here
    AuthType = None
    ;;removed export restion section here

[HGFriendsService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFriendsService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"


[HGInstantMessageService]
    LocalServiceModule  = "OpenSim.Services.HypergridService.dll:HGInstantMessageService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    UserAgentService    = "OpenSim.Services.HypergridService.dll:UserAgentService"
    InGatekeeper = True

[Messaging]
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"

[Groups]
    ;; for the HG Groups service
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    MaxAgentGroups = 42

[UserProfilesService]
    LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService"
    Enabled = false
    ;; Configure this for the separate profiles database
    ;; ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;Old Guids=true;"
    ;; Realm = UserProfiles
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"

[BakedTextureService]
    LocalServiceModule = "OpenSim.Server.Handlers.dll:XBakes"
    ;; This directory must be writable by the user ROBUST runs as. It will be created automatically.
    BaseDirectory = "../../../OpenSimGrid/Robust/bakes"

[MuteListService]
	LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService"

Robust.HG.Asset.ini

; Sample of Robust Asset Instance with ONLY the Asset service seperated
[Const]
    BaseURL = "http://MyGridUrl"
    AssetURL = "http://MyAssetUrl"
    PublicPort = "8002"
    PrivatePort = "8003"
    AssetPort = "8004"
    InventoryPort = "8006"

[Startup]
    PIDFile = "/tmp/RobustAsset.pid"
    ConfigDirectory = "robust-include"
    ConsoleHistoryFileEnabled = true
    ConsoleHistoryFile = "RobustAssetConsoleHistory.txt"
    ConsoleHistoryFileLines = 500

[ServiceList]
    AssetServiceConnector = "${Const|AssetPort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    HeloServiceInConnector = "${Const|AssetPort}/OpenSim.Server.Handlers.dll:HeloServiceInConnector"
    
[Network]
    port = "${Const|AssetPort}"
    AllowllHTTPRequestIn = false

[DatabaseService]
    StorageProvider = "OpenSim.Data.MySQL.dll"
    ConnectionString = "Data Source=localhost;Database=RobustAsset;User ID=RobustUser;Password=RobustUserPassword;Old Guids=true;"

[AssetService]
    ;LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
    LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"
    BaseDirectory = "../../../OpenSimGrid/Robust/fsassets/Asset/data"
    SpoolDirectory = "../../../OpenSimGrid/Robust/fsassets/Asset/tmp"
    FallbackService = "OpenSim.Services.AssetService.dll:AssetService";
    DaysBetweenAccessTimeUpdates = 30
    ShowConsoleStats = true
    DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
    AssetLoaderArgs = "./assets/AssetSets.xml"
    AllowRemoteDelete = true
    AllowRemoteDeleteAllTypes = false

[GridInfoService]
    login = ${Const|BaseURL}:${Const|PublicPort}/
    gridname = "My Open SimGrid"
    gridnick = "MyOpenSimGrid"
    welcome = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    economy = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    about = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    register = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    help = ${Const|BaseURL}
    password = ${Const|BaseURL}:${Const|PublicPort}/wifi/index.html
    gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/
    uas = ${Const|BaseURL}:${Const|PublicPort}/
    
[LoginService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
    ; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    ; The minimum user level required for a user to be able to login.  0 by default
    ; If you disable a particular user's account then you can set their login level below this number.
    ; You can also change this level from the console though these changes will not be persisted.
    MinLoginLevel = 0

    ;; for hypergrid
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    HeloServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HeloServiceInConnector"

    ; This inventory service will be used to initialize the user's inventory
    HGInventoryServicePlugin = "HGInventoryService@OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ; NOTE: HGInventoryServiceConstructorArg is deprecated. For now it will work, but see above
	;       for the correct method if passing additional arguments.
    ;; end hypergrid

    ; Ask co-operative viewers to use a different currency name
    ;Currency = "G$"

    ;; Set minimum fee to publish classified
    ;ClassifiedFee = 0

    WelcomeMessage = "Welcome to the Fire and Ice grid"
    AllowRemoteSetLoginLevel = "false"

    ; For V2 map
    MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/";

    SearchURL = "${Const|BaseURL}:${Const|PublicPort}/";

    AvatarPicker = "${Const|BaseURL}/avatars

    SRV_HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_AssetServerURI = "${Const|BaseURL}:${Const|AssetPort}"
    SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_FriendsServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_IMServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_GroupsServerURI = "${Const|BaseURL}:${Const|PublicPort}"

About The Author

Sara Payne is the owner of the Fire And Ice Opensim Grid. As well as running the grid she is a student of computer science. Furthermore, Fire And Ice Grid blog posts are available on the Fire And Ice Grid Blog. Finally, Sara runs an unrelated business in her local community.

This article has 1 comments

  1. Pingback: Setup Ubuntu 20.04 for Opensimulator - Sara Payne's BlogSara Payne's Blog

Leave a Comment

Your email address will not be published. Required fields are marked *