Installing and Configuring Opensim

Opensim version to use

If you intend to run an isolated Opensim region not connected to any grid or your own local grid, you can choose the latest version of Opensim that is available as executable files. This way you avoid to have to compile Opensim yourself. But this way you also will not get the latest Opensim features and bug fixes.

If you want to connect your Opensim regions to a public grid like OSGrid, it is important to use a version that is compatible with the UGAIM services of the grid. On, the login screen that you also see when you start a viewer for OSGrid, you can see what version the central grid services use. Beside that it often mentions a recommended version, shows the current grid status and additional important notices.

Sometimes OSGrid requests region owners to update their Opensim servers to a new version. Such announcements are often done on the OSGrid Twitter channel

It is a good practice to choose the lastest recommended version. You can get that version using the following svn command:

$ svn co -r <version number> opensim

Because the development of Opensim progresses fast, you will recognize, that previously stable versions become unstable over time. The reason is that the UGAIM servers of the grid have been updated or because your neighbors have started to use newer region servers than yours, that influence the performance of your region. In such cases you should update your Opensim installation to the newest recommended Opensim version. By the way, each Tuesday the Opensim core developers decide about next week’s recommended version.


How to install Opensim

Install Opensim as described under in the sections “Getting OpenSimulator” and “Building OpenSimulator”. Follow these instructions step by step.

How to configure Opensim

Configure Opensim by creating an OpenSim.ini file in the bin subdirectory as described under in the section “Configuring OpenSimulator”. Use the OpenSim.ini.example file in the same directory as basis.

For first tests it is recommended to configure Opensim as a standalone server (gridmode = false), without using a database and without using any additional functionality like offline messaging, remote admin, data snapshot, search, open grid protocol, voice, groups and web stats (by setting “Enabled = false” in the corresponding OpenSim.ini sections).

If your Opensim installation works well locally, you should try to switch to grid mode (gridmode = true), connect it to the MySQL database, enable the extensions and connect it to OSGrid as described on under “Instructions > Attach Region”.

If you want to run multiple regions, it is strongly recommended to run one server process per region, otherwise you might experience instabilities, especially if your region gets many visitors or if many prims or scripts are used.

If you run multiple region servers on a computer, you have to ensure that each server uses a different http port (see http_listener_port in the OpenSim.ini file). Ensure that your firewall and router settings are reachable from the Internet.

It is also a good practice to setup independent MySQL databases for each region. This simplifies moving regions from one server to another by simply copying over the SQL database contents.

You can find a good example of an OpenSim.ini configuration file on under “Instructions > Attach Region”.

Here is a list of what I have changed in the default OpenSim.ini file for my regions. Just the changes I have made are shown per section. Changes required for the http port as well as for database setup are not shown here and need to be done additionally depending on the installation you have.

Do the changes shown under [ODEPhysicsSettings] only if you run your Opensim server in 64 bit mode. It fixes a problem with bend legs or legs stuck in the ground on 64 bit servers.

save_crashes = true
PIDFile = “/tmp/”
gridmode = true
hypergrid = true
AllowScriptCrossing = true
asset_database = “grid”
;meshing = ZeroMesher
meshing = Meshmerizer
;physics = basicphysics
physics = OpenDynamicsEngine
permissionmodules = “DefaultPermissionsModule”
serverside_object_permissions = true
region_owner_is_god = true
DefaultScriptEngine = “XEngine”
WorldMapModule = “WorldMap”
MapImageModule = “MapImageModule”

http_listener_port = <port of that region; for example 9000>
grid_server_url = “;
grid_send_key = “1234”
grid_recv_key = “1234”
user_server_url = “;
user_send_key = “1234”
user_recv_key = “1234”
asset_server_url = “;
inventory_server_url = “;
messaging_server_url = “;

; Control which region module is used for instant messaging.
; Default is InstantMessageModule (this is the name of the core IM module as well as the setting)
InstantMessageModule = InstantMessageModule
MessageTransferModule = MessageTransferModule
OfflineMessageModule = OfflineMessageModule
OfflineMessageURL =
MuteListModule = MuteListModule
MuteListURL =

[ODEPhysicsSettings]    (change these values only for 64 bit servers)
av_capsule_standup_tensor_win = 1700000
av_capsule_standup_tensor_linux = 1700000

enabled = true
access_password = <your password>

enabled = true

Enabled = true
AllowOSFunctions = true
OSFunctionThreatLevel = <level you choose; for example “High”>

AllowGodFunctions = true

; The following set of configs pertains to search.
; Set index_sims to true to enable search engines to index your searchable data
; If false, no data will be exposed, DataSnapshot module will be off, and you can ignore the rest of these search-related configs
; default is false
index_sims = true

; The variable data_exposure controls what the regions expose:
;    minimum: exposes only things explicitly marked for search
;    all: exposes everything
data_exposure = minimum

; If search is on, change this to your grid name; will be ignored for standalones
gridname = “OSGrid”

; Period between data snapshots, in seconds. 20 minutes, for starters, so that you see the initial changes fast.
; Later, you may want to increase this to 3600 (1 hour) or more
default_snapshot_period = 1200

; This will be created in bin, if it doesn’t exist already. It will hold the data snapshots.
snapshot_cache_directory = “DataSnapshot”

; This semicolon-separated string serves to notify specific data services about the existence
; of this sim. Uncomment if you want to index your data with this and/or other search providers.

[Search]    (add this section after [DataSnapshot])
SearchURL =

ObjectCapacity = 15000

Enabled = true
AllowOSFunctions = true
OSFunctionThreatLevel = <level you choose; for example “High”>

;login =
;gridname = “the lost continent of hippo”
;gridnick = “hippogrid”


; In order for this to work you need a functioning freeswitch pbx set
; up.  Configuration for that will be posted in the wiki soon.
enabled = true
;FreeSwitch server is going to contact us and ask us all
;sorts of things.
freeswitch_server_user = freeswitch
freeswitch_server_pass = password
freeswitch_api_prefix = /api
; this is the IP of your sim
freeswitch_service_server = ip.address.of.your.sim
;freeswitch_service_port = 80
; this should be the same port the region listens on
freeswitch_service_port = 9000
freeswitch_realm = ip.address.of.freeswitch.server
freeswitch_sip_proxy = ip.address.of.freeswitch.server:5060
freeswitch_attempt_stun = false
freeswitch_stun_server = ip.address.of.freeswitch.server
freeswitch_echo_server = ip.address.of.freeswitch.server
freeswitch_echo_port = 50505
freeswitch_well_known_ip = ip.address.of.freeswitch.server

;Type the address of your http server here, hostname is allowed.  This is provided so you can specify a hostname
;This is used by client for account verification.  By default, it’s the same as the freeswitch service server.

;opensim_well_known_http_address = Address_Of_your_SIM_HTTP_Server_Hostname_Allowed

freeswitch_default_timeout = 5000
freeswitch_subscribe_retry = 120
; freeswitch_password_reset_url =

Enabled = true

; This is the current groups stub in Region.CoreModules.Avatar.Groups
;Module  = Default

; The XmlRpcGroups implementation can be used against the publically available service
; that I have made available for testing.  Your group data is not guarenteed safe
; or available if you use this service, but it’s available now and seems to work.
; The PHP code for the service is available for you to deploy to your own server.
Module  = XmlRpcGroups

XmlRpcServiceURL       =
XmlRpcMessagingEnabled = true
XmlRpcNoticesEnabled   = true

; This makes the XmlRpcGroups modules very chatty on the console.
XmlRpcDebugEnabled     = true

; Disables HTTP Keep-Alive for Groups Module HTTP Requests, work around for
; a problem discovered on some Windows based region servers.  Only disable
; if you see a large number (dozens) of the following Exceptions:
; System.Net.WebException: The request was aborted: The request was canceled.
; XmlRpcDisableKeepAlive = false

; Enables the experimental packet pool. Yes, we’ve been here before.
RecyclePackets = true;
RecycleDataBlocks = true;

ReliableIsImportant = false
MaxReliableResends = 3

;Include-Standalone = “config-include/Standalone.ini”
Include-HGGrid = “config-include/GridHypergrid.ini”

[WebStats]    (add this section at the end of the file)
Enabled = true

You also need to create the file ./bin/config-include/GridCommons.ini with the following contents to use the OSGrid asset and inventory services and to use the Flotsam cache:


DefaultAssetLoader = “OpenSim.Framework.AssetLoader.Filesystem.dll”
AssetLoaderArgs = “assets/AssetSets.xml”

; change this to your grid-wide asset server
AssetServerURI = “;

; change this to your grid-wide asset server
InventoryServerURI = “;

;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists.
;; Copy the config .example file into your own .ini file and change configs there

AssetCaching = “FlotsamAssetCache”
Include-FlotsamCache = “config-include/FlotsamCache.ini”

;AssetCaching = “CenomeMemoryAssetCache”
;Include-CenomeCache = “config-include/CenomeCache.ini”

;AssetCaching = “GlynnTuckerAssetCache”

Finally configure the Flotsam cache in the file ./bin/config-include/FlotsamCache.ini:

;; Options for FlotsamAssetCache

; cache directory can be shared by multiple instances
CacheDirectory = /tmp/opensim_cache
; Other examples:
;CacheDirectory = /directory/writable/by/OpenSim/instance

; Log level
; 0 – (Error) Errors only
; 1 – (Info) Hit Rate Stats + Level 0
; 2 – (Debug) Cache Activity (Reads/Writes) + Level 1
LogLevel = 0

; How often should hit rates be displayed (given in AssetRequests)
; 0 to disable
HitRateDisplay = 100

; Set to false for disk cache only.
MemoryCacheEnabled = false

; How long {in hours} to keep assets cached in memory, .5 == 30 minutes
MemoryCacheTimeout = 2

; How long {in hours} to keep assets cached on disk, .5 == 30 minutes
; Specify 0 if you do not want your disk cache to expire
FileCacheTimeout = 0

; How often {in hours} should the disk be checked for expired filed
; Specify 0 to disable expiration checking
FileCleanupTimer = .166 ;roughly every 10 minutes

; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how
; long (in miliseconds) to block a request thread while trying to complete
; an existing write to disk.
; WaitOnInprogressTimeout = 3000


0 Responses to “Installing and Configuring Opensim”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog Stats

  • 21,588 hits


May 2009
« Apr   Jun »

%d bloggers like this: