Skip to content

soup-bowl/opensimulator-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

145 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenSimulator

Unofficial

GitHub Workflow Status Docker Image Size (tag) Docker Pulls

Screenshot from inside the Firestorm Metaverse client, showing a woman with a floating nametag 'foo bar' staring out into the ocean, standing upon a small mound island

From the OpenSimulator site:

OpenSimulator is an open source multi-platform, multi-user 3D application server. It can be used to create a virtual environment (or world) which can be accessed through a variety of clients, on multiple protocols.

This unofficial Docker configuration aims to assist in setting the server up for testing and general purpose use.

This is still experimental - thar be bugs!

Supported tags and respective Dockerfile links

Usage

Important

The dependency on screen for this image has been resolved (see #9), so any further updates to the versioned images of 0.9.3.0 and above will no longer use screen. If you wish to continue with this version, switch your tag to 0.9.3.0-screen, however ongoing support for this is not guaranteed.

docker run -it -d --name opensim -p 9000:9000 -p 9000:9000/udp soupbowl/opensimulator:latest

You can change settings with the following optional environmental overrides:

  • -e GRID_NAME=... to define the name of your grid.
  • -e GRID_WELCOME=... to show a custom message on the login screen.
  • -e REGION_NAME=... to define the Region name.
  • -e ESTATE_NAME=... to define the Estate name.
  • -e ESTATE_OWNER_NAME=... to set the estate owner name (and creates a login) - format of 'Firstname Lastname'.
  • -e ESTATE_OWNER_PASSWORD=... to define a login password.
  • -e ESTATE_OWNER_UUID=... for a custom UUID, if desired.
  • -e ESTATE_OWNER_EMAIL=... to define the estate email address.
  • -e DATABASE_ENGINE=... to change the database engine (sqlite and mysql support so far) - defaults to sqlite.
  • -e MYSQL_SERVER=..., -e MYSQL_DATABASE=..., -e MYSQL_USER=..., -e MYSQL_PASSWORD=... if DATABASE_ENGINE is mysql.
  • -e PHYSICS_ENGINE=... to change the physics engine. Default is BulletSim with others being OpenDynamicsEngine, ubODE and basicphysics.

Once the server is running, you should be able to connect to it on localhost:9000. In Firestorm Viewer, you can go to Preferences, then Opensim, then under add new grid put localhost:9000 and you can then login.

If you don't define otherwise in the environments or a custom configuration, the login username is Foo bar and the password is password.

You can access the server administration command panel by running docker attach <container name>. You may need to run a command (e.g. help) to get the input to show up.

Custom Configurations

The environment list is not inclusive to the incredible range of options that OpenSimulator can be configured, and just covers a subset of the most popular settings. If you specify your own custom configuration file, it will be used instead of the image-generated configuration (you can define it as readonly (:ro) for assurance).

The working directory is /opt/opensim/bin/, so for example overriding OpenSim.ini would be "/path/to/local/OpenSim.ini:/opt/opensim/bin/OpenSim.ini:ro" (example).

SQLite Persistence

Outside of configurations, pretty much everything OpenSimulator does is stored in your chosen database provider. If you choose to leave the default on (sqlite), then your installation will not persist if you remove your container.

To aid the use of SQLite mode with persistent data, the default configuration has been modified to create the database directories into a dedicated directory (/opt/opensim/bin/sqlite-database). The following command will allow you to run a persistent SQLite setup.

(Note that if you use a custom SQLiteStandalone.ini file, this will not happen).

docker run -it -d --name opensim -p 9000:9000 -p 9000:9000/udp -v /path/on/your/system:/opt/opensim/bin/sqlite-database  soupbowl/opensimulator:latest

Limitations and Troubleshooting

Physics in ARM

Each image has an ARM64 architecture build. Your mileage may vary with these as the server environment was not designed for use outside x86_64.

Currently, Physics environments do not appear to be natively supported, and running a server with BulletSim or OpenDynamicsEngine (ODE) will cause a fatal exception. You unfortunately currently have to run the server without physics. This can be achieved by setting the environment -e PHYSICS_ENGINE=basicphysics, or with the following OpenSim configuration adjustment:

[Startup]
   physics = basicphysics

Alternatively, a suitable drop-in library in lib64/libBulletSim-aarch64.so for BulletSim Physics could work, but may be unsupported.

I'm keen to support ARM architecture to the bounds of OpenSimulator. If you have any experience on this, please reach out to me.

Command error: System.NullReferenceException: Object reference not set to an instance of an object.

This occurs because the terminal is expecting a method of input, but isn't able to detect one. This is why the command requires -it, and the compose needs tty and stdin_open.

Examples

See this repository for some example usages of this image.

Variants

Variant names are listed in Dockerhub format. They are also available from the GitHub Registry, replacing soupbowl/opensimulator with ghcr.io/soup-bowl/opensimulator-docker.

soupbowl/opensimulator:latest

The latest OpenSimulator image build using official .NET 8 image as the build reference.

If you pull from 0.9.2.2 or below, you will instead be using the Mono Framework.

soupbowl/opensimulator:<version>-screen

Reported in issue #9 and starting with OpenSimulator version 0.9.3.0, there was a bug that would cause the OpenSimulator server to unexpectedly shut down, seemingly from a phantom kill input. screen was used (and used previously to access the server) to send inputs to the server.

The mainline images are now using -console=basic, which strips away some of the fancy features in exchange for compatibility with the Docker session. screen is no longer required, and session management can be achieved via docker attach.

To aid a transition to this approach, this version is provided that continues to use screen. In this mode, regular server mode is retained, and you access server controls via:

docker exec -it <container name> screen -r -d OpenSim

You can leave the screen session by pressing ctrl + a then d. Please note that in this variant, no logs are output as they are captured in the screen session.

soupbowl/opensimulator:alpine-beta

A bleeding edge variant using Alpine as the build image. Progress can be tracked on the #1 ticket.

This will be revised/removed since OpenSimulator have moved away from Mono.

soupbowl/opensimulator:source

Gets the latest available code from the OpenSimulator repository, and constructs a bleeding edge container. Configuration is not different, but this is compiled from source and should be treated as highly unstable. These are built on demand, when a detected changre has occurred.

Source Code

The source code of the Docker image is found on the GitHub repository. You can find the OpenSimulator server software source code on their website.

About

Docker container for OpenSimulator

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors