Update image-herbal3d to new format

Bump version.
This commit is contained in:
Robert Adams
2024-08-14 05:46:15 +00:00
parent cfcde0ceb4
commit 19da8d51d9
76 changed files with 1282 additions and 3787 deletions
+1 -1
View File
@@ -1 +1 @@
4.0.4
4.0.5
-42
View File
@@ -1,42 +0,0 @@
# Docker container with nginx server service up a Javascript Basil viewer
FROM node:latest as built
ENV DIR=/tmp/app
ARG BASIL_BRANCH=master
RUN apt-get update
RUN mkdir -p "$DIR"
ADD https://api.github.com/repos/herbal3d/basil/git/refs/heads/$BASIL_BRANCH basil-git-version.json
RUN cd "$DIR" \
&& git clone --depth 1 -b master --single-branch https://github.com/Herbal3d/basil.git
RUN cd "$DIR" \
&& cd basil/Basilts \
&& npm install \
&& npm run build
# ============================================================================
FROM nginx:latest
ENV DIR=/tmp/app
LABEL Description="Docker container for serving Basilts"
# These are not used except for debugging
# RUN apt-get update \
# && apt-get install -y \
# coreutils \
# procps \
# vim \
# && rm -rf /var/lib/apt/lists/*
COPY --from=built $DIR/basil/Basilts/dist/ /usr/share/nginx/html
RUN cd /usr/share/nginx/html \
&& cp Entry.html index.html
EXPOSE 80/tcp
+81 -45
View File
@@ -1,25 +1,32 @@
# OpenSim with Herbal3d region modules
# docker build -t opensim-herbal3d .
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal
# Built with dotnet8
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
LABEL Description="Docker container running OpenSimulator with Herbal3d extensions"
ENV BASEDIR=/home/opensim
ENV OPENSIMDIR=/home/opensim/opensim
ENV VERSIONDIR=/home/opensim/VERSION
# In the target image, these are directories built and used
# While parameters, these usually don't change
ARG OPENSIMHOME=/home/opensim
ARG OPENSIMDIR=/home/opensim/opensim
ARG OPENSIMCONFIG=/home/opensim/opensim/bin/config
ARG VERSIONDIR=/home/opensim/VERSION
ARG OS_ACCOUNT=opensim
# This builder information passed in so they can be embedded in the built image
ARG BUILD_DATE
ARG BUILD_DAY
ARG OS_DOCKER_VERSION
ARG OS_DOCKER_GIT_BRANCH
ARG OS_DOCKER_GIT_COMMIT
ARG OS_DOCKER_GIT_COMMIT_SHORT
# Arguments for fetching OpenSimulator
# Arguments for fetching the proper version of OpenSimulator
ARG OS_GIT_REPO=git://opensimulator.org/git/opensim
ARG OS_GIT_BRANCH=dotnet6
ARG OS_GIT_BRANCH=master
ARG OS_BUILDTARGET=Release
ARG OS_SLN=OpenSim.sln
# Arguments about the build environment passed in so they can be embedded in the container
ARG BUILD_DATE=20240101.0000
ARG BUILD_DAY=20240101
ARG OS_DOCKER_VERSION=1.0.0
ARG OS_DOCKER_GIT_BRANCH=main
ARG OS_DOCKER_GIT_COMMIT=62fda19d0038a274bf3fd922b023b149b3a40a90
ARG OS_DOCKER_GIT_COMMIT_SHORT=62fda19d
# Each of the different packages can have their branch over-ridden with a --build-arg
ARG COMMON_ENTITIES_BRANCH=dotnet6
@@ -30,28 +37,20 @@ ARG OSAUTH_BRANCH=dotnet6
ARG RAGU_BRANCH=dotnet6
# Include required packages ('coreutils git vim' included for debugging)
# (20220127 using MariaDB as Mono image built on Debian 10)
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y \
coreutils procps git vim \
screen \
ccrypt \
cron \
mariadb-client \
sqlite \
libgdiplus \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
libc6-dev \
mariadb-client
# The simulator is run under the user name 'opensim'
RUN adduser --disabled-password --gecos 'OpenSimulator user' opensim
RUN adduser --disabled-password --gecos 'OpenSimulator user' $OS_ACCOUNT
USER opensim:opensim
# Scripts that keep OpenSimulator running, make crash reports, clean up log files, etc
COPY --chown=opensim:opensim temp-run-scripts/*.sh /home/opensim/
COPY --chown=opensim:opensim temp-run-scripts/crontab /home/opensim/
COPY --chown=opensim:opensim temp-run-scripts/.vimrc /home/opensim/
USER $OS_ACCOUNT:$OS_ACCOUNT
# Version information that goes in the image
RUN mkdir -p $VERSIONDIR \
@@ -65,7 +64,7 @@ RUN mkdir -p $VERSIONDIR \
&& echo ${OS_DOCKER_VERSION}-${BUILD_DAY}-${OS_DOCKER_GIT_COMMIT_SHORT} > "OS_DOCKER_IMAGE_VERSION"
# Fetch the latest version of the OpenSimulator sources.
RUN cd /home/opensim \
RUN cd $OPENSIMHOME \
&& git clone --depth=1 -b $OS_GIT_BRANCH --single-branch $OS_GIT_REPO opensim
RUN cd $OPENSIMDIR/addon-modules/ \
@@ -110,10 +109,14 @@ RUN cd $OPENSIMDIR/addon-modules/RaguOS \
# Extract version information from the fetched sources
RUN cd $OPENSIMDIR \
&& git rev-parse HEAD > $VERSIONDIR/OS_GIT_COMMIT \
&& git rev-parse --short HEAD > $VERSIONDIR/OS_GIT_COMMIT_SHORT \
&& echo $OS_GIT_REPO > "$VERSIONDIR/OS_GIT_REPO" \
&& echo $OS_GIT_BRANCH > "$VERSIONDIR/OS_GIT_BRANCH" \
&& echo $OS_BUILDTARGET > "$VERSIONDIR/OS_BUILD_TARGET" \
&& git describe --tags --long --always > "$VERSIONDIR/OS_GIT_DESCRIBE" \
&& git rev-parse HEAD > "$VERSIONDIR/OS_GIT_COMMIT" \
&& git rev-parse --short HEAD > "$VERSIONDIR/OS_GIT_COMMIT_SHORT" \
&& grep "const string VersionNumber" ./OpenSim/Framework/VersionInfo.cs | \
sed -e "s/^.*VersionNumber = \"\(.*\)\".*$/\1/" > $VERSIONDIR/OS_VERSION
sed -e "s/^.*VersionNumber = \"\(.*\)\".*$/\1/" > "$VERSIONDIR/OS_VERSION"
# Use the proper drawing library
RUN cp $OPENSIMDIR/bin/System.Drawing.Common.dll.linux $OPENSIMDIR/bin/System.Drawing.Common.dll
@@ -122,27 +125,59 @@ RUN cp $OPENSIMDIR/bin/System.Drawing.Common.dll.linux $OPENSIMDIR/bin/System.Dr
RUN cd $OPENSIMDIR \
&& chmod +x runprebuild.sh \
&& ./runprebuild.sh \
&& dotnet restore OpenSim.sln \
&& dotnet build --configuration Release OpenSim.sln
&& dotnet build --configuration $OS_BUILDTARGET $OS_SLN
# None of the configuration files in the built image are used
# Configuration files are all specified by invocation parameter.
# =======================================================================
# Create the binary only container with the dotnet8 runtime
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS release
# In the target image, these are directories built and used
ARG OPENSIMHOME=/home/opensim
ARG OPENSIMDIR=/home/opensim/opensim
ARG VERSIONDIR=/home/opensim/VERSION
ARG OS_BUILDTARGET=Release
ARG OS_ACCOUNT=opensim
# Include required packages ('coreutils,git,vim' included for debugging)
RUN apt-get update \
&& apt-get install -y \
coreutils procps git vim \
screen \
ccrypt \
cron \
libgdiplus \
libc6-dev \
mariadb-client \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
# The simulator is run under the user name 'opensim'
RUN adduser --disabled-password --gecos 'OpenSimulator user' $OS_ACCOUNT
USER $OS_ACCOUNT:$OS_ACCOUNT
# Scripts that keep OpenSimulator running, make crash reports, clean up log files, etc
COPY --chown=opensim:opensim temp-run-scripts/*.sh $OPENSIMHOME
COPY --chown=opensim:opensim temp-run-scripts/crontab $OPENSIMHOME
COPY --chown=opensim:opensim temp-run-scripts/vimrc $OPENSIMHOME/.vimrc
# Copy the binary files
COPY --from=build --chown=opensim:opensim $OPENSIMDIR/bin $OPENSIMDIR/bin
COPY --from=build --chown=opensim:opensim $VERSIONDIR $VERSIONDIR
# The NuGet DLLs are not copied into the bin directory.
# TODO: Figure out why NuGet packages are not copied.
RUN cp $BASEDIR/.nuget/packages/fleck/1.2.0/lib/netstandard2.0/Fleck.dll $OPENSIMDIR/bin
RUN cp $BASEDIR/.nuget/packages/nlog/4.7.15/lib/netstandard2.0/NLog.dll $OPENSIMDIR/bin
COPY --from=build --chown=opensim:opensim $OPENSIMDIR/.nuget/packages/fleck/1.2.0/lib/netstandard2.0/Fleck.dll $OPENSIMDIR/bin
COPY --from=build --chown=opensim:opensim $OPENSIMDIR/.nuget/packages/nlog/4.7.15/lib/netstandard2.0/NLog.dll $OPENSIMDIR/bin
# OpenSim.ini and other INI files include from "config-include/*"
# so copy an empty versions to nullfy the default configuration.
RUN cd $OPENSIMDIR/bin \
&& /home/opensim/nullOutConfigInclude.sh
# The .ini files in config-include in the image are not used and are emptied here to eliminate any confusion
RUN cd $OPENSIMDIR/bin/config-include \
&& $OPENSIMHOME/nullOutConfigInclude.sh
# Copy the configuration file sets for this image
# Create the directory that is mounted that includes all the configuration
RUN mkdir -p $OPENSIMDIR/bin/config
COPY --chown=opensim:opensim config/ $OPENSIMDIR/bin/config/
# Use the default, included configuration parameters
RUN cp $OPENSIMDIR/bin/OpenSim.ini.example $OPENSIMDIR/bin/OpenSim.ini
# Remove the run supression flag. If this file exists, OpenSim is not started by the run script.
RUN rm -f $OPENSIMDIR/../NOOPENSIM
WORKDIR $OPENSIMDIR/bin
ENTRYPOINT [ "/home/opensim/bootOpenSim.sh" ]
@@ -161,3 +196,4 @@ ENTRYPOINT [ "/home/opensim/bootOpenSim.sh" ]
# the necessary other INI files).
VOLUME $OPENSIMDIR/bin/config
+143
View File
@@ -0,0 +1,143 @@
# syntax=docker/dockerfile:1
# OpenSim for a container
# docker build -t opensim .
# Built with dotnet8
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
LABEL Description="Docker container running OpenSim"
# In the target image, these are directories built and used
# While parameters, these usually don't change
ARG OPENSIMHOME=/home/opensim
ARG OPENSIMDIR=/home/opensim/opensim
ARG OPENSIMCONFIG=/home/opensim/opensim/bin/config
ARG VERSIONDIR=/home/opensim/VERSION
ARG OS_ACCOUNT=opensim
# Arguments for fetching the proper version of OpenSimulator
ARG OS_GIT_REPO=git://opensimulator.org/git/opensim
ARG OS_GIT_BRANCH=master
ARG OS_BUILDTARGET=Release
ARG OS_SLN=OpenSim.sln
# Arguments about the build environment passed in so they can be embedded in the container
ARG BUILD_DATE=20240101.0000
ARG BUILD_DAY=20240101
ARG OS_DOCKER_VERSION=1.0.0
ARG OS_DOCKER_GIT_BRANCH=main
ARG OS_DOCKER_GIT_COMMIT=62fda19d0038a274bf3fd922b023b149b3a40a90
ARG OS_DOCKER_GIT_COMMIT_SHORT=62fda19d
# Include required packages ('coreutils git vim' included for debugging)
RUN apt-get update \
&& apt-get install -y \
coreutils procps git vim \
screen \
ccrypt \
libgdiplus \
libc6-dev \
mariadb-client
# The simulator is run under the user name 'opensim'
RUN adduser --disabled-password --gecos 'OpenSimulator user' $OS_ACCOUNT
USER $OS_ACCOUNT:$OS_ACCOUNT
# Version information that goes in the image
RUN mkdir -p $VERSIONDIR \
&& cd $VERSIONDIR \
&& echo $BUILD_DATE > "BUILD_DATE" \
&& echo $BUILD_DAY > "BUILD_DAY" \
&& echo $OS_DOCKER_VERSION > "OS_DOCKER_VERSION" \
&& echo $OS_DOCKER_GIT_BRANCH > "OS_DOCKER_GIT_BRANCH" \
&& echo $OS_DOCKER_GIT_COMMIT > "OS_DOCKER_GIT_COMMIT" \
&& echo $OS_DOCKER_GIT_COMMIT_SHORT > "OS_DOCKER_GIT_COMMIT_SHORT" \
&& echo ${OS_DOCKER_VERSION}-${BUILD_DAY}-${OS_DOCKER_GIT_COMMIT_SHORT} > "OS_DOCKER_IMAGE_VERSION"
# Fetch the latest version of the OpenSimulator sources.
RUN cd $OPENSIMHOME \
&& git clone --depth=1 -b $OS_GIT_BRANCH --single-branch $OS_GIT_REPO opensim
# Extract version information from the fetched sources
RUN cd $OPENSIMDIR \
&& echo $OS_GIT_REPO > "$VERSIONDIR/OS_GIT_REPO" \
&& echo $OS_GIT_BRANCH > "$VERSIONDIR/OS_GIT_BRANCH" \
&& echo $OS_BUILDTARGET > "$VERSIONDIR/OS_BUILD_TARGET" \
&& git describe --tags --long --always > "$VERSIONDIR/OS_GIT_DESCRIBE" \
&& git rev-parse HEAD > "$VERSIONDIR/OS_GIT_COMMIT" \
&& git rev-parse --short HEAD > "$VERSIONDIR/OS_GIT_COMMIT_SHORT" \
&& grep "const string VersionNumber" ./OpenSim/Framework/VersionInfo.cs | \
sed -e "s/^.*VersionNumber = \"\(.*\)\".*$/\1/" > "$VERSIONDIR/OS_VERSION"
# Build OpenSimulator
RUN cd $OPENSIMDIR \
&& chmod +x runprebuild.sh \
&& ./runprebuild.sh \
&& dotnet build --configuration $OS_BUILDTARGET $OS_SLN
# None of the configuration files in the built image are used
# Configuration files are all specified by invocation parameter.
# =======================================================================
# Create the binary only container with the dotnet8 runtime
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS release
# In the target image, these are directories built and used
ARG OPENSIMHOME=/home/opensim
ARG OPENSIMDIR=/home/opensim/opensim
ARG VERSIONDIR=/home/opensim/VERSION
ARG OS_BUILDTARGET=Release
ARG OS_ACCOUNT=opensim
# Include required packages ('coreutils,git,vim' included for debugging)
RUN apt-get update \
&& apt-get install -y \
coreutils procps git vim \
screen \
ccrypt \
cron \
libgdiplus \
libc6-dev \
mariadb-client \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
# The simulator is run under the user name 'opensim'
RUN adduser --disabled-password --gecos 'OpenSimulator user' $OS_ACCOUNT
USER $OS_ACCOUNT:$OS_ACCOUNT
# Scripts that keep OpenSimulator running, make crash reports, clean up log files, etc
COPY --chown=opensim:opensim temp-run-scripts/*.sh $OPENSIMHOME
COPY --chown=opensim:opensim temp-run-scripts/crontab $OPENSIMHOME
COPY --chown=opensim:opensim temp-run-scripts/vimrc $OPENSIMHOME/.vimrc
# Copy the binary files
COPY --from=build --chown=opensim:opensim $OPENSIMDIR/bin $OPENSIMDIR/bin
COPY --from=build --chown=opensim:opensim $VERSIONDIR $VERSIONDIR
# The .ini files in config-include in the image are not used and are emptied here to eliminate any confusion
RUN cd $OPENSIMDIR/bin/config-include \
&& $OPENSIMHOME/nullOutConfigInclude.sh
# Create the directory that is mounted that includes all the configuration
RUN mkdir -p $OPENSIMDIR/bin/config
WORKDIR $OPENSIMDIR/bin
ENTRYPOINT [ "/home/opensim/bootOpenSim.sh" ]
# No ports are exposed by default since the simulator and regions can be anywhere.
# The simulator defaults to port 9000.
# EXPOSE 9000/tcp
# EXPOSE 9000/udp
# Directories that can be overridden with a mounted volume for configuration.
# The default configuration is for a simple standalone region.
# All the normal configuration has been nulled out (OpenSim.ini is the default
# and all the included files in bin/config-include are empty).
# A non-standalone configuration replaces bin/config with files that do
# the configuration of the whole system (include 'architecture' ini file and
# the necessary other INI files).
VOLUME $OPENSIMDIR/bin/config
-115
View File
@@ -1,115 +0,0 @@
*NOTE* as of Feb 2022, this image isn't working. Updates coming.
This builds various configurations of [OpenSimulator] modified with the
[Herbal3d] region modules and running in [Docker] containers.
The `docker-compose` setup runs three containers:
- [OpenSimulator] image containing the [Herbal3d] modules,
- [MariaDB] image for the simulator database,
- [nginx] server serving the [BasilJS] web pages for viewing/testing [Herbal3d]
## OpenSimulator Image
This builds the latest 'master' version of [OpenSimulator] along with all the Herbal3D
addon-modules into a Docker container. The resulting Docker image has scripts
to run, log, and keep running the [OpenSimulator] instance. The image starts at
`/usr/opensim/bootOpenSim.sh` which checks for initial setup conditions and
then runs `/usr/opensim/run.opensim.sh` which starts [OpenSimulator] using `screen`.
## OpenSimulator Configuration
The [OpenSimulator] setup has a specialized configuration setup. This configuration
setup has:
- the default OpenSimDefault.ini and OpenSim.ini in place
- all of the usual config-include files nulled out (empty)
- a 'bin/config/os-config' file that defines the environment variable 'CONFIG_NAME'
- the default 'CONFIG_NAME' of 'standalone'
- a set of scripts in 'bin/config' that initialized and configure
`/usr/opensim/bootOpenSim.sh` calls `/usr/opensim/opensim/bin/config/setup.sh` to
configure this particular [OpenSimulator] instance. `setup.sh` is called everytime
the Docker image is started. `setup.sh` uses `os-config` to define the environment
variable `CONFIG_NAME` and then uses the information in the same named sub-directory
to setup the configuration files for [OpenSimulator].
`bin/config/$CONFIG_NAME/Includes.ini` is copied into `bin/config`. This will be read
by [OpenSimulator] on startup and replaces all of the usual configuration includes.
There will usually be a `bin/config/$CONFIG_NAME/config-includes` that models the
usual [OpenSimulator] configuration directory.
This configuration design means that the complete [OpenSimulator] setup and
runtime configuration can be replaced by replacing the directory
`/usr/opensim/opensim/bin/config`. This allows mounting a configuration directory
for the Docker container to completely replace the setup and configuration.
Note that there are secrets needed to configure and run [OpenSimulator].
These are stored in a 'ccrypt' encrypted file. Read the comments in
'/usr/opensim/opensim/bin/config/os-secrets' for how to encrypt secrets.
The container is initially run with the 'CONFIGKEY' environment variable
which is the key for decrypting the secrets file.
## Building and Running
This is organized so there can be several different configurations
of [OpenSimulator] and [Herbal3d] in this source tree.
The configuration to use is selected by setting the `CONFIG_NAME`
environment variable.
Initially, there are two configuratios:
- standalone: a simple run of OpenSimulator image in a single docker container
- three: this creates a three docker container set that includes:
* OpenSimulator simulator with the Herbal3d addon-modules;
* an nginx web server serving BasilJS; and
* a MariaDB server used by the OpenSimulator regions
These configurations include all the setup and configuration for the
OpenSimulator instance such as region names and locations.
To create a new configuration, copy the `three` file tree into
a new directory, edit that new set of configuration files, and
do the build and run with your new directory name as `CONFIG_NAME`.
The steps to build and run the containers:
```bash
# Get these configuration files
cd
git clone https://github.com/Herbal3d/opensim-docker.git
cd opensim-docker/opensim-herbal3d
export CONFIG_NAME=three
# Create secrets
cd config/$CONFIG_NAME
cp ../os-secrets tmpfile
# Edit 'tmpfile' with secrets (MYSQL root password, etc)
ccrypt -e -K secretPassword < tmpfile > os-secrets.crypt
rm tmpfile
# Do any additional OpenSimulator configuration
# Edit 'config/$CONFIG_NAME/Regions/Regions.ini for region location
# Edit 'config/$CONFIG_NAME/misc.ini for other settings
# Edit 'config'$CONFIG_NAME/config-include/*.ini for grid connections
# Build OpenSimulator/Herbal3d image
cd
cd opensim-docker/opensim-herbal3d
./build-herbal3d.sh
# Build BasilJS image
cd
cd opensim-docker/opensim-herbal3d
./build-basiljs.sh
# Run the composed container set
CONFIG_NAME=three CONFIGKEY=secretPassword EXTERNAL_HOSTNAME=whateverTheHostnameIs ./run-herbal3d.sh
```
[OpenSimulator]: https://opensimulator.org
[Docker]: https://www.docker.com
[Herbal3d]: https://www.herbal3d.org
[BasilJS]: https://github.com/Herbal3d/basil
[nginx]: https://www.nginx.com/
-8
View File
@@ -1,8 +0,0 @@
#! /bin/bash
# Build docker image for sourcing Basilts
docker build \
--pull \
-t basil-herbal3d \
-f Dockerfile-basil \
.
+19 -12
View File
@@ -1,30 +1,37 @@
#! /bin/bash
# Build docker images for running a Herbal3d version of OpenSimulator
# Build docker images for running a standalone version of OpenSimulator
BUILD_DATE=$(date "+%Y%m%d.%H%M")
BUILD_DAY=$(date "+%Y%m%d")
# version infomation about opensim-docker
OS_DOCKER_VERSION=$(cat ../VERSION.txt)
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
GIT_COMMIT=$(git rev-parse HEAD)
GIT_COMMIT_SHORT=$(git rev-parse --short HEAD)
OS_DOCKER_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
OS_DOCKER_GIT_COMMIT=$(git rev-parse HEAD)
OS_DOCKER_GIT_COMMIT_SHORT=$(git rev-parse --short HEAD)
# Set up the environment with all the environment build parameters
source ./env
# Copy the run-scripts into the local directory here since the Docker build
# only knowns the context of this directory
rm -rf temp-run-scripts
cp -r ../run-scripts temp-run-scripts
# Note that the '--no-cache' can be added force refetching of the OpenSimulator git sources
# --no-cache
# As of 20220320, the Prebuild needed for Herbal3d is in a branch (setting of OS_GIT_BRANCH)
# Build the image
docker build \
--pull \
--build-arg BUILD_DATE=$BUILD_DATE \
--build-arg BUILD_DAY=$BUILD_DAY \
--build-arg OS_DOCKER_VERSION=$OS_DOCKER_VERSION \
--build-arg OS_DOCKER_GIT_BRANCH=$GIT_BRANCH \
--build-arg OS_DOCKER_GIT_COMMIT=$GIT_COMMIT \
--build-arg OS_DOCKER_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT \
-t opensim-herbal3d \
-f Dockerfile-herbal3d \
--build-arg OS_DOCKER_GIT_BRANCH=$OS_DOCKER_GIT_BRANCH \
--build-arg OS_DOCKER_GIT_COMMIT=$OS_DOCKER_GIT_COMMIT \
--build-arg OS_DOCKER_GIT_COMMIT_SHORT=$OS_DOCKER_GIT_COMMIT_SHORT \
--build-arg OS_GIT_REPO=$OS_GIT_REPO \
--build-arg OS_GIT_BRANCH=$OS_GIT_BRANCH \
--build-arg OS_BUILDTARGET=$OS_BUILDTARGET \
--build-arg OS_SLN=$OS_SLN \
-t "$IMAGE_NAME" \
-f Dockerfile-opensim \
.
# Remove the temporarily copied run-scripts to reduce any confusion
+90
View File
@@ -0,0 +1,90 @@
; This file is the first configuration file read.
; A normal configuration reads OpenSimDefaults.ini and then
; OpenSim.ini but, in this configuration setup, OpenSimDefaults.ini
; is read from the image, OpenSim.ini does not exist, and then
; this Includes.ini is read to setup global variables and then
; include the files that are in the $OPENSIMCONFIGDIR/config-include
; directory.
; Most of the included files are stock from the sources. The final "misc.ini"
; overlays values and should include the per-simulator instance changes.
; The order of include files is important as new values overlay the previous values.
; Note that all the .ini files in the regular bin/config-include have
; been null'ed out (they exist but do nothing). This is because
; the OpenSim sources often presume the config directory is "./".
; Values from the environment. Environment set from "os-secrets" so
; values are not set here. These entries just bring in the environment values.
; The values specified here are not used.
; Reference with "${Environment|Name}"
[Environment]
MYSQL_DB_HOST=dbservice
MYSQL_DB_DB=opensim
MYSQL_DB_USER=opensim
MYSQL_DB_USER_PW=NoOneKnowsIt
DEFAULT_ESTATE_NAME=MyEstate
DEFAULT_ESTATE_OWNER=Fred Flintstone
DEFAULT_ESTATE_OWNER_UUID=ff5ec374-8028-43cb-ae58-8d38d70729e5
DEFAULT_ESTATE_OWNER_PW=SomeSecret
; Copy of the [Const] section in OpenSim.ini.example since it is used in
; some of the stock include files
[Const]
; this section defines constants for grid services
; to simplify other configuration files default settings
;# {BaseHostname} {} {BaseHostname} {"example.com" "127.0.0.1"} "127.0.0.1"
BaseHostname = "127.0.0.1"
;# {BaseURL} {} {BaseURL} {"http://${Const|BaseHostname}} "http://${Const|BaseHostname}"
BaseURL = http://${Const|BaseHostname}
; If you run a grid, several services should not be availble to world, access to them should be blocked on firewall
; PrivatePort should closed at the firewall.
;# {PublicPort} {} {PublicPort} {8002 9000} "9000"
; in case of a standalone this needs to match the parameter http_listener_port in section [Network] below
; in that case the default is 9000
PublicPort = "9000"
; for a region on a grid, the grid services public port should be used, normal default is 8002
;PublicPort = "8002"
; you can also have them on a diferent url / IP
;# {PrivURL} {} {PrivURL} {"http://${Const|BaseURL}} "${Const|BaseURL}"
PrivURL = ${Const|BaseURL}
;grid default private port 8003, not used in standalone
;# {PrivatePort} {} {PrivatePort} {8003} "8003"
; port to access private grid services.
; grids that run all their regions should deny access to this port
; from outside their networks, using firewalls
PrivatePort = "8003"
[Startup]
; Region definitions are in this directory (rather than 'bin/Regions')
; Reads all .ini files in this directory
region_info_source = "filesystem"
regionload_regionsdir = "/home/opensim/opensim/bin/config/Regions"
; Region specification from URL.
; Expects XML (see http://opensimulator.org/wiki/Configuring_Regions)
;region_info_source = "web"
;regionload_webserver_url = "http://myoracle.example.com/Region?name=thisRegion"
[Architecture]
Include-osslDefaultEnable = "/home/opensim/opensim/bin/config/config-include/osslDefaultEnable.ini"
; 'osslDefaultEnable.ini' includes the now empty 'bin/config-include/osslEnable.ini.ini'.
; The next line includes the 'osslEnable.ini' from this configuration.
Include-osslEnable = "/home/opensim/opensim/bin/config/config-include/osslEnable.ini"
Include-Architecture = "/home/opensim/opensim/bin/config/config-include/GridHypergrid.ini"
; 'Standalone.ini' is usually a copy of the default 'GridHypergrid.ini.example' which
; would include the now empty 'bin/config-include/StandaloneCommon.ini'.
; The next line includes the 'StandaloneCommon.ini' from this configuration.
Include-Common = "/home/opensim/opensim/bin/config/config-include/GridCommon.ini"
Include-Flotsam = "/home/opensim/opensim/bin/config/config-include/FlotsamCache.ini"
; Last include so it overlays anything before.
; Database is setup in this INI file as it has passwords, etc.
Include-MiscConfig = "/home/opensim/opensim/bin/config/config-include/Final.ini"
@@ -0,0 +1,105 @@
; * This is an example region config file.
; *
; * If OpenSimulator is started up without any regions, it will ask you configuration questions to generate a Regions.ini file for you.
; * So there is no need to change this file directly, it is only for reference.
; * However, if you prefer you can also copy this file to Regions.ini and appropriately change the parameters below.
; * Only files ending with .ini and .xml in this directly will be loaded by OpenSimulator.
; *
; * You can multiple regions into one file or make one file per region
; * The section name is the region name
; *
[Default Region]
; *
; * You MUST change this! It will NOT be done for you!
; *
RegionUUID = 2f75645d-acfd-4296-9cc5-8b1f0537fdaf
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = SYSTEMIP
;; Estate ID or Name to connect region to, leave blank for console prompt, remember estate id can not be less than 100
;; this value is only used when creating a region and after that will be ignored. 0 Will use the next auto id provided by the database
;TargetEstate = 0
; *
; * Variable-sized regions allows the creation of large, borderless spaces.
; * The default is 256 meters. For larger spaces, set these to multiples of 256.
; * For the time being, X and Y need to be the same.
; *
; SizeX = 512
; SizeY = 512
; * Default region landing point used when no teleport coords are specified
; DefaultLanding = <128,128,30>
; *
; * Prim data
; * This allows limiting the sizes of prims and the region prim count
; *
; NonPhysicalPrimMax = 256
; PhysicalPrimMax = 64
; ClampPrimSize = False
; MaxPrims = 15000
; MaxAgents = 100
; * Max prims per user (per parcel).
; * Negative values will disable the check.
; MaxPrimsPerUser = -1
; *
; * Multi-Tenancy. Only set if needed
; *
; ScopeID = "00000000-0000-0000-0000-000000000000"
; *
; * Product name (used in search from viewer 1.23
; *
; RegionType = "Mainland"
; * Region Specific Static Maptiles:
; * Important: To use any kind of texture *assets* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = false
; *
; * Now, there is a setting in [Map] in OpenSim.ini called
; *
; * MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; *
; * where, given the criteria above, lets you specify the UUID of a texture asset to use
; * as a maptile *Simulator Wide*. Here, you can override that on a per region basis for
; * Simulators that run multiple regions:
; MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; * Region Specific Static Maptiles from file:
; * It is also possible to create maptiles using external image files of the right size
; * and supported formats (bmp,png,jpg in RGB 24bpp format)
; *
; * Important: To use any kind of texture *files* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = true
; *
; * The image must be the same size in pixels as the region or varregion is in meters.
; * i.e. 256x256 pixels for single region of 256x256m, or 1280x1280 pixels for a varregion
; * of size 1280x1280m. The image can be loaded from anywhere by setting the path
; * ie: MaptileStaticFile = "maptiles/SomeFile.png"
; *
; * If this setting is used, then the base map is generated from this file instead of being
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
; * still drawn on top of the static map by the World Map module.
; MaptileStaticFile = "SomeFile.png"
@@ -0,0 +1,105 @@
; * This is an example region config file.
; *
; * If OpenSimulator is started up without any regions, it will ask you configuration questions to generate a Regions.ini file for you.
; * So there is no need to change this file directly, it is only for reference.
; * However, if you prefer you can also copy this file to Regions.ini and appropriately change the parameters below.
; * Only files ending with .ini and .xml in this directly will be loaded by OpenSimulator.
; *
; * You can multiple regions into one file or make one file per region
; * The section name is the region name
; *
[Default Region]
; *
; * You MUST change this! It will NOT be done for you!
; *
RegionUUID = 11111111-2222-3333-4444-555555555555
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = SYSTEMIP
;; Estate ID or Name to connect region to, leave blank for console prompt, remember estate id can not be less than 100
;; this value is only used when creating a region and after that will be ignored. 0 Will use the next auto id provided by the database
;TargetEstate = 0
; *
; * Variable-sized regions allows the creation of large, borderless spaces.
; * The default is 256 meters. For larger spaces, set these to multiples of 256.
; * For the time being, X and Y need to be the same.
; *
; SizeX = 512
; SizeY = 512
; * Default region landing point used when no teleport coords are specified
; DefaultLanding = <128,128,30>
; *
; * Prim data
; * This allows limiting the sizes of prims and the region prim count
; *
; NonPhysicalPrimMax = 256
; PhysicalPrimMax = 64
; ClampPrimSize = False
; MaxPrims = 15000
; MaxAgents = 100
; * Max prims per user (per parcel).
; * Negative values will disable the check.
; MaxPrimsPerUser = -1
; *
; * Multi-Tenancy. Only set if needed
; *
; ScopeID = "00000000-0000-0000-0000-000000000000"
; *
; * Product name (used in search from viewer 1.23
; *
; RegionType = "Mainland"
; * Region Specific Static Maptiles:
; * Important: To use any kind of texture *assets* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = false
; *
; * Now, there is a setting in [Map] in OpenSim.ini called
; *
; * MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; *
; * where, given the criteria above, lets you specify the UUID of a texture asset to use
; * as a maptile *Simulator Wide*. Here, you can override that on a per region basis for
; * Simulators that run multiple regions:
; MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; * Region Specific Static Maptiles from file:
; * It is also possible to create maptiles using external image files of the right size
; * and supported formats (bmp,png,jpg in RGB 24bpp format)
; *
; * Important: To use any kind of texture *files* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = true
; *
; * The image must be the same size in pixels as the region or varregion is in meters.
; * i.e. 256x256 pixels for single region of 256x256m, or 1280x1280 pixels for a varregion
; * of size 1280x1280m. The image can be loaded from anywhere by setting the path
; * ie: MaptileStaticFile = "maptiles/SomeFile.png"
; *
; * If this setting is used, then the base map is generated from this file instead of being
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
; * still drawn on top of the static map by the World Map module.
; MaptileStaticFile = "SomeFile.png"
@@ -1,6 +1,5 @@
; Misc over-rides and settings
; ===== OpenSim.ini =================================================
[Startup]
MaxPoolThreads = 300
MinPoolThreads = 32
@@ -19,6 +18,20 @@
; Turn off periodic statistics output to console
LogShowStatsSeconds = 0
[DatabaseService]
; SQLite
; Include-Storage = "/home/opensim/opensim/bin/config/config-include/storage/SQLiteStandalone.ini"
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=${Environment|MYSQL_DB_HOST};Database=${Environment|MYSQL_DB_DB};User ID=${Environment|MYSQL_DB_USER};Password=${Environment|MYSQL_DB_USER_PW};SslMode=None;"
[BulletSim]
UseSeparatePhysicsThread = true
TerrainImplementation = 0
[Network]
MapTileURL = "http://maptiles.osgrid.org:80"
@@ -61,18 +74,25 @@
[Estates]
; NOTE That names and passwords come from environment variables set from os-secrets
DefaultEstateName = Basil Estate
DefaultEstateOwnerName = MisterBlue Waves
DefaultEstateName = ${Environment|DEFAULT_ESTATE_NAME}
DefaultEstateOwnerName = ${Environment|DEFAULT_ESTATE_OWNER}
; ** Standalone Estate Settings **
; The following parameters will only be used on a standalone system to
; create an estate owner that does not already exist
DefaultEstateOwnerUUID = 00000000-0000-0000-0000-000000000000
DefaultEstateOwnerUUID = ${Environment|DEFAULT_ESTATE_OWNER_UUID}
DefaultEstateOwnerEMail = owner@example.com
DefaultEstateOwnerPassword = OnlyOwnerKnows
DefaultEstateOwnerPassword = ${Environment|DEFAULT_ESTATE_OWNER_PW}
[Terrain]
SendTerrainUpdatesByViewDistance = true
[ExtendedPhysics]
Enabled = true
[XEngine]
; If one uses XEngine, use a larger thread stack
ThreadStackSize = 500000
[YEngine]
Enabled = true
ScriptStackSize = 256
@@ -81,16 +101,7 @@
MinTimerInterval = 0.1
ScriptEnginesPath = "ScriptEngines"
[XEngine]
Enabled = false
; If one uses XEngine, use a larger thread stack
ThreadStackSize = 500000
[BulletSim]
UseSeparatePhysicsThread = true
TerrainImplementation = 0
; ===== GridCommon.ini ==============================================
; ===== GridCommon.ini Override======================================
[Hypergrid]
HomeURI = "http://hg.osgrid.org:80"
GatekeeperURI = "http://hg.osgrid.org:80"
@@ -141,17 +152,3 @@
MapImageServerURI = "http://maptiles.osgrid.org:80"
[MuteListService]
MuteListServiceURI = http://im.osgrid.org/mute/index.php
; ===== OpenSim.ini =================================================
[DatabaseService]
; SQLite
; Include-Storage = "config/standalone/config-include/storage/SQLiteStandalone.ini"
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
; NOTE That password comes from environment variables set from os-secrets
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=MYSQL_DB_SOURCE;Database=MYSQL_DB_DB;User ID=MYSQL_DB_USER;Password=MYSQL_DB_USER_PASSWORD;Old Guids=true;"
@@ -110,7 +110,6 @@
Allow_osSetPrimFloatOnWater = true
Allow_osSetWindParam = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osTerrainFlush = ESTATE_MANAGER,ESTATE_OWNER
Allow_osUnixTimeToTimestamp = true
; ThreatLevel Low
Allow_osAvatarName2Key = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
@@ -4,29 +4,36 @@
# The configuration files look for the file 'os-secrets.crypt' and, when
# found, runs 'ccrypt' using the password from the environment variable
# "CONFIGKEY". So, edit this file and do:
# "OPENSIM_CONFIGKEY". So, edit this file and do:
# cp os-secrets tempFile
# <edit 'tempFile' adding real passwords>
# ccrypt -e -E "CONFIGKEY" < tempFile > os-secrets.crypt
# ccrypt -e -E "OPENSIM_CONFIGKEY" < tempFile > os-secrets.crypt
# rm tempFile
# or (exposing the key in the bash history):
# ccrypt -e -K thekey < os-secrets > os-secrets.crypt
#
# Later, if you need to review the passwords, decrypt the file with:
# ccrypt -d -E "CONFIGKEY" < os-secrets.crypt
# ccrypt -d -E "OPENSIM_CONFIGKEY" < os-secrets.crypt
# If this next variable is defined, MYSQL is configured
#export MYSQL_ROOT_PASSWORD=unknownStuff
#export MARIADB_ROOT_PASSWORD=unknownStuff
export MYSQL_DB_SOURCE=localhost
export MYSQL_ROOT_PASSWORD=unknownStuff
export MARIADB_ROOT_PASSWORD=unknownStuff
export MYSQL_DB_HOST=dbservice
export MYSQL_DB_DB=opensim
export MYSQL_DB_USER=opensim
export MYSQL_DB_USER_PASSWORD=dbpassword
export MYSQL_DB_USER_PW=moreUnknownStuff
# The following are used to initialize estate if running standalone
export DEFAULT_ESTATE_NAME="Donalds Estate"
export DEFAULT_ESTATE_NAME="MyEstate"
export DEFAULT_ESTATE_OWNER="Donald Duck"
export PW_FOR_DEFAULT_ESTATE_OWNER=anotherUnknownPassword
export DEFAULT_ESTATE_OWNER_UUID=ff5ec374-8028-43cb-ae58-8d38d70729e5
export DEFAULT_ESTATE_OWNER_PW=SomeSecret
# These are values that should be in other configurtion files.
# Someday, there might be a system that inserts these parameters into files.
# For the moment, the per-installation parameters must be editted by hand.
# Host name that is advertized to a client. Set in Includes.ini and Region.ini
export EXTERNAL_HOSTNAME=127.0.0.1
# Did I mention that one should NEVER, NEVER, EVER check-in a version
# with the real passwords in it?
@@ -1,10 +1,16 @@
#! /bin/bash
# Script to create database 'opensim' in mysql if it does not exist.
# This is usually run in the container on the first time it is invoked.
# This creates the database for this simulator (MYSQL_DB_HOST) if it
# doesn't exist.
#
# Someone has set the environment variables before running this.
# Needs:
# MYSQL_DB_SOURCE
# MYSQL_ROOT_PASSWORD
# OPENSIM_DB_PASSWORD
# MYSQL_DB_HOST
# MYSQL_DB_DB
# MYSQL_DB_USER
# MYSQL_DB_USER_PW
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
@@ -14,45 +20,43 @@ echo "opensim-docker: initializeDb.sh: "
cd "$OPENSIMCONFIG"
if [[ ! -z "$MYSQL_ROOT_PASSWORD" ]] ; then
for needed in "MYSQL_DB_DB" "MYSQL_DB_SOURCE" "MYSQL_DB_USER" "MYSQL_DB_USER_PASSWORD" ; do
for needed in "MYSQL_DB_DB" "MYSQL_DB_HOST" "MYSQL_DB_USER" "MYSQL_DB_USER_PW" ; do
if [[ -z "$!needed" ]] ; then
echo "opensim-docker: initializeDb.sh: missing required env parameter $needed"
echo "opensim-docker: initializeDb.sh: DATABASE NOT INITIALIZE"
echo "opensim-docker: initializeDb.sh: DATABASE NOT INITIALIZED"
exit 5
fi
done
# set a default for the account (downward compatibility)
export MYSQL_ROOT_ACCOUNT=${MYSQL_ROOT_ACCOUNT:-root}
SQLCMDS=/tmp/mymy$$
SQLOPTIONS=/tmp/mymyoptions$$
rm -f "$SQLCMDS"
rm -f "$SQLOPTIONS"
# Create command file that creates the SQL database and SQL user for this simulator.
cat > "$SQLCMDS" <<EOFFFF
CREATE DATABASE $MYSQL_DB_DB;
USE $MYSQL_DB_DB;
CREATE USER '$MYSQL_DB_USER'@'%' IDENTIFIED BY '$MYSQL_DB_USER_PASSWORD';
CREATE USER '$MYSQL_DB_USER'@'%' IDENTIFIED BY '$MYSQL_DB_USER_PW';
GRANT ALL ON $MYSQL_DB_DB.* to '$MYSQL_DB_USER'@'%';
quit
EOFFFF
cat > "$SQLOPTIONS" <<EOFFFF
[client]
user=$MYSQL_ROOT_ACCOUNT
user=root
password=$MYSQL_ROOT_PASSWORD
host=$MYSQL_DB_SOURCE
host=$MYSQL_DB_HOST
EOFFFF
# If the database is started at the same time, what for it to initialize
until mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" ; do
until mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" > /dev/null ; do
echo "opensim-docker: initializeDb.sh: Waiting on database to be ready"
sleep 2
done
echo "opensim-docker: initializeDb.sh: Database is ready"
HASDB=$(mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" | grep "^opensim$")
HASDB=$(mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" | grep "^${MYSQL_DB_DB}$")
if [[ -z "$HASDB" ]] ; then
echo "opensim-docker: initialzeDb.sh: creating opensim database"
@@ -5,29 +5,21 @@
# to get all the values for the configuration files.
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
OPENSIMCONFIG="$OPENSIMBIN/config"
cd "$OPENSIMCONFIG"
if [[ -e "./os-config" ]] ; then
source ./os-config
echo "opensim-docker: setEnvironment.sh: CONFIG_NAME=${CONFIG_NAME} from ./os-config"
else
export CONFIG_NAME=${CONFIG_NAME:-standalone}
echo "opensim-docker: setEnvironment.sh: CONFIG_NAME=${CONFIG_NAME} as default"
fi
# See if we have encrypted secrets
unset HAVE_SECRETS
if [[ ! -z "$CONFIGKEY" ]] ; then
for secretsFile in $OPENSIMCONFIG/config-${CONFIG_NAME}/os-secrets.crypt $OPENSIMCONFIG/os-secrets.crypt ; do
if [[ ! -z "$OPENSIM_CONFIGKEY" ]] ; then
for secretsFile in $OPENSIMCONFIG/os-secrets.crypt ; do
if [[ -e "$secretsFile" ]] ; then
echo "opensim-docker: setEnvironment.sh: have secrets file \"{$secretsFile}\""
source <(ccrypt -c -E CONFIGKEY "$secretsFile")
source <(ccrypt -c -E OPENSIM_CONFIGKEY "$secretsFile")
HAVE_SECRETS=yes
break;
else
echo "opensim-docker: setEnvironment.sh: no secrets file"
echo "opensim-docker: setEnvironment.sh: no encrypted secrets file"
fi
done
fi
@@ -35,7 +27,7 @@ fi
# If no encrypted secrets, maybe unsecure plain-text secrets are available
if [[ -z "$HAVE_SECRETS" ]] ; then
echo "opensim-docker: setEnvironment.sh: trying plain text secrets"
for secretsFile in $OPENSIMCONFIG/config-${CONFIG_NAME}/os-secrets $OPENSIMCONFIG/os-secrets ; do
for secretsFile in $OPENSIMCONFIG/os-secrets ; do
if [[ -e "$secretsFile" ]] ; then
echo "opensim-docker: setEnvironment.sh: plain text secrets from \"${secretsFile}\""
source "$secretsFile"
+28
View File
@@ -0,0 +1,28 @@
#! /bin/bash
# Script run when the container starts and before OpenSimulator is started
#
# The operations done here are:
# -- if first time called, setup DB and initialize variables in configuration files
# -- move sub-config specific Includes.ini into the config directory
# -- update all the configuration files with environment variables
export OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
export OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
echo "opensim-docker: setup.sh: OPENSIMCONFIG=\"${OPENSIMCONFIG}\""
FIRSTTIMEFLAG=${HOME}/.configFirstTime
cd "$OPENSIMCONFIG"
# This sets CONFIG_NAME which is the configuration subdirectory
source ./scripts/setEnvironment.sh
# If this is the first time run, do database setup and some one-time configuration updates
if [[ ! -e "$FIRSTTIMEFLAG" ]] ; then
echo "opensim-docker: setup.sh: first time"
cd "$OPENSIMCONFIG"
# Do any database account and db creation
./scripts/initializeDb.sh
touch "$FIRSTTIMEFLAG"
fi
+89
View File
@@ -0,0 +1,89 @@
; This file is the first configuration file read.
; A normal configuration reads OpenSimDefaults.ini and then
; OpenSim.ini but, in this configuration setup, OpenSimDefaults.ini
; is read from the image, OpenSim.ini does not exist, and then
; this Includes.ini is read to setup global variables and then
; include the files that are in the $OPENSIMCONFIGDIR/config-include
; directory.
; Most of the included files are stock from the sources. The final "misc.ini"
; overlays values and should include the per-simulator instance changes.
; The order of include files is important as new values overlay the previous values.
; Note that all the .ini files in the regular bin/config-include have
; been null'ed out (they exist but do nothing). This is because
; the OpenSim sources often presume the config directory is "./".
; Values from the environment. Environment set from "os-secrets" so
; values are not set here. These entries just bring in the environment values.
; The values specified here are not used.
; Reference with "${Environment|Name}"
[Environment]
MYSQL_DB_HOST=dbservice
MYSQL_DB_DB=opensim
MYSQL_DB_USER=opensim
MYSQL_DB_USER_PW=NoOneKnowsIt
DEFAULT_ESTATE_NAME=MyEstate
DEFAULT_ESTATE_OWNER=Fred Flintstone
DEFAULT_ESTATE_OWNER_UUID=ff5ec374-8028-43cb-ae58-8d38d70729e5
DEFAULT_ESTATE_OWNER_PW=SomeSecret
; Copy of the [Const] section in OpenSim.ini.example since it is used in
; some of the stock include files
[Const]
; this section defines constants for grid services
; to simplify other configuration files default settings
;# {BaseHostname} {} {BaseHostname} {"example.com" "127.0.0.1"} "127.0.0.1"
BaseHostname = "127.0.0.1"
;# {BaseURL} {} {BaseURL} {"http://${Const|BaseHostname}} "http://${Const|BaseHostname}"
BaseURL = http://${Const|BaseHostname}
; If you run a grid, several services should not be availble to world, access to them should be blocked on firewall
; PrivatePort should closed at the firewall.
;# {PublicPort} {} {PublicPort} {8002 9000} "9000"
; in case of a standalone this needs to match the parameter http_listener_port in section [Network] below
; in that case the default is 9000
PublicPort = "9000"
; for a region on a grid, the grid services public port should be used, normal default is 8002
;PublicPort = "8002"
; you can also have them on a diferent url / IP
;# {PrivURL} {} {PrivURL} {"http://${Const|BaseURL}} "${Const|BaseURL}"
PrivURL = ${Const|BaseURL}
;grid default private port 8003, not used in standalone
;# {PrivatePort} {} {PrivatePort} {8003} "8003"
; port to access private grid services.
; grids that run all their regions should deny access to this port
; from outside their networks, using firewalls
PrivatePort = "8003"
[Startup]
; Region definitions are in this directory (rather than 'bin/Regions')
; Reads all .ini files in this directory
region_info_source = "filesystem"
regionload_regionsdir = "/home/opensim/opensim/bin/config/Regions"
; Region specification from URL.
; Expects XML (see http://opensimulator.org/wiki/Configuring_Regions)
;region_info_source = "web"
;regionload_webserver_url = "http://myoracle.example.com/Region?name=thisRegion"
[Architecture]
Include-osslDefaultEnable = "/home/opensim/opensim/bin/config/config-include/osslDefaultEnable.ini"
; 'osslDefaultEnable.ini' includes the now empty 'bin/config-include/osslEnable.ini.ini'.
; The next line includes the 'osslEnable.ini' from this configuration.
Include-osslEnable = "/home/opensim/opensim/bin/config/config-include/osslEnable.ini"
Include-Architecture = "/home/opensim/opensim/bin/config/config-include/Standalone.ini"
; 'Standalone.ini' is usually a copy of the default 'Standalone.ini.example' which
; would include the now empty 'bin/config-include/StandaloneCommon.ini'.
; The next line includes the 'StandaloneCommon.ini' from this configuration.
Include-Common = "/home/opensim/opensim/bin/config/config-include/StandaloneCommon.ini"
Include-Flotsam = "/home/opensim/opensim/bin/config/config-include/FlotsamCache.ini"
; Last include so it overlays anything before.
; Database is setup in this INI file as it has passwords, etc.
Include-MiscConfig = "/home/opensim/opensim/bin/config/config-include/Final.ini"
@@ -0,0 +1,28 @@
CONFIGURATION ON DOCKER IMAGE
The OpenSim docker image is setup with most of the normal configuration nulled out.
The file 'bin/OpenSim.ini.example' has been copied to 'bin/OpenSim.ini' but all
the files that are normally included (from 'bin/config-include') have been emptied so none
of the normal network, grid, database, or cache setup is present.
The configuration relies on the feature that OpenSimulator reads all INI files
in the 'bin/config' directory.
The default installation is for a single region, standalone, sqlite based version
of OpenSimulator. 'bin/config/setup.sh' copies 'bin/config/standalone/Includes.ini'
into 'bin/config'. This file includes all the INI files
needed to configure same. 'Includes.ini' includes files from the 'standalone'
directory. This includes 'Standalone.ini' and 'StandaloneCommon.ini' to do their
normal configuration. It finally includes 'Misc.ini' which specifies parameters
that overlay everything previous for final setting and over-riding.
Edit 'Misc.ini' for specific simulator settings.
When the docker image is run, the startup script also checks for 'bin/config/setup.sh'
and, if it exists, it is executed. This allows initializing databases and any
passwords that need to be set in the configuration files.
One can completely override the configuration included in this Docker image build
by mounting a bind volume over '/home/opensim/opensim/bin/config'. For this case,
all normal OpenSimulator configuration is replaced by whatever one puts in
that 'config' directory.
@@ -0,0 +1,105 @@
; * This is an example region config file.
; *
; * If OpenSimulator is started up without any regions, it will ask you configuration questions to generate a Regions.ini file for you.
; * So there is no need to change this file directly, it is only for reference.
; * However, if you prefer you can also copy this file to Regions.ini and appropriately change the parameters below.
; * Only files ending with .ini and .xml in this directly will be loaded by OpenSimulator.
; *
; * You can multiple regions into one file or make one file per region
; * The section name is the region name
; *
[Default Region]
; *
; * You MUST change this! It will NOT be done for you!
; *
RegionUUID = 2f75645d-acfd-4296-9cc5-8b1f0537fdaf
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = SYSTEMIP
;; Estate ID or Name to connect region to, leave blank for console prompt, remember estate id can not be less than 100
;; this value is only used when creating a region and after that will be ignored. 0 Will use the next auto id provided by the database
;TargetEstate = 0
; *
; * Variable-sized regions allows the creation of large, borderless spaces.
; * The default is 256 meters. For larger spaces, set these to multiples of 256.
; * For the time being, X and Y need to be the same.
; *
; SizeX = 512
; SizeY = 512
; * Default region landing point used when no teleport coords are specified
; DefaultLanding = <128,128,30>
; *
; * Prim data
; * This allows limiting the sizes of prims and the region prim count
; *
; NonPhysicalPrimMax = 256
; PhysicalPrimMax = 64
; ClampPrimSize = False
; MaxPrims = 15000
; MaxAgents = 100
; * Max prims per user (per parcel).
; * Negative values will disable the check.
; MaxPrimsPerUser = -1
; *
; * Multi-Tenancy. Only set if needed
; *
; ScopeID = "00000000-0000-0000-0000-000000000000"
; *
; * Product name (used in search from viewer 1.23
; *
; RegionType = "Mainland"
; * Region Specific Static Maptiles:
; * Important: To use any kind of texture *assets* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = false
; *
; * Now, there is a setting in [Map] in OpenSim.ini called
; *
; * MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; *
; * where, given the criteria above, lets you specify the UUID of a texture asset to use
; * as a maptile *Simulator Wide*. Here, you can override that on a per region basis for
; * Simulators that run multiple regions:
; MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; * Region Specific Static Maptiles from file:
; * It is also possible to create maptiles using external image files of the right size
; * and supported formats (bmp,png,jpg in RGB 24bpp format)
; *
; * Important: To use any kind of texture *files* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = true
; *
; * The image must be the same size in pixels as the region or varregion is in meters.
; * i.e. 256x256 pixels for single region of 256x256m, or 1280x1280 pixels for a varregion
; * of size 1280x1280m. The image can be loaded from anywhere by setting the path
; * ie: MaptileStaticFile = "maptiles/SomeFile.png"
; *
; * If this setting is used, then the base map is generated from this file instead of being
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
; * still drawn on top of the static map by the World Map module.
; MaptileStaticFile = "SomeFile.png"
@@ -0,0 +1,105 @@
; * This is an example region config file.
; *
; * If OpenSimulator is started up without any regions, it will ask you configuration questions to generate a Regions.ini file for you.
; * So there is no need to change this file directly, it is only for reference.
; * However, if you prefer you can also copy this file to Regions.ini and appropriately change the parameters below.
; * Only files ending with .ini and .xml in this directly will be loaded by OpenSimulator.
; *
; * You can multiple regions into one file or make one file per region
; * The section name is the region name
; *
[Default Region]
; *
; * You MUST change this! It will NOT be done for you!
; *
RegionUUID = 11111111-2222-3333-4444-555555555555
Location = 1000,1000
InternalAddress = 0.0.0.0
InternalPort = 9000
AllowAlternatePorts = False
ExternalHostName = SYSTEMIP
;; Estate ID or Name to connect region to, leave blank for console prompt, remember estate id can not be less than 100
;; this value is only used when creating a region and after that will be ignored. 0 Will use the next auto id provided by the database
;TargetEstate = 0
; *
; * Variable-sized regions allows the creation of large, borderless spaces.
; * The default is 256 meters. For larger spaces, set these to multiples of 256.
; * For the time being, X and Y need to be the same.
; *
; SizeX = 512
; SizeY = 512
; * Default region landing point used when no teleport coords are specified
; DefaultLanding = <128,128,30>
; *
; * Prim data
; * This allows limiting the sizes of prims and the region prim count
; *
; NonPhysicalPrimMax = 256
; PhysicalPrimMax = 64
; ClampPrimSize = False
; MaxPrims = 15000
; MaxAgents = 100
; * Max prims per user (per parcel).
; * Negative values will disable the check.
; MaxPrimsPerUser = -1
; *
; * Multi-Tenancy. Only set if needed
; *
; ScopeID = "00000000-0000-0000-0000-000000000000"
; *
; * Product name (used in search from viewer 1.23
; *
; RegionType = "Mainland"
; * Region Specific Static Maptiles:
; * Important: To use any kind of texture *assets* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = false
; *
; * Now, there is a setting in [Map] in OpenSim.ini called
; *
; * MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; *
; * where, given the criteria above, lets you specify the UUID of a texture asset to use
; * as a maptile *Simulator Wide*. Here, you can override that on a per region basis for
; * Simulators that run multiple regions:
; MaptileStaticUUID = 00000000-0000-0000-0000-000000000000
; * Region Specific Static Maptiles from file:
; * It is also possible to create maptiles using external image files of the right size
; * and supported formats (bmp,png,jpg in RGB 24bpp format)
; *
; * Important: To use any kind of texture *files* as a static maptile, the following
; * things must be set in the [Map] section of OpenSim.ini :
; *
; * MapImageModule = "MapImageModule"
; * GenerateMaptiles = true
; *
; * The image must be the same size in pixels as the region or varregion is in meters.
; * i.e. 256x256 pixels for single region of 256x256m, or 1280x1280 pixels for a varregion
; * of size 1280x1280m. The image can be loaded from anywhere by setting the path
; * ie: MaptileStaticFile = "maptiles/SomeFile.png"
; *
; * If this setting is used, then the base map is generated from this file instead of being
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
; * still drawn on top of the static map by the World Map module.
; MaptileStaticFile = "SomeFile.png"
@@ -14,25 +14,24 @@
[DatabaseService]
; SQLite
Include-Storage = "config/standalone/config-include/storage/SQLiteStandalone.ini"
; Include-Storage = "/home/opensim/opensim/bin/config/config-include/storage/SQLiteStandalone.ini"
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
; NOTE That password comes from environment variables set from os-secrets
; StorageProvider = "OpenSim.Data.MySQL.dll"
; ConnectionString = "Data Source=dbservice;Database=MYSQL_DB_DB;User ID=MYSQL_DB_USER;Password=MSQL_DB_USER_PASSWORD;Old Guids=true;"
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=${Environment|MYSQL_DB_HOST};Database=${Environment|MYSQL_DB_DB};User ID=${Environment|MYSQL_DB_USER};Password=${Environment|MYSQL_DB_USER_PW};SslMode=None;"
[Estates]
; NOTE That names and passwords come from environment variables set from os-secrets
DefaultEstateName = DEFAULT_ESTATE_NAME
DefaultEstateOwnerName = DEFAULT_ESTATE_OWNER
DefaultEstateName = ${Environment|DEFAULT_ESTATE_NAME}
DefaultEstateOwnerName = ${Environment|DEFAULT_ESTATE_OWNER}
; ** Standalone Estate Settings **
; The following parameters will only be used on a standalone system to
; create an estate owner that does not already exist
DefaultEstateOwnerUUID = 00000000-0000-0000-0000-000000000000
DefaultEstateOwnerUUID = ${Environment|DEFAULT_ESTATE_OWNER_UUID}
DefaultEstateOwnerEMail = owner@example.com
DefaultEstateOwnerPassword = PW_FOR_DEFAULT_ESTATE_OWNER
DefaultEstateOwnerPassword = ${Environment|DEFAULT_ESTATE_OWNER_PW}
[Terrain]
SendTerrainUpdatesByViewDistance = true
@@ -8,11 +8,13 @@
; SQLite
Include-Storage = "config-include/storage/SQLiteStandalone.ini";
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db detail
; Remove SslMode=None if you need secure connection to the local mysql
; In most cases ssl is just a pure waste of resources, specially when mySql is on same machine, and closed to outside
; MySQL
; Uncomment these lines if you want to use MySQL storage
; Change the connection string to your db details
; Remove SslMode=None if you need secure connection to the local MySQL
; In most cases ssl is just a pure waste of resources, specially when MySQL is on same machine, and closed to outside
; If using MySQL 8.0.4 or later, check that default-authentication-plugin=mysql_native_password
; rather than caching_sha2_password is set in /etc/mysql/mysql.conf.d/mysqld.cnf (not applicable to MariaDB).
;StorageProvider = "OpenSim.Data.MySQL.dll"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
@@ -33,7 +35,7 @@
; Uncomment these lines if you want to use PGSQL storage
; Change the connection string to your db details
;StorageProvider = "OpenSim.Data.PGSQL.dll"
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;SSL Mode = Disable"
[Hypergrid]
; Uncomment the variable GatekeeperURI to enable
@@ -110,7 +110,6 @@
Allow_osSetPrimFloatOnWater = true
Allow_osSetWindParam = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osTerrainFlush = ESTATE_MANAGER,ESTATE_OWNER
Allow_osUnixTimeToTimestamp = true
; ThreatLevel Low
Allow_osAvatarName2Key = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
@@ -4,29 +4,36 @@
# The configuration files look for the file 'os-secrets.crypt' and, when
# found, runs 'ccrypt' using the password from the environment variable
# "CONFIGKEY". So, edit this file and do:
# "OPENSIM_CONFIGKEY". So, edit this file and do:
# cp os-secrets tempFile
# <edit 'tempFile' adding real passwords>
# ccrypt -e -E "CONFIGKEY" < tempFile > os-secrets.crypt
# ccrypt -e -E "OPENSIM_CONFIGKEY" < tempFile > os-secrets.crypt
# rm tempFile
# or (exposing the key in the bash history):
# ccrypt -e -K thekey < os-secrets > os-secrets.crypt
#
# Later, if you need to review the passwords, decrypt the file with:
# ccrypt -d -E "CONFIGKEY" < os-secrets.crypt
# ccrypt -d -E "OPENSIM_CONFIGKEY" < os-secrets.crypt
# If this next variable is defined, MYSQL is configured
export MYSQL_ROOT_PASSWORD=NotFoundAnywhere
export MARIADB_ROOT_PASSWORD=NotFoundAnywhere
export MYSQL_DB_SOURCE=dbservice
export MYSQL_ROOT_PASSWORD=unknownStuff
export MARIADB_ROOT_PASSWORD=unknownStuff
export MYSQL_DB_HOST=dbservice
export MYSQL_DB_DB=opensim
export MYSQL_DB_USER=opensim
export MYSQL_DB_USER_PASSWORD=StuffAndNonsense
export MYSQL_DB_USER_PW=moreUnknownStuff
# The following are used to initialize estate if running standalone
export DEFAULT_ESTATE_NAME="Basil Estate"
export DEFAULT_ESTATE_NAME="MyEstate"
export DEFAULT_ESTATE_OWNER="Donald Duck"
export PW_FOR_DEFAULT_ESTATE_OWNER=OnlyOwnerKnows
export DEFAULT_ESTATE_OWNER_UUID=ff5ec374-8028-43cb-ae58-8d38d70729e5
export DEFAULT_ESTATE_OWNER_PW=SomeSecret
# These are values that should be in other configurtion files.
# Someday, there might be a system that inserts these parameters into files.
# For the moment, the per-installation parameters must be editted by hand.
# Host name that is advertized to a client. Set in Includes.ini and Region.ini
export EXTERNAL_HOSTNAME=127.0.0.1
# Did I mention that one should NEVER, NEVER, EVER check-in a version
# with the real passwords in it?
@@ -0,0 +1,73 @@
#! /bin/bash
# Script to create database 'opensim' in mysql if it does not exist.
# This is usually run in the container on the first time it is invoked.
# This creates the database for this simulator (MYSQL_DB_HOST) if it
# doesn't exist.
#
# Someone has set the environment variables before running this.
# Needs:
# MYSQL_ROOT_PASSWORD
# MYSQL_DB_HOST
# MYSQL_DB_DB
# MYSQL_DB_USER
# MYSQL_DB_USER_PW
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
echo "opensim-docker: initializeDb.sh: "
cd "$OPENSIMCONFIG"
if [[ ! -z "$MYSQL_ROOT_PASSWORD" ]] ; then
for needed in "MYSQL_DB_DB" "MYSQL_DB_HOST" "MYSQL_DB_USER" "MYSQL_DB_USER_PW" ; do
if [[ -z "$!needed" ]] ; then
echo "opensim-docker: initializeDb.sh: missing required env parameter $needed"
echo "opensim-docker: initializeDb.sh: DATABASE NOT INITIALIZED"
exit 5
fi
done
SQLCMDS=/tmp/mymy$$
SQLOPTIONS=/tmp/mymyoptions$$
rm -f "$SQLCMDS"
rm -f "$SQLOPTIONS"
# Create command file that creates the SQL database and SQL user for this simulator.
cat > "$SQLCMDS" <<EOFFFF
CREATE DATABASE $MYSQL_DB_DB;
USE $MYSQL_DB_DB;
CREATE USER '$MYSQL_DB_USER'@'%' IDENTIFIED BY '$MYSQL_DB_USER_PW';
GRANT ALL ON $MYSQL_DB_DB.* to '$MYSQL_DB_USER'@'%';
quit
EOFFFF
cat > "$SQLOPTIONS" <<EOFFFF
[client]
user=root
password=$MYSQL_ROOT_PASSWORD
host=$MYSQL_DB_HOST
EOFFFF
# If the database is started at the same time, what for it to initialize
until mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" > /dev/null ; do
echo "opensim-docker: initializeDb.sh: Waiting on database to be ready"
sleep 2
done
echo "opensim-docker: initializeDb.sh: Database is ready"
HASDB=$(mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" | grep "^${MYSQL_DB_DB}$")
if [[ -z "$HASDB" ]] ; then
echo "opensim-docker: initialzeDb.sh: creating opensim database"
mysql --defaults-extra-file=$SQLOPTIONS < "$SQLCMDS"
else
echo "opensim-docker: initialzeDb.sh: opensim database has already been created"
fi
rm -f "$SQLCMDS"
rm -f "$SQLOPTIONS"
else
echo "opensim-docker: initializeDb.sh: Not configuring SQL database"
fi
@@ -0,0 +1,39 @@
#! /bin/bash
# Script that sets up the environment variables
# This script is run before the docker-compose file is run to get the
# database password and it is run when the opensim Docker container starts
# to get all the values for the configuration files.
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
cd "$OPENSIMCONFIG"
# See if we have encrypted secrets
unset HAVE_SECRETS
if [[ ! -z "$OPENSIM_CONFIGKEY" ]] ; then
for secretsFile in $OPENSIMCONFIG/os-secrets.crypt ; do
if [[ -e "$secretsFile" ]] ; then
echo "opensim-docker: setEnvironment.sh: have secrets file \"{$secretsFile}\""
source <(ccrypt -c -E OPENSIM_CONFIGKEY "$secretsFile")
HAVE_SECRETS=yes
break;
else
echo "opensim-docker: setEnvironment.sh: no encrypted secrets file"
fi
done
fi
# If no encrypted secrets, maybe unsecure plain-text secrets are available
if [[ -z "$HAVE_SECRETS" ]] ; then
echo "opensim-docker: setEnvironment.sh: trying plain text secrets"
for secretsFile in $OPENSIMCONFIG/os-secrets ; do
if [[ -e "$secretsFile" ]] ; then
echo "opensim-docker: setEnvironment.sh: plain text secrets from \"${secretsFile}\""
source "$secretsFile"
break;
else
echo "opensim-docker: setEnvironment.sh: no plain text secrets file"
fi
done
fi
+28
View File
@@ -0,0 +1,28 @@
#! /bin/bash
# Script run when the container starts and before OpenSimulator is started
#
# The operations done here are:
# -- if first time called, setup DB and initialize variables in configuration files
# -- move sub-config specific Includes.ini into the config directory
# -- update all the configuration files with environment variables
export OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
export OPENSIMCONFIG=${OPENSIMCONFIG:-$OPENSIMBIN/config}
echo "opensim-docker: setup.sh: OPENSIMCONFIG=\"${OPENSIMCONFIG}\""
FIRSTTIMEFLAG=${HOME}/.configFirstTime
cd "$OPENSIMCONFIG"
# This sets CONFIG_NAME which is the configuration subdirectory
source ./scripts/setEnvironment.sh
# If this is the first time run, do database setup and some one-time configuration updates
if [[ ! -e "$FIRSTTIMEFLAG" ]] ; then
echo "opensim-docker: setup.sh: first time"
cd "$OPENSIMCONFIG"
# Do any database account and db creation
./scripts/initializeDb.sh
touch "$FIRSTTIMEFLAG"
fi
-34
View File
@@ -1,34 +0,0 @@
; Example ini file. Put in the directory bin/config
[Loden]
Enabled=true
; Base directory for Loden asset storage,
OutputDir = "./LodenAssets"
; the string added to be beginning of asset name to create URI,
URIBase = "./"
; Whether to write .gltf or .glb file,
WriteBinaryGltf = false
; Number of vertices to cause splitting of buffer files,
VerticesMaxForBuffer = 50000
; whether double sided mesh rendering specified in GLTF,
DoubleSided = false
; Whether to reduce the terrain resolution by 2,
HalfRezTerrain = true
; The maximum pixel dimension for images if exporting,
;TextureMaxSize = 1024
TextureMaxSize = 256
; One of: PNG, JPG, GIF, BMP, PNG
PreferredTextureFormat = "PNG"
; One of: PNG, JPG, GIF, BMP,
PreferredTextureFormatIfNoTransparency = "JPG"
; If to delay mesh scaling to display/GPU time,
DisplayTimeScaling = false
; log detail BScene/BInstance object building,
LogBuilding = false
; output detailed gltf construction details,
LogGltfBuilding = false
-2
View File
@@ -1,2 +0,0 @@
[OSAuth]
Enabled=true;
-56
View File
@@ -1,56 +0,0 @@
[Ragu]
Enabled=true
; Hostname for external clients it access. Computed if zero length
ExternalAccessHostname = "basil.bluestuff.org"
; For debugging, you can turn off auth checks for fetching assets
ShouldEnforceAccessAuthorization=true
AssetUrlTemplate = "https://{0}/Assets{2}"
; Each transport for each layer takes parameters. The current ones
; defined are:
; WSConnectionHost (default "0.0.0.0" if not specified
; WSIsSecure (default false)
; WSPort (at least base must be specified to compute port or specific port)
; WSCertificate (must be specified for secure connections)
; DisableNaglesAlgorithm (default true if not specified).
;
; The parameters are computed based on values that can be in RegionInfo or in
; the RaguOS.ini file. If specific port numbers are not specified, they are
; computed based on a base port number given in one if the INI files.
; To find a value, this looks for value in order:
; "SpaceServer.LAYER.PARAM" in RegionInfo
; "SpaceServer.LAYER.PARAM" in RaguOS.ini
; "SpaceServer.PARAM" in RegionInfo (if found, builds value based on LAYER)
; "SpaceServer.PARAM" in RaguOS.ini (if found, builds value based on LAYER)
; For ports, if the above tests don't find anything, it looks for:
; "SpaceServer.LAYER.BasePort" in RegionInfo
; "SpaceServer.LAYER.BasePort" in RaguOS.ini
; "SpaceServer.BasePort" in RegionInfo
; "SpaceServer.BasePort" in RaguOS.ini
; If any of these base ports are found, the port number is computed using
; that number and the value in LayerPortOffset. (see RaguParams.cs)
; NOTE: The following parameters are per-simulator and per transport
; is in either bin/config or included into OpenSim.ini.
; If there are multiple regions per simulator, these parameters
; can also be included in the "Regions.ini" file.
; For simple, insecure Basil Viewer connections, "Regions.ini" could look like:
;
; [RegionOne]
; RegionUUID = 88247529-5f81-400d-abf9-888327c5fd91
; Location = "1000,1000"
; InternalAddress = "0.0.0.0"
; InternalPort = 14500
; SpaceServer_BasePort = 14510
; [RegionTwo]
; RegionUUID = d3159861-8361-480b-947f-15a37b59f4a7
; Location = "1000,1001"
; InternalAddress = "0.0.0.0"
; InternalPort = 14520
; SpaceServer_BasePort = 14530
;
; Whether to accect secure or unsecure WebSocket connections
SpaceServer_WSIsSecure = false
@@ -1,24 +0,0 @@
; This file is moved into the bin/config directory where it includes
; all the configuration from these directories.
; This file is read after OpenSimDefault.ini and OpenSim.ini
; Note that config-include/Standalone.ini and the other configuration
; files are nulled out so this becomes the only inclusion of
; configuration files after OpenSim.ini.
[Startup]
; Region definitions are in this directory (rather than 'bin/Regions')
regionload_regionsdir = "config/config-basilalpha/Regions"
[Architecture]
Include-osslDefaultEnable = "config/config-basilalpha/config-include/osslDefaultEnable.ini"
; 'osslDefaultEnable.ini' includes the now empty 'bin/config-include/osslEnable.ini.ini'.
; The next line includes the 'osslEnable.ini' from this configuration.
Include-osslEnable = "config/config-basilalpha/config-include/osslEnable.ini"
Include-Architecture = "config/config-basilalpha/config-include/GridHypergrid.ini"
; 'GridHypergrid.ini' is usually a copy of the default 'GridHypergrid.ini.example' which
; would include the now empty 'bin/config-include/StandaloneCommon.ini'.
; The next line includes the 'GridCommon.ini' from this configuration.
Include-Common = "config/config-basilalpha/config-include/GridCommon.ini"
Include-Flotsam = "config/config-basilalpha/config-include/FlotsamCache.ini"
; Last include so it overlays anything before.
; Database is setup in this INI file as it has passwords, etc.
Include-MiscConfig = "config/config-basilalpha/misc.ini"
@@ -1,27 +0,0 @@
[BasilAlpha]
RegionUUID = 8a4ac952-5439-46a8-a394-92285f03b024
Location = 7400,7200
InternalAddress = 0.0.0.0
InternalPort = 9050
AllowAlternatePorts = False
ExternalHostName = "basil.bluestuff.org"
DefaultLanding = <128,128,40>
NonPhysicalPrimMax = 256
PhysicalPrimMax = 64
ClampPrimSize = False
MaxPrims = 20000
MaxAgents = 20
MaxPrimsPerUser = 1000
MasterAvatarFirstName = Misterblue
MasterAvatarLastName = Waves
SpaceServer_WSExternalUrlTemplate = "wss://{0}/wss/"
SpaceServer_WSDisableNaglesAlgorithm = true
@@ -1,63 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in GridCommon.ini.example,
;; which you can copy and change.
;;
[Includes]
Include-Common = "config-include/GridCommon.ini"
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "RemoteXInventoryServicesConnector"
GridServices = "RegionGridServicesConnector"
AvatarServices = "RemoteAvatarServicesConnector"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "RemoteAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
PresenceServices = "RemotePresenceServicesConnector"
UserAccountServices = "RemoteUserAccountServicesConnector"
AgentPreferencesServices= "RemoteAgentPreferencesServicesConnector"
GridUserServices = "RemoteGridUserServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
EntityTransferModule = "BasicEntityTransferModule"
InventoryAccessModule = "BasicInventoryAccessModule"
LandServices = "RemoteLandServicesConnector"
MapImageService = "MapImageServiceModule"
SearchModule = "BasicSearchModule"
MuteListService = "RemoteMuteListServicesConnector"
LandServiceInConnector = true
NeighbourServiceInConnector = true
SimulationServiceInConnector = true
LibraryModule = true
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
; for the LocalGridServicesConnector which is used by the Remote one
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
NetworkConnector = "OpenSim.Services.Connectors.dll:GridServicesConnector"
; Because LocalGridServicesConnector starts this service, in grid mode we need to suppress
; the inappropriate console commands that it registers.
SuppressConsoleCommands = true
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[Friends]
Connector = "OpenSim.Services.Connectors.dll:FriendsServicesConnector"
[MapImageService]
LocalServiceModule = "OpenSim.Services.Connectors.dll:MapImageServicesConnector"
@@ -1,198 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in StandaloneCommon.ini.example,
;; which you can copy and change.
;;
[Startup]
WorldMapModule = "HGWorldMap"
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "HGInventoryBroker"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "RegionGridServicesConnector"
PresenceServices = "LocalPresenceServicesConnector"
UserAccountServices = "LocalUserAccountServicesConnector"
AgentPreferencesServices= "LocalAgentPreferencesServicesConnector"
GridUserServices = "LocalGridUserServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
AvatarServices = "LocalAvatarServicesConnector"
UserProfilesServices = "LocalUserProfilesServicesConnector"
MapImageService = "MapImageServiceModule"
EntityTransferModule = "HGEntityTransferModule"
InventoryAccessModule = "HGInventoryAccessModule"
FriendsModule = "HGFriendsModule"
UserManagementModule = "HGUserManagementModule"
SearchModule = "BasicSearchModule"
MuteListService = "LocalMuteListServicesConnector"
InventoryServiceInConnector = true
AssetServiceInConnector = true
HypergridServiceInConnector = true
NeighbourServiceInConnector = true
LibraryModule = true
LLLoginServiceInConnector = true
GridInfoServiceInConnector = true
AuthenticationServiceInConnector = true
SimulationServiceInConnector = true
MapImageServiceInConnector = true
[Messaging]
MessageTransferModule = HGMessageTransferModule
LureModule = HGLureModule
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
; For RegionAssetConnector
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
HypergridAssetService = "OpenSim.Services.Connectors.dll:HGAssetServiceConnector"
[InventoryService]
; For HGInventoryBroker
LocalGridInventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
[AvatarService]
LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[AuthenticationService]
LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
Realm = "regions"
StorageProvider = "OpenSim.Data.Null.dll"
; Needed to display non-default map tile images for remote regions
AssetService = "OpenSim.Services.AssetService.dll:AssetService"
HypergridLinker = true
AllowHypergridMapSearch = true
[PresenceService]
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
StorageProvider = "OpenSim.Data.Null.dll"
[UserAccountService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
;; These are for creating new accounts by the service
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
GridService = "OpenSim.Services.GridService.dll:GridService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true
[GridUserService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"
[FriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll"
[Friends]
Connector = "OpenSim.Services.FriendsService.dll"
[AgentPreferencesService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:AgentPreferencesService"
[LoginService]
LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
; This inventory service will be used to initialize the user's inventory
HGInventoryServicePlugin = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
HGInventoryServiceConstructorArg = "HGInventoryService"
[MapImageService]
LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
[GatekeeperService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
;; for the service
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
[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"
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true
;; The interface that local users get when they are in other grids
;; This greatly restricts the inventory operations while in other grids
[HGInventoryService]
; For the InventoryServiceInConnector
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
;; alternatives:
;; HG1.5, more permissive, not recommended, but still supported
;LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGInventoryService"
;; HG1.0, totally permissive, not recommended, but OK for grids with 100% trust
;LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
;; The interface that local users get when they are in other grids
;; This restricts/filters the asset operations from the outside
[HGAssetService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
[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
[MuteListService]
LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService"
;; This should always be the very last thing on this file
[Includes]
Include-Common = "config-include/StandaloneCommon.ini"
@@ -1,30 +0,0 @@
version: '3'
services:
opensim:
image: opensim-herbal3d
environment:
CONFIG_NAME:
CONFIGKEY:
EXTERNAL_HOSTNAME:
network_mode: "host"
volumes:
# overlay the OpenSimulator bin/config/ with external config/
- ./config:/home/opensim/opensim/bin/config
# Loden generated asset directory tree is stored externally
- /home/basil/LodenAssets:/home/opensim/opensim/bin/LodenAssets
# Linkage for local mysqld
- /var/run/mysqld:/var/run/mysqld
ports:
- 8002:8002/tcp
- 9000:9000/tcp
- 9050:9050/udp
- 9051:9051/tcp
restart: unless-stopped
@@ -1,97 +0,0 @@
[AssetCache]
;;
;; Options for FlotsamAssetCache
;;
; cache directory can be shared by multiple instances
CacheDirectory = ./assetcache
; 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 no memory cache
; assets can be requested several times in short periods
; so even a small memory cache is useful
MemoryCacheEnabled = false
; If a memory cache hit happens, or the asset is still in memory
; due to other causes, update the timestamp on the disk file anyway.
; Don't turn this on unless you share your asset cache between simulators
; AND use an external process, e.g. cron job, to clean it up.
UpdateFileTimeOnCacheHit = false
; Enabling this will cache negative fetches. If an asset is negative-cached
; it will not be re-requested from the asset server again for a while.
; Generally, this is a good thing.
;
; Regular expiration settings (non-sliding) mean that the asset will be
; retried after the time has expired. Sliding expiration means that
; the time the negative cache will keep the asset is refreshed each
; time a fetch is attempted. Use sliding expiration if you have rogue
; scripts hammering the asset server with requests for nonexistent
; assets.
;
; There are two cases where negative caching may cause issues:
;
; 1 - If an invalid asset is repeatedly requested by a script and that asset is
; subsequently created, it will not be seen until fcache clear
; is used. This is a very theoretical scenario since UUID collisions
; are deemed to be not occuring in practice.
; This can only become an issue with sliding expiration time.
;
; 2 - If the asset service is clustered, an asset may not have propagated
; to all cluster members when it is first attempted to fetch it.
; This may theoretically occur with networked vendor systems and
; would lead to an asset not found message. However, after the
; expiration time has elapsed, the asset will then be fetchable.
;
; The defaults below are suitable for all small to medium installations
; including grids.
NegativeCacheEnabled = true
NegativeCacheTimeout = 120
NegativeCacheSliding = false
; Set to false for no file cache
FileCacheEnabled = true
; How long {in hours} to keep assets cached in memory, .5 == 30 minutes
; even a few minutes may mean many assets loaded to memory, if not all.
; this is good if memory is not a problem.
; if memory is a problem then a few seconds may actually save same.
; see hit rates with console comand: fcache status
MemoryCacheTimeout = .016 ; one minute
; 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 = 48
; How often {in hours} should the disk be checked for expired files
; Specify 0 to disable expiration checking
FileCleanupTimer = 1.0 ; disabled
; 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.
; NOTE: THIS PARAMETER IS NOT CURRENTLY USED BY THE CACHE
; WaitOnInprogressTimeout = 3000
; Number of tiers to use for cache directories (current valid
; range 1 to 3)
;CacheDirectoryTiers = 1
; Number of letters per path tier, 1 will create 16 directories
; per tier, 2 - 256, 3 - 4096 and 4 - 65K
;CacheDirectoryTierLength = 3
; Warning level for cache directory size
;CacheWarnAt = 30000
@@ -1,226 +0,0 @@
; This is the main configuration file for an instance of OpenSim running in grid mode
[DatabaseService]
;
; ### Choose the DB
;
; SQLite
Include-Storage = "config-include/storage/SQLiteStandalone.ini";
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
;StorageProvider = "OpenSim.Data.MySQL.dll"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; Uncomment this line if you are using MySQL and want to use a different database for estates
; The usual application for this is to allow estates to be spread out across multiple simulators by share the same database.
; Most people won't need to do this so only uncomment if you know what you're doing.
;EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; MSSQL
; Uncomment these lines if you want to use MSSQL storage
; Change the connection string to your db details
; The value for server property is shown in your SQL Server Management Studio login dialog.
; (This sample is the default of express edition)
;StorageProvider = "OpenSim.Data.MSSQL.dll"
;ConnectionString = "Server=localhost\SQLEXPRESS;Database=opensim;User Id=opensim; password=***;"
; PGSQL
; Uncomment these lines if you want to use PGSQL storage
; Change the connection string to your db details
;StorageProvider = "OpenSim.Data.PGSQL.dll"
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"
[Hypergrid]
; Uncomment the variables in this section only if you are in
; Hypergrid configuration. Otherwise, ignore.
;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server that
;; runs the UserAgentsService.
;; For example http://myworld.com:9000 or http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
HomeURI = "http://hg.osgrid.org:80"
;# {GatekeeperURI} {Hypergrid} {The URL of the gatekeeper of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server
;; that runs the Gatekeeper service.
;; For example http://myworld.com:9000 or http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
GatekeeperURI = "http://hg.osgrid.org:80"
GatekeeperURIAlias = "login.osgrid.org , users.osgrid.org"
[Modules]
;; Choose one cache module and the corresponding config file, if it exists.
;; Copy the config .example file into your own .ini file and adapt that.
;; We recommend the use of the FlotsamAssetCache since this is most actively maintained.
AssetCaching = "FlotsamAssetCache"
Include-FlotsamCache = "config-include/FlotsamCache.ini"
;AssetCaching = "CenomeMemoryAssetCache"
;Include-CenomeCache = "config-include/CenomeCache.ini"
;AssetCaching = "GlynnTuckerAssetCache"
;; Optionally, the port for the LLProxyLoginModule module can be changed
;Setup_LLProxyLoginModule = "9090/"
;; Authorization is not on by default, as it depends on external php
;AuthorizationServices = "RemoteAuthorizationServicesConnector"
;;OpenSimSearch module
SearchModule = "BasicSearchModule"
[AssetService]
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
AssetLoaderArgs = "assets/AssetSets.xml"
;
; Change this to your grid-wide asset server. Do not add a slash to the end of any of these addresses.
;
AssetServerURI = "http://assets.osgrid.org"
[InventoryService]
;
; Change this to your grid-wide inventory server
;
InventoryServerURI = "http://inventory.osgrid.org"
;MaxRetries = 0
[GridInfo]
;
; Change this to your grid info service
;
GridInfoURI = "http://hg.osgrid.org:80"
[GridService]
;
; Change this to your grid-wide grid server
;
GridServerURI = "http://grid.osgrid.org"
AllowHypergridMapSearch = true
;; Directory for map tile images of linked regions
MapTileDirectory = "./maptiles"
; === HG ONLY ===
;; Change this to the address of your Gatekeeper service
;; (usually bundled with the rest of the services in one
;; Robust server in port ${Const|PublicPort}, but not always)
Gatekeeper="http://hg.osgrid.org:80"
[Messaging]
; === HG ONLY ===
;; Change this to the address of your Gatekeeper service
;; (usually bundled with the rest of the services in one
;; Robust server in port ${Const|PublicPort}, but not always)
Gatekeeper = "http://hg.osgrid.org:80"
[AvatarService]
;
; Change this to your grid-wide grid server
;
AvatarServerURI = "http://avatar.osgrid.org"
[AgentPreferencesService]
;
; Change this to your grid-wide avatar prefs server
;
AgentPreferencesServerURI = "http://presence.osgrid.org"
[PresenceService]
;
; Change this to your grid-wide presence server
;
PresenceServerURI = "http://presence.osgrid.org"
[UserAccountService]
;
; Change this to your grid-wide user accounts server
;
UserAccountServerURI = "http://users.osgrid.org"
[GridUserService]
;
; Change this to your grid-wide user accounts server
;
GridUserServerURI = "http://users.osgrid.org"
[AuthenticationService]
;
; Change this to your grid-wide authentication server
;
AuthenticationServerURI = "http://login.osgrid.org"
[FriendsService]
;
; Change this to your grid-wide friends server
;
FriendsServerURI = "http://friends.osgrid.org"
[HGInventoryAccessModule]
;
; === HG ONLY ===
; Change this to your server
; accessible from other grids
;
HomeURI = "http://hg.osgrid.org:80"
Gatekeeper = "http://hg.osgrid.org:80"
;; If you want to protect your assets from being copied by foreign visitors
;; set this to false. You may want to do this on sims that have licensed content.
;; Default is true.
; OutboundPermission = True
;; Send visual reminder to local users that their inventories are unavailable while they are traveling
;; and available when they return. True by default.
RestrictInventoryAccessAbroad = false
[HGAssetService]
;
; === HG ONLY ===
; Change this to your server
; accessible from other grids
;
HomeURI = "http://hg.osgrid.org:80"
;; The asset types that this grid can export to / import from other grids.
;; Comma separated.
;; Valid values are all the asset types in OpenMetaverse.AssetType, namely:
;; Unknown, Texture, Sound, CallingCard, Landmark, Clothing, Object, Notecard, LSLText,
;; LSLBytecode, TextureTGA, Bodypart, SoundWAV, ImageTGA, ImageJPEG, Animation, Gesture, Mesh
;;
;; Leave blank or commented if you don't want to apply any restrictions.
;; A more strict, but still reasonable, policy may be to disallow the exchange
;; of scripts, like so:
; DisallowExport ="LSLText"
; DisallowImport ="LSLBytecode"
[HGFriendsModule]
; User level required to be able to send friendship invitations to foreign users
;LevelHGFriends = 0;
[UserAgentService]
;
; === HG ONLY ===
; Change this to your user agent server (HG robust)
;
UserAgentServerURI = "http://hg.osgrid.org:80"
[MapImageService]
MapImageServerURI = "http://maptiles.osgrid.org:80"
[AuthorizationService]
; If you have regions with access restrictions
; specify them here using the convention
; Region_<Region_Name> = <flags>
; Valid flags are:
; DisallowForeigners -- HG visitors not allowed
; DisallowResidents -- only Admins and Managers allowed
; Example:
; Region_Test_1 = "DisallowForeigners"
@@ -1,24 +0,0 @@
; This file is moved into the bin/config directory where it includes
; all the configuration from these directories.
; This file is read after OpenSimDefault.ini and OpenSim.ini
; Note that config-include/Standalone.ini and the other configuration
; files are nulled out so this becomes the only inclusion of
; configuration files after OpenSim.ini.
[Startup]
; Region definitions are in this directory (rather than 'bin/Regions')
regionload_regionsdir = "config/config-standalone/Regions"
[Architecture]
Include-osslDefaultEnable = "config/config-standalone/config-include/osslDefaultEnable.ini"
; 'osslDefaultEnable.ini' includes the now empty 'bin/config-include/osslEnable.ini.ini'.
; The next line includes the 'osslEnable.ini' from this configuration.
Include-osslEnable = "config/config-standalone/config-include/osslEnable.ini"
Include-Architecture = "config/config-standalone/config-include/Standalone.ini"
; 'Standalone.ini' is usually a copy of the default 'Standalone.ini.example' which
; would include the now empty 'bin/config-include/StandaloneCommon.ini'.
; The next line includes the 'StandaloneCommon.ini' from this configuration.
Include-Common = "config/config-standalone/config-include/StandaloneCommon.ini"
Include-Flotsam = "config/config-standalone/config-include/FlotsamCache.ini"
; Last include so it overlays anything before.
; Database is setup in this INI file as it has passwords, etc.
Include-MiscConfig = "config/config-standalone/misc.ini"
@@ -1,12 +0,0 @@
[Standalone]
RegionUUID = 6c428e83-1a1d-4927-b4a4-2cd13a55720e
Location = "1000,1000"
InternalAddress = "0.0.0.0"
InternalPort = 9050
AllowAlternatePorts = False
ExternalHostName = "EXTERNAL_HOST_NAME"
NonphysicalPrimMax = 256
PhysicalPrimMax = 200
ClampPrimSize = False
MaxPrims = 60000
MaxAgents = 100
@@ -1,63 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in GridCommon.ini.example,
;; which you can copy and change.
;;
[Includes]
Include-Common = "config-include/GridCommon.ini"
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "RemoteXInventoryServicesConnector"
GridServices = "RegionGridServicesConnector"
AvatarServices = "RemoteAvatarServicesConnector"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "RemoteAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
PresenceServices = "RemotePresenceServicesConnector"
UserAccountServices = "RemoteUserAccountServicesConnector"
AgentPreferencesServices= "RemoteAgentPreferencesServicesConnector"
GridUserServices = "RemoteGridUserServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
EntityTransferModule = "BasicEntityTransferModule"
InventoryAccessModule = "BasicInventoryAccessModule"
LandServices = "RemoteLandServicesConnector"
MapImageService = "MapImageServiceModule"
SearchModule = "BasicSearchModule"
MuteListService = "RemoteMuteListServicesConnector"
LandServiceInConnector = true
NeighbourServiceInConnector = true
SimulationServiceInConnector = true
LibraryModule = true
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
; for the LocalGridServicesConnector which is used by the Remote one
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
NetworkConnector = "OpenSim.Services.Connectors.dll:GridServicesConnector"
; Because LocalGridServicesConnector starts this service, in grid mode we need to suppress
; the inappropriate console commands that it registers.
SuppressConsoleCommands = true
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[Friends]
Connector = "OpenSim.Services.Connectors.dll:FriendsServicesConnector"
[MapImageService]
LocalServiceModule = "OpenSim.Services.Connectors.dll:MapImageServicesConnector"
@@ -1,233 +0,0 @@
; This is the main configuration file for an instance of OpenSim running in grid mode
[DatabaseService]
;
; ### Choose the DB
;
; SQLite
Include-Storage = "config-include/storage/SQLiteStandalone.ini";
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
; Remove SslMode=None if you need secure connection to the local mysql
; In most cases ssl is just a pure waste of resources, specially when mySql is on same machine, and closed to outside
;StorageProvider = "OpenSim.Data.MySQL.dll"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; Uncomment this line if you are using MySQL and want to use a different database for estates
; The usual application for this is to allow estates to be spread out across multiple simulators by share the same database.
; Most people won't need to do this so only uncomment if you know what you're doing.
;EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; MSSQL
; Uncomment these lines if you want to use MSSQL storage
; Change the connection string to your db details
; The value for server property is shown in your SQL Server Management Studio login dialog.
; (This sample is the default of express edition)
;StorageProvider = "OpenSim.Data.MSSQL.dll"
;ConnectionString = "Server=localhost\SQLEXPRESS;Database=opensim;User Id=opensim; password=***;"
; PGSQL
; Uncomment these lines if you want to use PGSQL storage
; Change the connection string to your db details
;StorageProvider = "OpenSim.Data.PGSQL.dll"
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"
[Hypergrid]
; Uncomment the variable GatekeeperURI in this section to enable
; Hypergrid configuration. Otherwise, ignore.
;# {GatekeeperURI} {Hypergrid} {The URL of the gatekeeper of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server
;; that runs the Gatekeeper service.
;; For example http://myworld.com:9000 or http://myworld.com:8002
; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"
;# {GatekeeperURIAlias} {Hypergrid} {alternative hostnames (FQDN), or IPs of the gatekeeper of this world and port} {}
;; comma separated list,
;; in case there was for example a dns change, etc
; GatekeeperURIAlias = myoldname.something.org
;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server that
;; runs the UserAgentsService.
;; For example http://myworld.com:9000 or http://myworld.com:8002
HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
;# {HomeURIAlias} {Hypergrid} {Old http schema (default http://), hostnames (FQDN), or IPs of the gatekeeper of this world and port (default 80 or 443)} {}
;; comma separated list,
;; in case there was for example a dns change, etc but it is still same grid
; HomeURIAlias = myoldname.something.org, 127.0.0.1,127.0.0.1:8043
[Modules]
;; Asset cache module.
;; Warning this is required for several region features
AssetCaching = "FlotsamAssetCache"
Include-FlotsamCache = "config-include/FlotsamCache.ini"
;; Optionally, the port for the LLProxyLoginModule module can be changed
;Setup_LLProxyLoginModule = "9090/"
;; Authorization is not on by default, as it depends on external php
;AuthorizationServices = "RemoteAuthorizationServicesConnector"
[AssetService]
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
AssetLoaderArgs = "assets/AssetSets.xml"
;
; Change this to your grid-wide asset server. Do not add a slash to the end of any of these addresses.
;
AssetServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[InventoryService]
;
; Change this to your grid-wide inventory server
;
InventoryServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
;MaxRetries = 0
[GridInfo]
;
; Change this to your grid info service
;
GridInfoURI = "${Const|BaseURL}:${Const|PublicPort}"
[GridService]
;
; Change this to your grid-wide grid server
;
GridServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
;AllowHypergridMapSearch = true
;; Directory for map tile images of linked regions
; MapTileDirectory = "./maptiles"
; === HG ONLY ===
;; Change this to the address of your Gatekeeper service
;; (usually bundled with the rest of the services in one
;; Robust server in port ${Const|PublicPort}, but not always)
Gatekeeper="${Const|BaseURL}:${Const|PublicPort}"
[EstateDataStore]
;
; Uncomment if you want centralized estate data at robust server,
; in which case the URL in [EstateService] will be used
;
;LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataRemoteConnector"
[EstateService]
EstateServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[Messaging]
; === HG ONLY ===
;; Change this to the address of your Gatekeeper service
;; (usually bundled with the rest of the services in one
;; Robust server in port ${Const|PublicPort}, but not always)
Gatekeeper = "${Const|BaseURL}:${Const|PublicPort}"
[AvatarService]
;
; Change this to your grid-wide grid server
;
AvatarServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[AgentPreferencesService]
;
; Change this to your grid-wide avatar prefs server
;
AgentPreferencesServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[PresenceService]
;
; Change this to your grid-wide presence server
;
PresenceServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[UserAccountService]
;
; Change this to your grid-wide user accounts server
;
UserAccountServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[GridUserService]
;
; Change this to your grid-wide user server
;
GridUserServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[AuthenticationService]
;
; Change this to your grid-wide authentication server
;
AuthenticationServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[FriendsService]
;
; Change this to your grid-wide friends server
;
FriendsServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[HGInventoryAccessModule]
;
; === HG ONLY ===
; Change this to your server
; accessible from other grids
;
;; If you want to protect your assets from being copied by foreign visitors
;; set this to false. You may want to do this on sims that have licensed content.
;; Default is true.
; OutboundPermission = True
;; Send visual reminder to local users that their inventories are unavailable while they are traveling
;; and available when they return. True by default.
;RestrictInventoryAccessAbroad = True
;; Warning: advanced and unusual. Default is false.
;; Enables configurations where grids share user services, including inventory,
;; while separating regions' assets from users' assets. Asset transfer between
;; the users' asset server and the regions' asset server is done in HG-like manner.
; CheckSeparateAssets = false
; RegionHGAssetServerURI = ${Const|BaseURL}:${Const|PublicPort}
[HGAssetService]
;
; === HG ONLY ===
;; The asset types that this grid can export to / import from other grids.
;; Comma separated.
;; Valid values are all the asset types in OpenMetaverse.AssetType, namely:
;; Unknown, Texture, Sound, CallingCard, Landmark, Clothing, Object, Notecard, LSLText,
;; LSLBytecode, TextureTGA, Bodypart, SoundWAV, ImageTGA, ImageJPEG, Animation, Gesture, Mesh
;;
;; Leave blank or commented if you don't want to apply any restrictions.
;; A more strict, but still reasonable, policy may be to disallow the exchange
;; of scripts, like so:
; DisallowExport ="LSLText"
; DisallowImport ="LSLBytecode"
[HGFriendsModule]
; User level required to be able to send friendship invitations to foreign users
;LevelHGFriends = 0;
[MapImageService]
MapImageServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
[AuthorizationService]
; If you have regions with access restrictions
; specify them here using the convention
; Region_<Region_Name> = <flags>
; Valid flags are:
; DisallowForeigners -- HG visitors not allowed
; DisallowResidents -- only Admins and Managers allowed
; Example:
; Region_Test_1 = "DisallowForeigners"
[MuteListService]
MuteListServerURI = "${Const|PrivURL}:${Const|PrivatePort}"
@@ -1,88 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in GridCommon.ini.example,
;; which you can copy and change.
;;
[Includes]
Include-Common = "config-include/GridCommon.ini"
[Startup]
WorldMapModule = "HGWorldMap"
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "HGInventoryBroker"
GridServices = "RegionGridServicesConnector"
AvatarServices = "RemoteAvatarServicesConnector"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "RemoteAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
PresenceServices = "RemotePresenceServicesConnector"
UserAccountServices = "RemoteUserAccountServicesConnector"
AgentPreferencesServices= "RemoteAgentPreferencesServicesConnector"
GridUserServices = "RemoteGridUserServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
EntityTransferModule = "HGEntityTransferModule"
InventoryAccessModule = "HGInventoryAccessModule"
LandServices = "RemoteLandServicesConnector"
FriendsModule = "HGFriendsModule"
MapImageService = "MapImageServiceModule"
UserManagementModule = "HGUserManagementModule"
SearchModule = "BasicSearchModule"
MuteListService = "RemoteMuteListServicesConnector"
LandServiceInConnector = true
NeighbourServiceInConnector = true
SimulationServiceInConnector = true
LibraryModule = true
Setup_EntityTransferModule = disabled
Setup_WorldMapModule = disabled
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
HypergridAssetService = "OpenSim.Services.Connectors.dll:HGAssetServiceConnector"
[InventoryService]
LocalGridInventoryService = "OpenSim.Region.CoreModules.dll:RemoteXInventoryServicesConnector"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
NetworkConnector = "OpenSim.Services.Connectors.dll:GridServicesConnector"
; Needed to display non-default map tile images for linked regions
AssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
HypergridLinker = true
AllowHypergridMapSearch = true
SuppressConsoleCommands = true
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[Friends]
Connector = "OpenSim.Services.Connectors.dll:FriendsServicesConnector"
[Messaging]
MessageTransferModule = HGMessageTransferModule
LureModule = HGLureModule
[HGInstantMessageService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGInstantMessageService"
GridService = "OpenSim.Services.Connectors.dll:GridServicesConnector"
PresenceService = "OpenSim.Services.Connectors.dll:PresenceServicesConnector"
UserAgentService = "OpenSim.Services.Connectors.dll:UserAgentServiceConnector"
[MapImageService]
LocalServiceModule = "OpenSim.Services.Connectors.dll:MapImageServicesConnector"
@@ -1,124 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in StandaloneCommon.ini.example,
;; which you can copy and change.
;;
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "LocalInventoryServicesConnector"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "RegionGridServicesConnector"
PresenceServices = "LocalPresenceServicesConnector"
UserProfilesServices = "LocalUserProfilesServicesConnector"
UserAccountServices = "LocalUserAccountServicesConnector"
AgentPreferencesServices= "LocalAgentPreferencesServicesConnector"
GridUserServices = "LocalGridUserServicesConnector"
SimulationServices = "LocalSimulationConnectorModule"
AvatarServices = "LocalAvatarServicesConnector"
EntityTransferModule = "BasicEntityTransferModule"
InventoryAccessModule = "BasicInventoryAccessModule"
MapImageService = "MapImageServiceModule"
SearchModule = "BasicSearchModule"
MuteListService = "LocalMuteListServicesConnector"
LibraryModule = true
LLLoginServiceInConnector = true
GridInfoServiceInConnector = true
MapImageServiceInConnector = true
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
; For RegionAssetConnector
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
[InventoryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[AvatarService]
LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
[AuthenticationService]
LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
Realm = "regions"
StorageProvider = "OpenSim.Data.Null.dll"
[PresenceService]
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
StorageProvider = "OpenSim.Data.Null.dll"
[UserAccountService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
;; These are for creating new accounts
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
GridService = "OpenSim.Services.GridService.dll:GridService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true
[GridUserService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"
[FriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll"
[Friends]
Connector = "OpenSim.Services.FriendsService.dll"
[AgentPreferencesService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:AgentPreferencesService"
[LoginService]
LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
WelcomeMessage = "Welcome, Avatar!"
;# {DSTZone} {} {Override Daylight Saving Time rules} {* none local} "America/Los_Angeles;Pacific Standard Time"
;; Viewers do not receive timezone information from the server - almost all (?) default to Pacific Standard Time
;; However, they do rely on the server to tell them whether it's Daylight Saving Time or not.
;; Hence, calculating DST based on a different timezone can result in a misleading viewer display and inconsistencies between grids.
;; By default, this setting uses various timezone names to calculate DST with regards to the viewer's standard PST.
;; Options are
;; "none" no DST
;; "local" use the server's only timezone to calculate DST. This is previous OpenSimulator behaviour.
;; "America/Los_Angeles;Pacific Standard Time" use these timezone names to look up Daylight savings.
;; 'America/Los_Angeles' is used on Linux/Mac systems whilst 'Pacific Standard Time' is used on Windows
DSTZone = "America/Los_Angeles;Pacific Standard Time"
[MapImageService]
LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
[MuteListService]
LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService"
;; This should always be the very last thing on this file
[Includes]
Include-Common = "config-include/StandaloneCommon.ini"
@@ -1,400 +0,0 @@
; This is the main configuration file for an instance of OpenSim running in standalone mode
[DatabaseService]
;
; ### Choose the DB
;
; SQLite
Include-Storage = "config-include/storage/SQLiteStandalone.ini";
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db detail
; Remove SslMode=None if you need secure connection to the local mysql
; In most cases ssl is just a pure waste of resources, specially when mySql is on same machine, and closed to outside
;StorageProvider = "OpenSim.Data.MySQL.dll"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; Uncomment this line if you are using MySQL and want to use a different database for estates.
; The usual application for this is to allow estates to be spread out across multiple simulators by share the same database.
; Most people won't need to do this so only uncomment if you know what you're doing.
;EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;SslMode=None;"
; MSSQL
; Uncomment these lines if you want to use MSSQL storage
; Change the connection string to your db details
; The value for server property is shown in your SQL Server Management Studio login dialog.
; (This sample is the default of express edition)
;StorageProvider = "OpenSim.Data.MSSQL.dll"
;ConnectionString = "Server=localhost\SQLEXPRESS;Database=opensim;User Id=opensim; password=***;"
; PGSQL
; Uncomment these lines if you want to use PGSQL storage
; Change the connection string to your db details
;StorageProvider = "OpenSim.Data.PGSQL.dll"
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"
[Hypergrid]
; Uncomment the variable GatekeeperURI to enable
; Hypergrid configuration. Otherwise, ignore.
;# {GatekeeperURI} {Hypergrid} {The URL of the gatekeeper of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server
;; that runs the Gatekeeper service.
;; For example http://myworld.com:9000 or http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"
;# {GatekeeperURIAlias} {Hypergrid} {alternative hostnames (FQDN) or IPs of the gatekeeper of this world and port (default 80 or 443 if entry starts with https://)} {}
;; comma separated list,
;; this is to allow this world to identify this entries also as references to itself
;; entries can be unsecure url (host:port) if using ssl, direct login url if diferent, old grid url, etc
; GatekeeperURIAlias = myoldname.something.org, 127.0.0.1,127.0.0.1:8043
;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
;; If this is a standalone world, this is the address of this instance.
;; If this is a grided simulator, this is the address of the external robust server that
;; runs the UserAgentsService.
;; For example http://myworld.com:9000 or http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
;# {HomeURIAlias} {Hypergrid} {alternative hostnames (FQDN), or IPs of the home service of this world and port (default 80 or 443)} {}
;; comma separated list,
;; see GatekeeperURIAlias
; HomeURIAlias = myoldname.something.org, 127.0.0.1,127.0.0.1:8043
[Modules]
;; Asset cache module.
;; Warning this is required for several region features
AssetCaching = "FlotsamAssetCache"
Include-FlotsamCache = "config-include/FlotsamCache.ini"
;; Authorization is not on by default, as it depends on external php
;AuthorizationServices = "LocalAuthorizationServicesConnector"
[AssetService]
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
AssetLoaderArgs = "assets/AssetSets.xml"
[GridService]
;; For in-memory region storage (default)
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
;;--- For MySql region storage (alternative)
;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData"
;; Directory for map tile images of remote regions
; MapTileDirectory = "./maptiles"
;; Next, we can specify properties of regions, including default and fallback regions
;; The syntax is: Region_<RegionName> = "<flags>"
;; where <flags> can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut
;;
;; DefaultRegion If a local login cannot be placed in the required region (e.g. home region does not exist, avatar is not allowed entry, etc.)
;; then this region becomes the destination. Only the first online default region will be used. If no DefaultHGRegion
;; is specified then this will also be used as the region for hypergrid connections that require it (commonly because they have not specified
;; an explicit region.
;;
;; DefaultHGRegion If an avatar connecting via the hypergrid does not specify a region, then they are placed here. Only the first online
;; region will be used.
;;
;; FallbackRegion If the DefaultRegion is not available for a local login, then any FallbackRegions are tried instead. These are tried in the
;; order specified. This only applies to local logins at this time, not Hypergrid connections.
;;
;; NoDirectLogin A hypergrid user cannot directly connect to this region. This does not apply to local logins.
;;
;; Persistent When the simulator is shutdown, the region is signalled as offline but left registered on the grid.
;;
;; For example:
Region_Welcome_Area = "DefaultRegion, DefaultHGRegion"
;; Allow supporting viewers to export content
;; Set to false to prevent export
ExportSupported = true
[LibraryModule]
; Set this if you want to change the name of the OpenSim Library
;LibraryName = "My World's Library"
[LoginService]
WelcomeMessage = "Welcome, Avatar!"
SRV_HomeURI = "${Hypergrid|HomeURI}"
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}"
;; For Viewer 2
MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/"
; Url to search service
; SearchURL = "${Const|BaseURL}:${Const|PublicPort}";
; For V3 destination guide
; DestinationGuide = "${Const|BaseURL}/guide"
; 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
;; Ask co-operative viewers to use a different currency name
;Currency = ""
;; Set minimum fee to publish classified
; ClassifiedFee = 0
;; If the region requested at login is not found and there are no default or fallback regions
;; online or defined in section [GridService], try to send user to any region online
;; this similar to legacy (was disabled on 0.9.2.0)
;; you should set this to false and define regions with Default and possible Fallback flags
;; With this option set to true, users maybe sent to regions they where not supposed to be, or even know about
;AllowLoginFallbackToAnyRegion = true
; Basic Login Service Dos Protection Tweaks
;; Some Grids/Users use a transparent proxy that makes use of the X-Forwarded-For HTTP Header, If you do, set this to true
;; If you set this to true and you don't have a transparent proxy, it may allow attackers to put random things in the X-Forwarded-For header to
;; get around this basic DOS protection.
; DOSAllowXForwardedForHeader = false
;; The protector adds up requests during this rolling period of time, default 10 seconds
; DOSRequestTimeFrameMS = 10000
;;
;; The amount of requests in the above timeframe from the same endpoint that triggers protection
; DOSMaxRequestsInTimeFrame = 5
;;
;; The amount of time that a specific endpoint is blocked. Default 2 minutes.
; DOSForgiveClientAfterMS = 120000
;; To turn off basic dos protection, set the DOSMaxRequestsInTimeFrame to 0.
[FreeswitchService]
;; If FreeSWITCH is not being used then you don't need to set any of these parameters
;;
;; The IP address of your FreeSWITCH server. The common case is for this to be the same as the server running the OpenSim standalone
;; This has to be set for the FreeSWITCH service to work
;; This address must be reachable by viewers.
;ServerAddress = 127.0.0.1
;; The following configuration parameters are optional
;; By default, this is the same as the ServerAddress
; Realm = 127.0.0.1
;; By default, this is the same as the ServerAddress on port 5060
; SIPProxy = 127.0.0.1:5060
;; Default is 5000ms
; DefaultTimeout = 5000
;; The dial plan context. Default is "default"
; Context = default
;; Currently unused
; UserName = freeswitch
;; Currently unused
; Password = password
;; The following parameters are for STUN = Simple Traversal of UDP through NATs
;; See http://wiki.freeswitch.org/wiki/NAT_Traversal
;; stun.freeswitch.org is not guaranteed to be running so use it in
;; production at your own risk
; EchoServer = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = false
[GridInfoService]
; These settings are used to return information on a get_grid_info call.
; Client launcher scripts and third-party clients make use of this to
; autoconfigure the client and to provide a nice user experience. If you
; want to facilitate that, you should configure the settings here according
; to your grid or standalone setup.
;
; See http://opensimulator.org/wiki/GridInfo
; login uri: for grid this is the login server URI
login = ${Const|BaseURL}:${Const|PublicPort}/
; long grid name: the long name of your grid
gridname = "the lost continent of hippo"
; short grid name: the short name of your grid
gridnick = "hippogrid"
; login page: optional: if it exists it will be used to tell the client to use
; this as splash page. May also be served from an external web server, e.g. for
; information on a standalone
;welcome = ${Const|BaseURL}/welcome
; helper uri: optional: if it exists it will be used to tell the client to use
; this for all economy related things
;economy = ${Const|BaseURL}/economy
; web page of grid: optional: page providing further information about your grid
;about = ${Const|BaseURL}/about
; account creation: optional: page providing further information about obtaining
; a user account on your grid
;register = ${Const|BaseURL}/register
; help: optional: page providing further assistance for users of your grid
;help = ${Const|BaseURL}/help
; password help: optional: page providing password assistance for users of your grid
;password = ${Const|BaseURL}/password
; HG address of the gatekeeper, if you have one
; this is the entry point for all the regions of the world
; gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/
; HG user domain, if you have one
; this is the entry point for all user-related HG services
; uas = ${Const|BaseURL}:${Const|PublicPort}/
;; a http page for grid status
;GridStatus = ${Const|BaseURL}:${Const|PublicPort}/GridStatus
;; a RSS page for grid status
;GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/GridStatusRSS
[MapImageService]
; Set this if you want to change the default
; TilesStoragePath = "maptiles"
[AuthorizationService]
; If you have regions with access restrictions
; specify them here using the convention
; Region_<Region_Name> = <flags>
; Valid flags are:
; DisallowForeigners -- HG visitors not allowed
; DisallowResidents -- only Admins and Managers allowed
; Example:
; Region_Test_1 = "DisallowForeigners"
;;
;; HG configurations
;;
[GatekeeperService]
;; If you have GatekeeperURI set under [Hypergrid], no need to set it here, leave it commented
; ExternalName = "${Const|BaseURL}:${Const|PublicPort}"
; Does this grid allow incoming links to any region in it?
; If false, HG TPs happen only to the Default regions specified in [GridService] section
AllowTeleportsToAnyRegion = true
;; Regular expressions for controlling which client versions are accepted/denied.
;; An empty string means nothing is checked.
;;
;; Example 1: allow only these 3 types of clients (any version of them)
;; AllowedClients = "Imprudence|Hippo|Second Life"
;;
;; Example 2: allow all clients except these
;; DeniedClients = "Twisted|Crawler|Cryolife|FuckLife|StreetLife|GreenLife|AntiLife|KORE-Phaze|Synlyfe|Purple Second Life|SecondLi |Emerald"
;;
;; Note that these are regular expressions, so every character counts.
;; Also note that this is very weak security and should not be trusted as a reliable means
;; for keeping bad clients out; modified clients can fake their identifiers.
;;
;;
;AllowedClients = ""
;DeniedClients = ""
;; Are foreign visitors allowed?
;ForeignAgentsAllowed = true
;;
;; If ForeignAgentsAllowed is true, make exceptions using AllowExcept.
;; Leave blank or commented for no exceptions.
; AllowExcept = "http://griefer.com:8002, http://enemy.com:8002"
;;
;; If ForeignAgentsAllowed is false, make exceptions using DisallowExcept
;; Leave blank or commented for no exceptions.
; DisallowExcept = "http://myfriendgrid.com:8002, http://myboss.com:8002"
[UserAgentService]
;; User level required to be contacted from other grids
;LevelOutsideContacts = 0
;; Restrictions on destinations of local users.
;; Are local users allowed to visit other grids?
;; What user level? Use variables of this forrm:
;; ForeignTripsAllowed_Level_<UserLevel> = true | false
;; (the default is true)
;; For example:
; ForeignTripsAllowed_Level_0 = false
; ForeignTripsAllowed_Level_200 = true ; true is default, no need to say it
;;
;; If ForeignTripsAllowed is false, make exceptions using DisallowExcept
;; Leave blank or commented for no exceptions.
; DisallowExcept_Level_0 = "http://myothergrid.com:8002, http://boss.com:8002"
;;
;; If ForeignTripsAllowed is true, make exceptions using AllowExcept.
;; Leave blank or commented for no exceptions.
; AllowExcept_Level_200 = "http://griefer.com:8002, http://enemy.com:8002"
;; This variable controls what is exposed to profiles of local users
;; as seen from outside of this grid. Leave it uncommented for exposing
;; UserTitle, UserFlags and the creation date. Uncomment and change to False
;; to block this info from being exposed.
; ShowUserDetailsInHGProfile = True
[HGAssetService]
;; The asset types that this grid can export to / import from other grids.
;; Comma separated.
;; Valid values are all the asset types in OpenMetaverse.AssetType, namely:
;; Unknown, Texture, Sound, CallingCard, Landmark, Clothing, Object, Notecard, LSLText,
;; LSLBytecode, TextureTGA, Bodypart, SoundWAV, ImageTGA, ImageJPEG, Animation, Gesture, Mesh
;;
;; Leave blank or commented if you don't want to apply any restrictions.
;; A more strict, but still reasonable, policy may be to disallow the exchange
;; of scripts, like so:
; DisallowExport ="LSLText"
; DisallowImport ="LSLBytecode"
[HGInventoryAccessModule]
;; If you want to protect your assets from being copied by foreign visitors
;; uncomment the next line. You may want to do this on sims that have licensed content.
;; true = allow exports, false = disallow exports. True by default.
; OutboundPermission = True
;; Send visual reminder to local users that their inventories are unavailable while they are traveling
;; and available when they return. True by default.
;RestrictInventoryAccessAbroad = True
[HGFriendsModule]
; User level required to be able to send friendship invitations to foreign users
;LevelHGFriends = 0;
[Messaging]
[EntityTransfer]
;; User level from which local users are allowed to HG teleport. Default 0 (all users)
;LevelHGTeleport = 0
;; Are local users restricted from taking their appearance abroad?
;; Default is no restrictions
;RestrictAppearanceAbroad = false
;; If appearance is restricted, which accounts' appearances are allowed to be exported?
;; Comma-separated list of account names
AccountForAppearance = "Test User, Astronaut Smith"
[UserProfilesService]
;; To use, set Enabled to true then configure for your site...
Enabled = false
LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService"
;; Configure this for separate databse
; 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"
@@ -1,198 +0,0 @@
;;
;; Please don't change this file.
;; All optional settings are in StandaloneCommon.ini.example,
;; which you can copy and change.
;;
[Startup]
WorldMapModule = "HGWorldMap"
[Modules]
AssetServices = "RegionAssetConnector"
InventoryServices = "HGInventoryBroker"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "RegionGridServicesConnector"
PresenceServices = "LocalPresenceServicesConnector"
UserAccountServices = "LocalUserAccountServicesConnector"
AgentPreferencesServices= "LocalAgentPreferencesServicesConnector"
GridUserServices = "LocalGridUserServicesConnector"
SimulationServices = "RemoteSimulationConnectorModule"
AvatarServices = "LocalAvatarServicesConnector"
UserProfilesServices = "LocalUserProfilesServicesConnector"
MapImageService = "MapImageServiceModule"
EntityTransferModule = "HGEntityTransferModule"
InventoryAccessModule = "HGInventoryAccessModule"
FriendsModule = "HGFriendsModule"
UserManagementModule = "HGUserManagementModule"
SearchModule = "BasicSearchModule"
MuteListService = "LocalMuteListServicesConnector"
InventoryServiceInConnector = true
AssetServiceInConnector = true
HypergridServiceInConnector = true
NeighbourServiceInConnector = true
LibraryModule = true
LLLoginServiceInConnector = true
GridInfoServiceInConnector = true
AuthenticationServiceInConnector = true
SimulationServiceInConnector = true
MapImageServiceInConnector = true
[Messaging]
MessageTransferModule = HGMessageTransferModule
LureModule = HGLureModule
[SimulationDataStore]
LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
[EstateDataStore]
LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
; For RegionAssetConnector
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
HypergridAssetService = "OpenSim.Services.Connectors.dll:HGAssetServiceConnector"
[InventoryService]
; For HGInventoryBroker
LocalGridInventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
[AvatarService]
LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
[LibraryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"
[AuthenticationService]
LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
Realm = "regions"
StorageProvider = "OpenSim.Data.Null.dll"
; Needed to display non-default map tile images for remote regions
AssetService = "OpenSim.Services.AssetService.dll:AssetService"
HypergridLinker = true
AllowHypergridMapSearch = true
[PresenceService]
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
StorageProvider = "OpenSim.Data.Null.dll"
[UserAccountService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
;; These are for creating new accounts by the service
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
GridService = "OpenSim.Services.GridService.dll:GridService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true
[GridUserService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"
[FriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll"
[Friends]
Connector = "OpenSim.Services.FriendsService.dll"
[AgentPreferencesService]
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:AgentPreferencesService"
[LoginService]
LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
; This inventory service will be used to initialize the user's inventory
HGInventoryServicePlugin = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
HGInventoryServiceConstructorArg = "HGInventoryService"
[MapImageService]
LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
[GatekeeperService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
;; for the service
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
[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"
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true
;; The interface that local users get when they are in other grids
;; This greatly restricts the inventory operations while in other grids
[HGInventoryService]
; For the InventoryServiceInConnector
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
;; alternatives:
;; HG1.5, more permissive, not recommended, but still supported
;LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGInventoryService"
;; HG1.0, totally permissive, not recommended, but OK for grids with 100% trust
;LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
;; The interface that local users get when they are in other grids
;; This restricts/filters the asset operations from the outside
[HGAssetService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
[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
[MuteListService]
LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService"
;; This should always be the very last thing on this file
[Includes]
Include-Common = "config-include/StandaloneCommon.ini"
@@ -1,26 +0,0 @@
version: '3'
services:
opensim:
image: opensim-herbal3d
environment:
- CONFIGKEY
- CONFIG_NAME
- EXTERNAL_HOSTNAME
# If the configuration is outside of the container
# volumes:
# - ./config:/home/opensim/opensim/bin/config
ports:
- 8002:8002/tcp
- 8002:8002/udp
- 9000:9000/tcp
- 9000:9000/udp
- 9050:9050/tcp
- 9050:9050/udp
- 11440-11449:11440-11449
# restart: always
@@ -1,26 +0,0 @@
version: '3'
services:
opensim:
image: opensim-herbal3d
environment:
- CONFIGKEY
- CONFIG_NAME
- EXTERNAL_HOSTNAME
# If the configuration is outside of the container
# volumes:
# - ./config:/home/opensim/opensim/bin/config
ports:
- 8002:8002/tcp
- 8002:8002/udp
- 9000:9000/tcp
- 9000:9000/udp
- 9050:9050/tcp
- 9050:9050/udp
- 11440-11449:11440-11449
# restart: always
-8
View File
@@ -1,8 +0,0 @@
# File of configuration parameters that are applied when OpenSimulator is run.
# When run, the OpenSimulator selects one of the available runtime configurations.
# This is selected by CONFIG_NAME which is the name of a subdirectory under
# '/config/'. Thus, one OpenSImulator binary can have several runtime
# configurations (standalone, grid, ...).
export CONFIG_NAME=${CONFIG_NAME:-standalone}
@@ -1,14 +0,0 @@
#! /bin/bash
# Script that copies the Includes.ini into the 'bin/config' dir so
# OpenSimulator finds our new configuration system.
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
OPENSIMCONFIG="$OPENSIMBIN/config"
CONFIG_NAME=${CONFIG_NAME:-standalone}
cd "$OPENSIMCONFIG"
if [[ ! -e "Includes.ini" ]] ; then
echo "opensim-docker: Copying Includes.ini into bin/config"
cp "config-${CONFIG_NAME}/Includes.ini" .
fi
@@ -1,44 +0,0 @@
#! /bin/bash
# Before running OpenSimulator, we update the configuration files
# for the current running environment.
# This is run before every OpenSimulator run to update changing parameters.
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
# For this image, CONFIG_NAME is the configuration being used
CONFIG_NAME=${CONFIG_NAME:-standalone}
CONFIGDIR=${OPENSIMBIN}/config/config-${CONFIG_NAME}
cd "$CONFIGDIR"
source ../scripts/setEnvironment.sh
# Update EXTERNAL_HOSTNAME
cd "$OPENSIMBIN"
for file in $OPENSIMBIN/Regions/*.ini $CONFIGDIR/Regions/*.ini ; do
if [[ -e "$file" ]] ; then
echo "opensim-docker: updateConfigFiles.sh: fixing ExternalHostname in \"$file\""
sed --in-place -e "s/^ExternalHostName = .*$/ExternalHostName = \"${EXTERNAL_HOSTNAME}\"/" "$file"
fi
done
# Add EXTERNAL_HOSTNAME to the common configuation in OpenSim.ini
if [[ -e "$OPENSIMBIN/OpenSim.ini" ]] ; then
sed --in-place -e "s/^ *BaseHostname = .*$/ BaseHostname = ${EXTERNAL_HOSTNAME}/" "$OPENSIMBIN/OpenSim.ini"
echo "opensim-docker: updateConfigFiles.sh: fixing BaseHostname in OpenSim.ini"
grep " BaseHostname =" "$OPENSIMBIN/OpenSim.ini"
fi
# If the environment variables haven't been copied into misc.ini, do it now
echo "opensim-docker: updateConfigFiles.sh: replacing vars in \"${CONFIGDIR}/misc.ini\""
# If the replacement has already happened, this is a NOOP
sed \
-e "s/MYSQL_DB_USER_PASSWORD/$MYSQL_DB_USER_PASSWORD/" \
-e "s/MYSQL_DB_USER/$MYSQL_DB_USER/" \
-e "s/MYSQL_DB_SOURCE/$MYSQL_DB_SOURCE/" \
-e "s/MYSQL_DB_DB/$MYSQL_DB_DB/" \
-e "s/PW_FOR_DEFAULT_ESTATE_OWNER/$PW_FOR_DEFAULT_ESTATE_OWNER/" \
-e "s/DEFAULT_ESTATE_NAME/$DEFAULT_ESTATE_NAME/" \
-e "s/DEFAULT_ESTATE_OWNER/$DEFAULT_ESTATE_OWNER/" \
< "${CONFIGDIR}/misc.ini.ORIG" > "${CONFIGDIR}/misc.ini"
-40
View File
@@ -1,40 +0,0 @@
#! /bin/bash
# Script run when the container starts and before OpenSimulator is started
#
# The operations done here are:
# -- if first time called, setup DB and initialize variables in configuration files
# -- move sub-config specific Includes.ini into the config directory
# -- update all the configuration files with environment variables
export OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
export CONFIGDIR=${CONFIGDIR:-$OPENSIMBIN/config}
echo "opensim-docker: setup.sh: CONFIGDIR=\"${CONFIGDIR}\""
FIRSTTIMEFLAG=${CONFIGDIR}/.configFirstTime
cd "$CONFIGDIR"
# This sets CONFIG_NAME which is the configuration subdirectory (like standalone)
source ./scripts/setEnvironment.sh
# If this is the first time run, do database setup and some one-time configuration updates
if [[ ! -e "$FIRSTTIMEFLAG" ]] ; then
echo "opensim-docker: setup.sh: first time"
cd "$CONFIGDIR"
# Do any database account and db creation
./scripts/initializeDb.sh
touch "$FIRSTTIMEFLAG"
fi
# Move the configuration include file into place
# This makes opensim/bin/config directory contain this INI file for this image/config
# Since all the regular configuration has been nulled out, this will be the only config
# after bin/OpenSimDefaults.ini and bin/OpenSim.ini
cd "$CONFIGDIR"
./scripts/linkInConfigs.sh
# Do any update to configuration files that happens each start
# This updates bin/OpenSim.ini and Regions/*.ini with needed values
cd "$CONFIGDIR"
./scripts/updateConfigFiles.sh
@@ -1,14 +1,17 @@
version: '3'
services:
networks:
localnet:
driver: bridge
services:
dbservice:
# MySql version 8 requires a bunch of new security stuff. Stay with v5.
# image: mysql:5
# Use MariaDB
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD:
MARIADB_ROOT_PASSWORD:
# Parameters added to invocation.
# Default is to flush after every operation which slows Docker image down.
# This flushes log once a second.
@@ -17,30 +20,26 @@ services:
# NOTE: you must create this directory before starting the simulator
# This mysql data directory can be placed anywhere
- ~/opensim-sql-data:/var/lib/mysql
restart: unless-stopped
networks:
- localnet
# restart: always
opensim:
depends_on:
- dbservice
image: opensim-herbal3d
environment:
CONFIG_NAME:
CONFIGKEY:
EXTERNAL_HOSTNAME:
# If the configuration is outside the container.
OS_CONFIG:
volumes:
- ./config:/home/opensim/opensim/bin/config
- ./config-$OS_CONFIG:/home/opensim/opensim/bin/config
# Loden generated asset directory tree is stored externally
- ./LodenAssets:/home/opensim/opensim/bin/LodenAssets
networks:
- localnet
ports:
- 8002:8002/tcp
- 8002:8002/udp
- 9000:9000/tcp
- 9000:9000/udp
- 9010:9010/tcp
- 9010:9010/udp
links:
- dbservice:dbservice
restart: unless-stopped
# restart: always
+22
View File
@@ -0,0 +1,22 @@
# Overall parameters for building and storing the OpenSimulator image.
# This file is 'source'ed in Bash scripts and used by docker-compose.
# While nearly everything can be moved into this file, these are the
# top level build and run configurations but most of the configuration
# happens in the config-$OS_CONFIG directory.
# NOTE: the assignment format is restricted so it works as a Bash
# assignment file and a docker-compose env-file
# The sources to build
OS_GIT_REPO=git://opensimulator.org/git/opensim
OS_GIT_BRANCH=master
# OS_GIT_BRANCH=opensim-rel-0.9.3.8940
OS_BUILDTARGET=Release
OS_SLN=OpenSim.sln
# The container parameters
IMAGE_OWNER=misterblue
IMAGE_NAME=opensim-herbal3d
IMAGE_VERSION=latest
DOCKER_IMAGE="${IMAGE_OWNER}/${IMAGE_NAME}:${IMAGE_VERSION}"
+10
View File
@@ -0,0 +1,10 @@
#! bin/bash
# The ./env file is formatted for docker-compose
# This script outputs a conversion of that file with
# 'export' added to each line so it can be set into
# a Bash environment.
TEMPFILE=/tmp/envToEnvironment$$
sed -e 's/^\([A-Z]\)/export \1/' < ./env > "$TEMPFILE"
source "$TEMPFILE"
rm -f "$TEMPFILE"
+20
View File
@@ -0,0 +1,20 @@
#! /bin/bash
# Push the local image named "opensim-herbal3d" to the repository.
# The image tag is set to "latest".
# The repository image name can be over-ridden with the environment variable REPO_IMAGE.
export IMAGE_OWNER=${IMAGE_OWNER:-misterblue}
export IMAGE_NAME=${IMAGE_NAME:-opensim-herbal3d}
export IMAGE_VERSION=${IMAGE_VERSION:-latest}
VERSIONLABEL=$(docker run --rm --entrypoint /home/opensim/getVersion.sh ${IMAGE_NAME}:${IMAGE_VERSION} OS_GIT_DESCRIBE)
echo "Pushing docker image for opensim version ${VERSIONLABEL}"
for tagg in ${VERSIONLABEL} ${IMAGE_VERSION} ; do
IMAGE=${IMAGE_OWNER}/${IMAGE_NAME}:${tagg}
docker tag ${IMAGE_NAME} ${IMAGE}
echo " Pushing ${IMAGE}"
docker push ${IMAGE}
done
@@ -1,36 +0,0 @@
#! /bin/bash
# Stop the running opensimulator
BASE=$(pwd)
export CONFIG_NAME=${CONFIG_NAME:-standalone}
# This export fakes out the environment setup script to look for files in
# build environment rather than in run environment.
export OPENSIMBIN=$BASE
source config/scripts/setEnvironment.sh
unset OPENSIMBIN
# Use the generic docker-compose file or the one specific to the configuration if it exists
cd "$BASE"
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose.yml"
if [[ -z "$OS_DOCKER_CONTAINER_CONFIG" ]] ; then
# if using external configuration, include docker-compose with the mount
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose-external-config.yml"
fi
echo "Restarting configuration $CONFIG_NAME from \"$COMPOSEFILE\""
# update any of the images
# docker-compose \
# --file "$COMPOSEFILE" \
# pull
docker compose \
--file "$COMPOSEFILE" \
--project-name opensim-${CONFIG_NAME} \
--project-directory "$BASE" \
up \
--detach \
--remove-orphans
@@ -1,28 +0,0 @@
#! /bin/bash
# Stop the running opensimulator
BASE=$(pwd)
export CONFIG_NAME=${CONFIG_NAME:-standalone}
# This export fakes out the environment setup script to look for files in
# build environment rather than in run environment.
export OPENSIMBIN=$BASE
source config/scripts/setEnvironment.sh
unset OPENSIMBIN
# Use the generic docker-compose file or the one specific to the configuration if it exists
cd "$BASE"
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose.yml"
if [[ -z "$OS_DOCKER_CONTAINER_CONFIG" ]] ; then
# if using external configuration, include docker-compose with the mount
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose-external-config.yml"
fi
echo "Restarting configuration $CONFIG_NAME from \"$COMPOSEFILE\""
docker compose \
--file "$COMPOSEFILE" \
--project-name opensim-${CONFIG_NAME} \
restart -t 10 opensim
+18
View File
@@ -0,0 +1,18 @@
#! /bin/bash
# Stop the running opensimulator
BASE=$(pwd)
# Get the container parameters into the environment
# (Needs to be in the environment for the docker-compose.yml file)
source ./envToEnvironment.sh
export OS_CONFIG=${OS_CONFIG:-standalone}
echo "Restarting configuration $CONFIG_NAME from docker-compose.yml"
docker-compose \
--file docker-compose.yml \
--env-file ./env \
--project-name opensim-${OS_CONFIG} \
restart
-77
View File
@@ -1,77 +0,0 @@
#! /bin/bash
# Run the herbal3d configuration.
# Since the initial run has to create and initialize the MYSQL database
# the first time, this sets the passwords into the environment before
# running things.
# Be sure to set environment variables:
# CONFIGKEY=passwordForCryptFile (optional. Not needed if os-secrets is not ccrypt'ed)
# CONFIG_NAME=nameOfRunConfiguration (default 'standalone' of not supplied)
# EXTERNAL_HOSTNAME=IPorDNSnameForSimulator
# If this environment variable is defined, the configuration files are updated with
# configuration values in the container (at container runtime). Otherwise, the
# configuration files are updated with values external to the container (in the
# filesystem of the invoker and the internal directory 'bin/config/ is mounted
# as the local 'config' directory.
# export OS_DOCKER_CONTAINER_CONFIG="yes"
BASE=$(pwd)
if [[ -z "$EXTERNAL_HOSTNAME" ]] ; then
echo "Environment variable EXTERNAL_HOSTNAME is not set."
echo "NOT STARTING!"
exit 3
fi
export CONFIGKEY=$CONFIGKEY
export EXTERNAL_HOSTNAME=$EXTERNAL_HOSTNAME
export CONFIG_NAME=${CONFIG_NAME:-standalone}
# This export fakes out the environment setup script to look for files in
# build environment rather than in run environment.
export OPENSIMBIN=$BASE
# set all environment variables
echo "Setting environment vars"
cd "$BASE"
source config/scripts/setEnvironment.sh
# echo "================================"
# env | sort
# echo "================================"
# if configuration files are external to the container, run the configuration
if [[ -z "$OS_DOCKER_CONTAINER_CONFIG" ]] ; then
echo "opensim-docker: running configuration file initialization"
cd "$BASE"
config/scripts/updateConfigFiles.sh
config/scripts/linkInConfigs.sh
fi
# Use the generic docker-compose file or the one specific to the configuration if it exists
cd "$BASE"
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose.yml"
if [[ -z "$OS_DOCKER_CONTAINER_CONFIG" ]] ; then
# if using external configuration, include docker-compose with the mount
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose-external-config.yml"
fi
echo "Docker-compose file: ${COMPOSEFILE}"
# Local directory for storage of sql persistant data (so region
# contents persists between container restarts).
# This must be the same directory as in config-$CONFIG_NAME/docker-compose.yml.
if [[ ! -d "$HOME/opensim-sql-data" ]] ; then
echo "Directory \"$HOME\opensim-sql-data\" does not exist. Creating same."
mkdir -p "$HOME/opensim-sql-data"
chmod o+w "$HOME/opensim-sql-data"
fi
# https://docs.docker.com/engine/security/userns-remap/
# --userns-remap="opensim:opensim"
docker compose \
--file "$COMPOSEFILE" \
--project-name opensim-${CONFIG_NAME} \
--project-directory "$BASE" \
up \
--detach
+44
View File
@@ -0,0 +1,44 @@
#! /bin/bash
# Run the OpenSimulator image
# Since the initial run has to create and initialize the MYSQL database
# the first time, this sets the passwords into the environment before
# running things.
# Be sure to set environment variables:
# OS_CONFIG=nameOfRunConfiguration (default 'standalone' of not supplied)
BASE=$(pwd)
# Get the container parameters into the environment
# source ./envToEnvironment.sh
source ./env
# The selects the configuration to mount and use in the Docker image
export OS_CONFIG=${OS_CONFIG:-standalone}
echo "Using configuration \"$OS_CONFIG\""
# Get the secrets for the environment
# (the following 'export' fakes out 'setEnvironment' to use the local directory
export OPENSIMCONFIG=${BASE}/config-${OS_CONFIG}
source ${OPENSIMCONFIG}/scripts/setEnvironment.sh
# Local directory for storage of sql persistant data (so region
# contents persists between container restarts).
# This must be the same directory as in $COMPOSEFILE
if [[ ! -d "$HOME/opensim-sql-data" ]] ; then
echo "Directory \"$HOME/opensim-sql-data/\" does not exist. Creating same."
mkdir -p "$HOME/opensim-sql-data"
chmod o+w "$HOME/opensim-sql-data"
fi
cd "${BASE}"
# https://docs.docker.com/engine/security/userns-remap/
# --userns-remap="opensim:opensim"
docker-compose \
--file docker-compose.yml \
--env-file ./env \
--project-name opensim-${OS_CONFIG} \
up \
--detach
-27
View File
@@ -1,27 +0,0 @@
#! /bin/bash
# Stop the running opensimulator
BASE=$(pwd)
export CONFIG_NAME=${CONFIG_NAME:-standalone}
# This export fakes out the environment setup script to look for files in
# build environment rather than in run environment.
export OPENSIMBIN=$BASE
source config/scripts/setEnvironment.sh
unset OPENSIMBIN
# Use the generic docker-compose file or the one specific to the configuration if it exists
cd "$BASE"
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose.yml"
if [[ -z "$OS_DOCKER_CONTAINER_CONFIG" ]] ; then
# if external configuration, include docker-compose with the mount
COMPOSEFILE="config/config-${CONFIG_NAME}/docker-compose-external-config.yml"
fi
echo "Stopping configuration $CONFIG_NAME from \"$COMPOSEFILE\""
docker compose \
--file "$COMPOSEFILE" \
--project-name opensim-${CONFIG_NAME} \
down
+18
View File
@@ -0,0 +1,18 @@
#! /bin/bash
# Stop the running opensimulator
BASE=$(pwd)
# Get the container parameters into the environment
# source ./envToEnvironment.sh
source ./env
export OS_CONFIG=${OS_CONFIG:-standalone}
echo "Stopping configuration $OS_CONFIG from docker-compose.sh"
docker-compose \
--file docker-compose.yml \
--env-file ./env \
--project-name opensim-${OS_CONFIG} \
down
-8
View File
@@ -1,8 +0,0 @@
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set ff=unix
set background=dark
syntax enable