Configuration

From OpenSimulator

Revision as of 08:58, 14 January 2008 by Phrearch (Talk | contribs)

Jump to: navigation, search

It is recommended that you first get OpenSim running in standalone mode, before you attempt to connect it to a grid, either your own grid or a public grid.

A simulator actually consists of four services, known as UGAS which stand for User, Grid, Asset & Simulator. They are started in that order.

A simulator running in its default standalone mode has all the services self-contained, but they are very modest. This means any first/last/password works. It also means inventory is all local with no region or grid-wide connections.

A simulator running as a local grid runs all four services on the same computer. Multiple sims can be run, across-region crossing including teleporting and a set of inventory items that are within this local grid.

A simulator running as part of a public grid runs only OpenSim.exe and the other three services are running on a server common to many regions. This also means that understanding the needed UUID, X,Y location, server handshake passwords, master avatar first/last/password and a couple of other settings. These are not difficult, but do require a little care in setting up. If you would prefer a 'Ready-to-Run' Version already configured please see the Download Page.

Contents

Command Line arguments passed to OpenSim.exe

OpenSim.exe responds to various command line arguments. These include "-inifile", "-configfile", "-gridmode", "-physics", "-config" & "-noverbose".

When starting OpenSim in either Windows or Linux, one can add "-physics=OpenDynamicsEngine" to run the OpenDynamicsEngine instead of basicphysics.

Most users in standalone mode will not add any command line arguments. For local grid or public grid, the "-gridmode=true" is usually the only argument used. The rest are for more advanced configuration.

OpenSim configuration file

The simulator configuration is managed using a file called OpenSim.ini. This file is used regardless of whether the sim is running in standalone or grid mode. Detailed information on the options available for setttings in this file can be found here.

Standalone mode

When you start OpenSim in standalone mode, it will ask you several question at the console. The first set of prompts that start with "NETWORK SERVERS INFO", you can just hit return to accept the defaults if you will be running in standalone mode.

The prompts that start with "DEFAULT REGION CONFIG" are where you need to start paying attention. Some are self-explanatory. Here are explanations for the others:

  • Grid Location. OpenSim regions can be placed anywhere on a 65536 by 65536 grid. In standalone mode, it is safe to leave these X and Y locations at their defaults.
  • Filename for local storage. Safe to leave at default.
  • Internal IP address; This should always be 0.0.0.0
  • Internal IP port for incoming UDP client connection. You can make this any port you want, but it is safe to leave at the default 9000.
  • External host name. If you will only be attaching to your sim from a SecondLife client on the same machine, you can leave this at the default 127.0.0.1. If you will be wanting to connect to it from a client on another machine, this should be the IP address or hostname of the machine you are running this sim on.

To connect to your new sim, start up secondlife with the following command line switches:

-loginuri http://127.0.0.1:9000/ -loginpage http://127.0.0.1:9000/?method=login

This assumes you are running the secondlife client on the same box. If you are running it on a separate box, substitute the IP address of your sim machine.

To create a user: type "create user <first> <last> <password> <x_loc> <y_loc>" in the server console

Databases

Opensim's default database is SQlite, but supports some other database-engines like mysql and mssql. You can find some more information about database-support on this page.

Grid mode

You want to run your own grid. Great! Assuming that you already got your sim running in standalone mode, here is what you need to do:

1. Current builds of OpenSim grid mode are using mysql to store the grid information. You must have this installed and configured if you want to run your own grid. See mysql-config for more information.

2. The servers should be started in a certain order. UGAS: UserServer, GridServer, AssetServer, InventoryServer, Sim. These are all found in the bin directory. In windows, you can just double-click on the executables to start them. In linux, you will probably have to start them with mono. The executable names are:

OpenSim.Grid.UserServer.exe
OpenSim.Grid.GridServer.exe
OpenSim.Grid.AssetServer.exe
OpenSim.Grid.InventoryServer.exe
OpenSim.exe

3. Start the UserServer. If you will be running the GridServer on the same box, hit enter to accept the defaults, until it gives you the prompt

OpenUser#

This is the main prompt for the user server. If you will be running the GridServer on another box, change the Default Grid Server URI as appropriate.

4. Start the GridServer. Again, you can hit return at all the prompts if you are running them all on the same machine. If not, change the URIs for the Asset Server and User server to point to where you are running them. You will finally get to the console prompt for the GridServer which looks like this:

OpenGrid#

5. Start the AssetServer. The console prompt for this server will be:

OpenAsset#

6. Start the InventoryServer. The console prompt for this server will be:

INVENTORY#

7. If you are running all of these servers on the same box, which would be the normal configuration. You should be ready to start up your sim. Since the OpenSim.exe starts up by default in standalone mode, you will need to give it a command line switch to tell it to use gridmode instead:

OpenSim.exe -gridmode=true

or

mono OpenSim.exe -gridmode=true

With any luck, everything will come up without too many errors.

8. Go to the UserServer console, and type 'create user' to create a new avatar. It will prompt you for the name and password, and the X and Y of the sim that should be his home location. Use 1000 and 1000, or wherever you told your sim to live when you brought it up in standalone mode.

At the console of any of these servers, you should be able to type 'help' to get a list of commands.

You should now be able to connect to your new grid with your secondlife client. You need to tell your client to point at the UserServer rather than directly at the sim, though:

secondlife -loginuri http://127.0.0.1:8002/

8002 is the default port for the UserServer, and that IP address should be changed to the server you are running the UserServer on, if they are not all on the same box.

Happy OpenSimming!

Note: if you are using Windows Vista, remeber to start servers as Admin. If not it will prompt you an error in console like "Error - Access denied"

Technical Addendum

For running multiple regions on the same box, you simply make multiple copies of the 'default.xml' file inside the bin/Regions/ directory. You can do this using the script make.php in share/regions, or you can generate the files by hand.

If you want to create the files by hand, first copy the default.xml file in the bin/Regions directory, and name them anything you want (I name mine x.y.xml, where x znd y are the grid coords.)

Open each xml file and edit the uuid (each must be unique, a generator can be found at uuidgen webpage), region name, x & y positions, datastore (if you are using the prim thing) and internal ip port. EACH OF THESE MUST BE UNIQUE!

Once you have 2 or more xml files in the regions folder, running a single copy of OpenSim.exe will boot all of your sims! If you come across any errors, there is most likely an error in the xml files.

Attaching your sim to someone else's grid

To set up the simulation server (i.e., OpenSim.exe) to connect to an external grid, you should edit the OpenSim.ini file in the bin directory. In that file, there is a [Network] section with URLs for the grid, user, and asset servers, as well as send and receive keys (for a basic level of security). The addresses and send/receive keys will vary depending on the grid you are connecting to, and the grid operator should tell you what values to use.

The other file you may have to change is in your bin/Regions directory. This is where your individual region config files are. If you only have one region, it will by default be called default.xml.

This can be edited with any text editor. The grid owner may tell you what X and Y location you can place your sim at (you can't have multiple sims at the smae location on the grid). If so, the fields you will need to change in this file are sim_location_x and sim_location_y. And the external_host_name should be set to the hostname or IP address of your simulation server (i.e., the machine that is running OpenSim.exe).

A list of public grids that you can attach your sim to is at OpenSim: Grids

Automate Grid Startup

Windows

Create a file called StartGrid.BAT:

 start OpenSim.Grid.UserServer.exe
 sleep 3
 start OpenSim.Grid.GridServer.exe
 sleep 3
 start OpenSim.Grid.AssetServer.exe
 sleep 3
 start OpenSim.Grid.InventoryServer.exe
 sleep 3
 start OpenSim.exe -gridmode=true

PS! Check that you have sleep command installed, I'm unsure if all Windows versions have that.
This knowledgebase article describes how to add a batch file to startup of Windows (before logon).
http://support.microsoft.com/kb/q243486/
Note that you have to start all applications and answer the configuration questions once before adding it to any startup.

If you start the server before logon then there will be no window to close if you want to shut down the server, so you can create a "StopGrid.BAT" with:

taskkill /FI "IMAGENAME eq OpenSim.*"
sleep 3
taskkill /FI "IMAGENAME eq OpenSim.*"
sleep 3
taskkill /F /FI "IMAGENAME eq OpenSim.*"

(Do they have to be shut down in any particular order?)

Linux/Mac OS X

Use Screen Command

Use the screen command to automate startup

Setup screen command and setup shell file

screen install:

Linux

apt-get install screen

Mac OS X: Download either MacPorts, http://www.macports.org/, or Fink, http://www.finkproject.org/ to download *nix packages MacPorts

sudo port install screen

Fink

Need command line for Fink.

Create file runsim.sh

#!/bin/sh
cd opensim/bin
sleep 3
screen -S UserServer -d -m  mono OpenSim.Grid.UserServer.exe
sleep 3
screen -S GridServer -d -m mono OpenSim.Grid.GridServer.exe
sleep 3
screen -S AssetServer -d -m mono OpenSim.Grid.AssetServer.exe
sleep 3
screen -S InventoryServer -d -m mono OpenSim.Grid.InventoryServer.exe
sleep 3
screen -S OpenSim -d -m mono OpenSim.exe -gridmode=true

Startup and access servers

./runsim.sh

If you have permission issues

chmod 755 runsim.sh

To see a list of the servers in screen:

screen -ls or screen -list

Output will look like the following:

There are screens on:
     8419.OpenSim  (Detached)
     8403.InventoryServer  (Detached)
     8378.AssetServer  (Detached)
     8360.GridServer  (Detached)
     8347.UserServer  (Detached)

To access server

screen -r 8419.OpenSim
screen -r 8403.InventoryServer
etc.

To exit screen, leaving server running, and to return to shell

ctrl-a d

Shutdown Servers

Either manually access each sceen

screen -r 8419.OpenSim
shutdown

Or use

killall mono

Or

for i in `ps afxu | grep -i "mono.*OpenSim" | grep -v grep | awk {'print $2'}`; do kill $i; done

Need to see if there is a way to use a shell script using screen to shutdown servers

Personal tools
General
About This Wiki