Files
2026-03-30 19:56:46 +01:00

3.4 KiB

OpenSimulator, via Firestorm in the Browser

This experiment runs both the client and the server in Docker. The OpenSimulator server is running standalone mode, but network isolated. It is accessed via Firestorm running in a desktop container, accessed via port 3001.

Check the repository root readme for answers to most questions.

What this will do

Architecture

The compose script will do the following:

  • Starts up a OpenSimulator server, using an OpenSimulator Docker image.
    • In this experiment, it is inaccessible to the host machine.
    • A health check is in place to ensure everything starts after MariaDB finishes.
  • Starts up a copy of MariaDB Server 10.5.
  • Starts up an NGINX web server - this is to show the grid welcome screen, and more details.
    • In this experiment, it is inaccessible to the host machine.
  • Starts up Firestorm Viewer inside a container, accessible via port 3001.
    • Selkies, the web viewer, requires HTTPS. So port 3001 - the HTTPS port - is exposed to access it.
    • The certificate is self-signed, so the browser will flag it. You can safely ignore this warning.
    • This can be hot-swapped for Singularity Viewer - switch image to: ghcr.io/soup-bowl/singularity-web:edge

Once the docker compose up command is reporting all instances as done, you can access Firestorm Viewer at localhost:3001 (accept the self-signed cert).

This will not immediately list the grid - to access it: navigate to Firestorm Web, and you need to:

  • Either press ctrl + p, or go to Viewer > Preferences.
  • Navigate to Opensim
  • In Add new grid, add metaverse:9000, and click Apply.
    • For some reason, the grid info won't display after closing Preferences. You can get it to appear by restarting the viewer instance (docker compose restart viewer).

Now you should see Sandbox in the grid list - you can login as normal to this one.

Why metaverse:9000 instead of localhost:9000?

Because the viewer is running inside the container, rather than connecting to it, the viewer container has more access to the private network Docker Compose will make. So because of this, we no longer need to connect from outside the network, but from within. Docker registers the service key as the hostname, so the viewer sees metaverse as the container's private IP address.

Check the docker-compose.yml file, compare it to the standalone/docker-compose.yml - you'll see it has no ports open, except for the viewer!

OpenSimulator

For more information, see the Standalone instance.

Changing configurations

The configuration files are built into the image, so if you change the configuration files found in .docker, then you will need to run the following commands to rebuild the image (will not lose any data).

docker compose up --build -d