Complete conversion to Image/config organization.

Have working standalone and standalone-sql configurations for standard opensim image.
This commit is contained in:
Robert Adams
2022-02-01 21:33:38 +00:00
parent 9df47af11d
commit a5d8db63d3
22 changed files with 232 additions and 424 deletions
+23 -13
View File
@@ -10,12 +10,22 @@ There was a presentation on this project at the
that is available at
[OSCC19 Dockerizing OpenSimulator](https://www.youtube.com/watch?v=-EnTepHqLA4) .
There are two possible images: `opensim-standalone` which is straight [OpenSimulator]
'master' branch, and `opensim-herbal3d` which is [OpenSimulator] built with
the [Herbal3d] addon modules. These base images can have different runtime
configurations which includes running with a seperate [Docker] container for
the database (uses [MariaDB]) and/or different [OpenSimulator] configuration
files.
This is organized into building *images* and *config*s for those images.
The model is for one to build a Docker image with one of the [OpenSimulator]
images in it and, at runtime, choose one of the embedded configurations to
run it with. The [OpenSimulator] "image" is a built version of the source
code and the "config" is the collection of INI files that are used to run it.
Two images are currently present: `image-opensim` which is a built of the
straight [OpenSimulator] 'master' branch,
and `image-opensim-herbal3d` which is [OpenSimulator] built with
the [Herbal3d] addon modules.
(Since I'm the Herbal3d main developer, this is how I test it.)
The Docker images are run using `docker-compose` to set up ports
and environment. Additionally, if a database server is needed,
that is also started and linked to the [OpenSimulator] instance.
[MariaDB] is used for the external SQL server.
As an example, to create a standalone version that creates two containers
(simulator and database):
@@ -26,7 +36,7 @@ cd
git clone https://github.com/Misterblue/opensim-docker.git
# Use the standalone setup for this example
cd opensim-docker/opensim-standalone
cd opensim-docker/image-opensim
# Select the runtime configuration to use
export CONFIG_NAME=standalone-mysql
@@ -45,14 +55,14 @@ rm tmpfile
# Build OpenSimulator image
cd
cd opensim-docker/opensim-standalone
./build-standalone.sh
cd opensim-docker/image-opensim
./build-opensim.sh
# Run the composed container set
CONFIG_NAME=standalone-mysql CONFIGKEY=secretPassword EXTERNAL_HOSTNAME=whateverTheHostnameIs ./run-standalone.sh
```
As of October 2019, these [Docker] images have not been built and uploaded
As of January 2022, these [Docker] images have not been built and uploaded
anywhere as you will probably want to be using the latest [OpenSimulator]
sources and thus require a fresh build.
@@ -71,15 +81,15 @@ The simulator runs as the created user account `opensim` for a little security.
The `README` files in the sub-directories contain instructions on setup
of these configuration files and building the images. There are scripts
for building the images (e.g., `build-standalone.sh`) and then running
the images with `docker-compose` (e.g., `run-standalone.sh`).
for building the images (e.g., `build-opensim.sh`) and then running
the images with `docker-compose` (e.g., `run-opensim.sh`).
## OpenSimulator Configuration
The biggest problem with Docker'izing [OpenSimulator] is the configuration
file setup -- [OpenSimulator] has manual setup and configuration files
scattered around. Add to that the radically different runtime setups possible
(stand-alone with or without databases and grid hosting or grid connected)
(standalone with or without databases and grid hosting or grid connected)
and a generalized, containerable configuration becomes difficult.
The solution used here is to mostly null out the configuration that comes
+10 -5
View File
@@ -38,8 +38,9 @@ RUN adduser --disabled-password --gecos 'OpenSimulator user' opensim
USER opensim:opensim
# Scripts that keep OpenSimulator running, make crash reports, clean up log files, etc
COPY --chown=opensim:opensim run-scripts/* /home/opensim/
COPY --chown=opensim:opensim vimrc /home/opensim/.vimrc
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/
# Version information that goes in the image
RUN mkdir -p $VERSIONDIR \
@@ -52,18 +53,20 @@ RUN mkdir -p $VERSIONDIR \
&& 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 and build the latest version of the OpenSimulator sources.
# Fetch the latest version of the OpenSimulator sources.
RUN cd /home/opensim \
&& git clone --depth=1 $OS_REPO opensim \
&& cd $OPENSIMDIR \
&& git checkout $OS_BRANCH
# 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 \
&& grep "const string VersionNumber" ./OpenSim/Framework/VersionInfo.cs | \
sed -e "s/^.*VersionNumber = \"\(.*\)\".*$/\1/" > $VERSIONDIR/OS_VERSION
# Build OpenSimulator
RUN cd $OPENSIMDIR \
&& chmod +x runprebuild48.sh \
&& ./runprebuild48.sh \
@@ -71,8 +74,10 @@ RUN cd $OPENSIMDIR \
# OpenSim.ini and other INI files include from "config-include/*"
# so copy an empty versions to nullfy the default configuration.
COPY --chown=opensim:opensim config-include/ $OPENSIMDIR/bin/config-include/
# Copy over any extra configuration files we're including
RUN cd $OPENSIMDIR/bin \
&& /home/opensim/nullOutConfigInclude.sh
# Copy the configuration file sets for this image
RUN mkdir -p $OPENSIMDIR/bin/config
COPY --chown=opensim:opensim config/ $OPENSIMDIR/bin/config/
# Use the default, included configuration parameters
+10 -2
View File
@@ -8,6 +8,11 @@ GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
GIT_COMMIT=$(git rev-parse HEAD)
GIT_COMMIT_SHORT=$(git rev-parse --short HEAD)
# 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' is here to force refetching of the OpenSimulator git sources
# --no-cache
docker build \
@@ -17,6 +22,9 @@ docker build \
--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-standalone \
-f Dockerfile-standalone \
-t opensim-opensim \
-f Dockerfile-opensim \
.
# Remove the temporarily copied run-scripts to reduce any confusion
rm -rf temp-run-scripts
-32
View File
@@ -1,32 +0,0 @@
# File of secrets for the build and run images.
# This file is a template of the values to use.
# NEVER, NEVER EVER CHECK-IN the version with the real values!!
# 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:
# ccrypt -e -E "$CONFIGKEY" < os-secrets > os-secrets.crypt
# or (exposing the key in the bash history):
# ccrypt -e -K thekey < os-secrets > os-secrets.crypt
# If this next variable is defined, MYSQL is configured
#export MYSQL_ROOT_PASSWORD=ksdjfalkcxviowerw
export MYSQL_DB_SOURCE=localhost
export MYSQL_DB_DB=opensim
export MYSQL_DB_USER=opensim
export MYSQL_DB_PASSWORD=dbpassword
export OPENSIM_USER=opensim
export OPENSIM_USER_PASSWORD=klajslkjsladfiouw
# The following are used to initialize estate if running standalone
export DEFAULT_ESTATE_NAME="Donalds Estate"
export DEFAULT_ESTATE_OWNER="Donald Duck"
export PW_FOR_DEFAULT_ESTATE_OWNER=asoiouzkxcjkvhuqwu
# Flag used to know if secrest are set
export HAVE_SECRETS=true
# Did I mention that one should NEVER, NEVER, EVER check-in a version
# with the real passwords in it?
+20 -9
View File
@@ -2,25 +2,36 @@
# Script to create database 'opensim' in mysql if it does not exist.
# Someone has set the environment variables before running this.
# Needs:
# MYSQL_DB_SOURCE
# MYSQL_ROOT_PASSWORD
# OPENSIM_DB_PASSWORD
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_SOURCE" "MYSQL_DB_USER" "MYSQL_DB_USER_PASSWORD" ; do
if [[ -z "$!needed" ]] ; then
echo "opensim-docker: initializeDb.sh: missing required env parameter $needed"
echo "opensim-docker: initializeDb.sh: DATABASE NOT INITIALIZE"
exit 5
fi
done
SQLCMDS=${OPENSIMCONFIG}/mymy$$
SQLOPTIONS=${OPENSIMCONFIG}/mymyoptions$$
rm -f "$SQLCMDS"
rm -f "$SQLOPTIONS"
cat > "$SQLCMDS" <<EOFFFF
CREATE DATABASE opensim;
USE opensim;
CREATE USER 'opensim'@'%' IDENTIFIED BY '$MYSQL_DB_PASSWORD';
GRANT ALL ON opensim.* to 'opensim'@'%';
CREATE DATABASE $MYSQL_DB_DB;
USE $MYSQL_DB_DB;
CREATE USER '$MYSQL_DB_USER'@'%' IDENTIFIED BY '$MYSQL_DB_USER_PASSWORD';
GRANT ALL ON $MYSQL_DB_DB.* to '$MYSQL_DB_USER'@'%';
quit
EOFFFF
cat > "$SQLOPTIONS" <<EOFFFF
@@ -32,24 +43,24 @@ 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
echo "initializeDb.sh: Waiting on database to be ready"
echo "opensim-docker: initializeDb.sh: Waiting on database to be ready"
sleep 2
done
echo "initializeDb.sh: Database is ready"
echo "opensim-docker: initializeDb.sh: Database is ready"
HASDB=$(mysql --defaults-extra-file=$SQLOPTIONS -e "show databases" | grep "^opensim$")
if [[ -z "$HASDB" ]] ; then
echo "creating opensim database"
echo "opensim-docker: initialzeDb.sh: creating opensim database"
mysql --defaults-extra-file=$SQLOPTIONS < "$SQLCMDS"
else
echo "opensim database has already been created"
echo "opensim-docker: initialzeDb.sh: opensim database has already been created"
fi
rm -f "$SQLCMDS"
rm -f "$SQLOPTIONS"
else
echo "Not configuring MYSQL"
echo "opensim-docker: initializeDb.sh: Not configuring SQL database"
fi
+13 -1
View File
@@ -1,5 +1,8 @@
#! /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}
@@ -8,8 +11,10 @@ cd "$OPENSIMCONFIG"
if [[ -e "./os-config" ]] ; then
source ./os-config
echo "opensim-docker: setEnvironment.sh: CONFIG_NAME=${CONFIG_NAME} from ./os-config"
else
CONFIG_NAME=standalone
export CONFIG_NAME=${CONFIG_NAME:-standalone}
echo "opensim-docker: setEnvironment.sh: CONFIG_NAME=${CONFIG_NAME} as default"
fi
# See if we have encrypted secrets
@@ -17,19 +22,26 @@ unset HAVE_SECRETS
if [[ ! -z "$CONFIGKEY" ]] ; then
for secretsFile in $OPENSIMCONFIG/$CONFIG_NAME/os-secrets.crypt $OPENSIMCONFIG/os-secrets.crypt ; do
if [[ -e "$secretsFile" ]] ; then
echo "opensim-docker: setEnvironment.sh: have secrets file \"{$secretsFile}\""
source <(ccrypt -c -E CONFIGKEY "$secretsFile")
HAVE_SECRETS=yes
break;
else
echo "opensim-docker: setEnvironment.sh: no 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/$CONFIG_NAME/os-secrets $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
@@ -10,24 +10,26 @@ CONFIG_NAME=${CONFIG_NAME:-standalone}
CONFIGDIR=${OPENSIMBIN}/config/${CONFIG_NAME}
cd "$CONFIGDIR"
source ../setEnvironment.sh
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
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"
# 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
if [[ -e "${CONFIGDIR}/misc.ini.prototype" ]] ; then
cp "${CONFIGDIR}/misc.ini.prototype" "${CONFIGDIR}/misc.ini"
fi
sed --in-place \
-e "s/MYSQL_DB_USER/$MYSQL_DB_USER/" \
-e "s/MYSQL_DB_SOURCE/$MYSQL_DB_SOURCE/" \
+8 -2
View File
@@ -6,8 +6,10 @@
# -- move sub-config specific Includes.ini into the config directory
# -- update all the configuration files with environment variables
OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
CONFIGDIR=${CONFIGDIR:-$OPENSIMBIN/config}
export OPENSIMBIN=${OPENSIMBIN:-/home/opensim/opensim/bin}
export CONFIGDIR=${CONFIGDIR:-$OPENSIMBIN/config}
echo "opensim-docker: setup.sh: CONFIGDIR=\"${CONFIGDIR}\""
FIRSTTIMEFLAG=${CONFIGDIR}/.configFirstTime
@@ -17,6 +19,7 @@ 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
@@ -29,9 +32,12 @@ fi
# after bin/OpenSimDefaults.ini and bin/OpenSim.ini
cd "$CONFIGDIR"
if [[ -e "${CONFIG_NAME}/Includes.ini" ]] ; then
echo "opensim-docker: setup.sh: Copying \"${CONFIG_NAME}/Includes.ini\""
cp "${CONFIG_NAME}/Includes.ini" .
fi
echo "opensim-docker: setup.sh: CONFIG_NAME=${CONFIG_NAME}"
# Do any update to configuration files that happens each start
# This updates bin/OpenSim.ini and Regions/*.ini with needed values
cd "$CONFIGDIR"
@@ -1,17 +1,24 @@
; 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/standalone-mysql/Regions"
regionload_regionsdir = "config/standalone-sql/Regions"
[Architecture]
Include-osslEnable = "config/standalone-mysql/config-include/osslEnable.ini"
Include-Architecture = "config/standalone-mysql/config-include/Standalone.ini"
Include-osslDefaultEnable = "config/standalone-sql/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/standalone-sql/config-include/osslEnable.ini"
Include-Architecture = "config/standalone-sql/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/standalone-mysql/config-include/StandaloneCommon.ini"
Include-Flotsam = "config/standalone-mysql/config-include/FlotsamCache.ini"
Include-Common = "config/standalone-sql/config-include/StandaloneCommon.ini"
Include-Flotsam = "config/standalone-sql/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/standalone-mysql/misc.ini"
Include-MiscConfig = "config/standalone-sql/misc.ini"
@@ -5,12 +5,12 @@
;;
[Modules]
AssetServices = "LocalAssetServicesConnector"
AssetServices = "RegionAssetConnector"
InventoryServices = "LocalInventoryServicesConnector"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "LocalGridServicesConnector"
GridServices = "RegionGridServicesConnector"
PresenceServices = "LocalPresenceServicesConnector"
UserProfilesServices = "LocalUserProfilesServicesConnector"
UserAccountServices = "LocalUserAccountServicesConnector"
@@ -37,6 +37,8 @@
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
; For RegionAssetConnector
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
[InventoryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"
@@ -10,14 +10,16 @@
; MySql
; Uncomment these lines if you want to use mysql storage
; Change the connection string to your db details
; 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;"
;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;"
;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
@@ -34,17 +36,9 @@
;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"
[Hypergrid]
; Uncomment the variables in this section only if you are in
; Uncomment the variable GatekeeperURI to enable
; 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 = "${Const|BaseURL}:${Const|PublicPort}"
;# {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
@@ -53,17 +47,32 @@
;; 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]
;; Choose one cache module and the corresponding config file, if it exists.
;; Copy the config .example file into your own .ini file and alter that
;; We recommend the use of the FlotsamAssetCache since this is most actively maintained.
;; Asset cache module.
;; Warning this is required for several region features
AssetCaching = "FlotsamAssetCache"
Include-FlotsamCache = "config-include/FlotsamCache.ini"
;AssetCaching = "CenomeMemoryAssetCache"
;Include-CenomeCache = "config-include/CenomeCache.ini"
;; Authorization is not on by default, as it depends on external php
;AuthorizationServices = "LocalAuthorizationServicesConnector"
@@ -100,15 +109,12 @@
;; Persistent When the simulator is shutdown, the region is signalled as offline but left registered on the grid.
;;
;; For example:
Region_Welcome_Area = "DefaultRegion, FallbackRegion"
Region_Welcome_Area = "DefaultRegion, DefaultHGRegion"
;; Allow supporting viewers to export content
;; Set to false to prevent export
ExportSupported = true
; === HG ONLY ===
;; If you have this set under [Hypergrid], no need to set it here, leave it commented
; GatekeeperURI="${Const|BaseURL}:${Const|PublicPort}"
[LibraryModule]
; Set this if you want to change the name of the OpenSim Library
@@ -116,10 +122,8 @@
[LoginService]
WelcomeMessage = "Welcome, Avatar!"
;; If you have Gatekeeper set under [Hypergrid], no need to set it here, leave it commented
; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"
SRV_HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
SRV_HomeURI = "${Hypergrid|HomeURI}"
SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}"
SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}"
SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}"
@@ -146,23 +150,30 @@
;; 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.
;; 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
;; 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
;;
;; 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.
;;
;; 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.
;; 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
@@ -248,6 +259,11 @@
; 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"
@@ -328,14 +344,8 @@
;; to block this info from being exposed.
; ShowUserDetailsInHGProfile = True
[HGInventoryService]
;; If you have this set under [Hypergrid], no need to set it here, leave it commented
; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
[HGAssetService]
;; If you have this set under [Hypergrid], no need to set it here, leave it commented
; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
;; 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:
@@ -349,10 +359,6 @@
; DisallowImport ="LSLBytecode"
[HGInventoryAccessModule]
;; If you have these set under [Hypergrid], no need to set it here, leave it commented
; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"
;; 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.
@@ -367,9 +373,7 @@
;LevelHGFriends = 0;
[Messaging]
; === HG ONLY ===
;; If you have this set under [Hypergrid], no need to set it here, leave it commented
; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"
[EntityTransfer]
;; User level from which local users are allowed to HG teleport. Default 0 (all users)
@@ -8,12 +8,12 @@
WorldMapModule = "HGWorldMap"
[Modules]
AssetServices = "HGAssetBroker"
AssetServices = "RegionAssetConnector"
InventoryServices = "HGInventoryBroker"
NeighbourServices = "NeighbourServicesOutConnector"
AuthenticationServices = "LocalAuthenticationServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "LocalGridServicesConnector"
GridServices = "RegionGridServicesConnector"
PresenceServices = "LocalPresenceServicesConnector"
UserAccountServices = "LocalUserAccountServicesConnector"
AgentPreferencesServices= "LocalAgentPreferencesServicesConnector"
@@ -53,7 +53,7 @@
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
; For HGAssetBroker
; For RegionAssetConnector
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
HypergridAssetService = "OpenSim.Services.Connectors.dll:HGAssetServiceConnector"
@@ -73,7 +73,6 @@
LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
[GridService]
; LocalGridServicesConnector needs this
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
Realm = "regions"
StorageProvider = "OpenSim.Data.Null.dll"
@@ -1,40 +1,44 @@
; Enable OSSL functions.
; Including this file in a region's set of INI files, causes the OpenSimulator
; specific functions to be enabled.
; See http://opensimulator.org/wiki/OSSL for a description of OSSL functions and
; refer to http://opensimulator.org/wiki/OSSL_Implemented for a list of functions.
; The below file lists all the functions and specifies who has permission to
; execute the function. Some of the functions are for maintainance or can be
; mis-used so the permission to execute a function can be limited. Ability to
; execute a function is based on the owner of the prim holding the script.
; local region changes for Enable OSSL functions.
; copy this file to osslEnable.ini, unless you already have one with local changes that are still valid for current opensim version.
; this file is included from osslDefaultEnable.ini file where defaults are defined, and allows to override them
; to not edit that file, copy the line you want to change to this file, then edit here
; see osslDefaultEnable.ini and
; http://opensimulator.org/wiki/Category:OSSL_Functions for a description of OSSL functions
; do not delete this line;
[OSSL]
; Allow the use of os* functions (some are dangerous)
AllowOSFunctions = true
; Allow the use of os* functions (some are always available)
;AllowOSFunctions = true
; Allow the user of mod* functions. This allows a script to pass messages
; to a region module via the modSendCommand() function and is used by some
; modules to extend the scripting language.
AllowMODFunctions = true
;AllowMODFunctions = true
; Allow the use of LightShare functions.
; The setting enable_windlight = true must also be enabled in the [LightShare] section.
AllowLightShareFunctions = true
;AllowLightShareFunctions = true
; Threat level to allow. One of None, VeryLow, Low, Moderate, High, VeryHigh, Severe.
; Send function permission error to owner if true, to all if false
;PermissionErrorToOwner = false
; Function Threat level
; Several functions have a predefined threat level, one of: None, VeryLow, Low, Moderate, High, VeryHigh, Severe.
; See http://opensimulator.org/wiki/Threat_level for more information on these levels.
; This is the default level and can be overridden with the Allow_ specifications.
; Blanket enabling the ossl functions is dangerous and we do not recommend setting higher
; than 'Low' unless you have a high level of trust in all the users that can run scripts
; in your simulator. It is safer to explicitly allow certain types of user to run
; higher threat level OSSL functions, as detailed later on.
; This setting defines the highest level allowed to execute
OSFunctionThreatLevel = VeryLow
; Some of the OSSL functions can be enabled or disabled individually.
; To disable, set the value to 'false'.
; To enable for everyone, set the value to 'true'.
; To enable for individuals or groups, set it to a comma separated list. This checks
; The threat level can be replaced by more detailed rules by lines of the form
; Allow_FunctionName = parameters
; To use the default threat level coment the respective line
; parameters can be:
; 'false' disables the function.
; 'true' enables for everyone
; or to enable for individuals or groups, set it to a comma separated list. This checks
; against the owner of the object containing the script.
; The comma separated entries in the list may be one of:
; "GRID_GOD" -- enable for users with UserLevel >= 200
@@ -63,229 +67,16 @@
; NPC macros
; These can be mis-used so limit use to those you can trust.
osslNPC = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
; The OSSL function name is prepended with "Allow_" and it checks against
; the owners of the containing prim. There can also be entries beginning with
; 'Creators_". The 'Creators_" parameters can only be a list of UUIDs and it is
; checked against the creator of the script itself.
; example
; Allow_osNpcCreate = ${OSSL|osslNPC}
; The threat level also can be replaced by lines of the form
; Creators__FunctionName = comma separated list of UUIDs
; this will enable the function for users that are the script creators and owners of the prim
; *************************************************
; ThreatLevel None
Allow_osGetAgents = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetAvatarList = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGender = true
Allow_osGetHealth = true
Allow_osGetHealRate = true
Allow_osGetNPCList = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetRezzingObject = true
Allow_osNpcGetOwner = ${OSSL|osslNPC}
Allow_osSetSunParam = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osTeleportOwner = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osWindActiveModelPluginName = true
; ThreatLevel Nuisance
Allow_osSetEstateSunSettings = ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetRegionSunSettings = ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel VeryLow
Allow_osEjectFromGroup = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceBreakAllLinks = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceBreakLink = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetWindParam = true
Allow_osInviteToGroup = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osReplaceString = true
Allow_osSetDynamicTextureData = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureDataFace = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureDataBlend = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureDataBlendFace = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureURL = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureURLBlend = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetDynamicTextureURLBlendFace = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetParcelMediaURL = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetParcelSIPAddress = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
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
Allow_osFormatString = true
Allow_osKey2Name = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osListenRegex = true
Allow_osLoadedCreationDate = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osLoadedCreationID = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osLoadedCreationTime = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osMessageObject = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osRegexIsMatch = true
Allow_osGetAvatarHomeURI = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osNpcSetProfileAbout = ${OSSL|osslNPC}
Allow_osNpcSetProfileImage = ${OSSL|osslNPC}
Allow_osDie = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel Moderate
Allow_osDetectedCountry = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osDropAttachment = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osDropAttachmentAt = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetAgentCountry = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGridCustom = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGridGatekeeperURI = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGridHomeURI = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGridLoginURI = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetGridName = true
Allow_osGetGridNick = true
Allow_osGetNumberOfAttachments = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetRegionStats = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetSimulatorMemory = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetSimulatorMemoryKB = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osMessageAttachments = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetSpeed = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetOwnerSpeed = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel High
Allow_osCauseDamage = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osCauseHealing = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetHealth = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetHealRate = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceAttachToAvatar = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceAttachToAvatarFromInventory = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceCreateLink = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceDropAttachment = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osForceDropAttachmentAt = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetLinkPrimitiveParams = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetPhysicsEngineType = true
Allow_osGetRegionMapTexture = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetScriptEngineName = true
Allow_osGetSimulatorVersion = true
Allow_osMakeNotecard = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osMatchString = true
Allow_osNpcCreate = ${OSSL|osslNPC}
Allow_osNpcGetPos = ${OSSL|osslNPC}
Allow_osNpcGetRot = ${OSSL|osslNPC}
Allow_osNpcLoadAppearance = ${OSSL|osslNPC}
Allow_osNpcMoveTo = ${OSSL|osslNPC}
Allow_osNpcMoveToTarget = ${OSSL|osslNPC}
Allow_osNpcPlayAnimation = ${OSSL|osslNPC}
Allow_osNpcRemove = ${OSSL|osslNPC}
Allow_osNpcSaveAppearance = ${OSSL|osslNPC}
Allow_osNpcSay = ${OSSL|osslNPC}
Allow_osNpcSayTo = ${OSSL|osslNPC}
Allow_osNpcSetRot = ${OSSL|osslNPC}
Allow_osNpcShout = ${OSSL|osslNPC}
Allow_osNpcSit = ${OSSL|osslNPC}
Allow_osNpcStand = ${OSSL|osslNPC}
Allow_osNpcStopAnimation = ${OSSL|osslNPC}
Allow_osNpcStopMoveToTarget = ${OSSL|osslNPC}
Allow_osNpcTouch = ${OSSL|osslNPC}
Allow_osNpcWhisper = ${OSSL|osslNPC}
Allow_osOwnerSaveAppearance = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osParcelJoin = ESTATE_MANAGER,ESTATE_OWNER
Allow_osParcelSubdivide = ESTATE_MANAGER,ESTATE_OWNER
Allow_osRegionRestart = ESTATE_MANAGER,ESTATE_OWNER
Allow_osRegionNotice = ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetProjectionParams = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetRegionWaterHeight = ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetStateEvents = false ; deprecated
Allow_osSetTerrainHeight = ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetTerrainTexture = ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetTerrainTextureHeight = ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel VeryHigh
Allow_osAgentSaveAppearance = ESTATE_MANAGER,ESTATE_OWNER
; Warning: The next function allows scripts to force animations on avatars without the user giving permission.
; Enabling this can allow forced animations which can trigger traumatic episodes in vulnerable populations.
; Similar things can be said for several of the 'force' functions. Enable with care and control.
; Some of these were added as early functionality for NPCs. This has been replaced with the NPC functions.
Allow_osAvatarPlayAnimation = false
Allow_osAvatarStopAnimation = false
Allow_osForceAttachToOtherAvatarFromInventory = false
Allow_osForceDetachFromAvatar = false
Allow_osForceOtherSit = false
; The notecard functions can cause a lot of load on the region if over used
Allow_osGetNotecard = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetNotecardLine = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osGetNumberOfNotecardLines = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osSetRot = false
Allow_osSetParcelDetails = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel Severe
Allow_osConsoleCommand = false
Allow_osGrantScriptPermissions = false
Allow_osKickAvatar = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osRevokeScriptPermissions = false
Allow_osTeleportAgent = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Allow_osTeleportObject = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel Severe with additional internal restrictions
Allow_osGetAgentIP = true ; always restricted to Administrators (true or false to disable)
Allow_osSetContentType = false
; add lines with our region local changes, below this to replace the default on osslDefaultEnable.ini or code.
; available functions out of Threat level control (for reference only)
; Allow_osAdjustSoundVolume = true
; Allow_osAngleBetween = true
; Allow_osApproxEquals = true
; Allow_osCheckODE = true
; Allow_osClearInertia = true
; Allow_osCollisionSound = true
; Allow_osDrawEllipse = true
; Allow_osDrawFilledEllipse = true
; Allow_osDrawFilledPolygon = true
; Allow_osDrawFilledRectangle = true
; Allow_osDrawImage = true
; Allow_osDrawLine = true
; Allow_osDrawPolygon = true
; Allow_osDrawRectangle = true
; Allow_osDrawResetTransform = true
; Allow_osDrawRotationTransform = true
; Allow_osDrawScaleTransform = true
; Allow_osDrawText = true
; Allow_osDrawTranslationTransform = true
; Allow_osGetCurrentSunHour = true
; Allow_osGetInertiaData = true
; Allow_osGetInventoryDesc = true
; Allow_osGetLinkNumber = true
; Allow_osGetMapTexture = true
; Allow_osGetPhysicsEngineName = true
; Allow_osGetPrimitiveParams = true
; Allow_osGetRegionSize = true
; Allow_osGetSunParam = true
; Allow_osGetTerrainHeight = true
; Allow_osGetDrawStringSize = true
; Allow_osIsNpc = true
; Allow_osIsUUID = true
; Allow_osLoopSound = true
; Allow_osLoopSoundMaster = true
; Allow_osLoopSoundSlave = true
; Allow_osMax = true
; Allow_osMin = true
; Allow_osMovePen = true
; Allow_osPlaySound = true
; Allow_osPlaySoundSlave = true
; Allow_osPreloadSound = true
; Allow_osRound = true
; Allow_osSetFontName = true
; Allow_osSetFontSize = true
; Allow_osSetInertia = true
; Allow_osSetInertiaAsBox = true
; Allow_osSetInertiaAsSphere = true
; Allow_osSetInertiaAsCylinder = true
; Allow_osSetPenCap = true
; Allow_osSetPenColor = true
; Allow_osSetPenSize = true
; Allow_osSetPrimitiveParams = true
; Allow_osSetSoundRadius = true
; Allow_osStopSound = true
; Allow_osStringSubString = true
; Allow_osStringStartsWith = true
; Allow_osStringEndsWith = true
; Allow_osStringIndexOf = true
; Allow_osStringLastIndexOf = true
; Allow_osStringRemove = true
; Allow_osStringReplace = true
; Allow_osTriggerSound = true
; Allow_osTriggerSoundLimited = true
; Allow_osVecDistSquare = true
; Allow_osVecMagSquare = true
; Allow_osVolumeDetect = true
@@ -3,11 +3,10 @@ version: '3'
services:
mysql:
dbservice:
# MySql version 8 requires a bunch of new security stuff. Stay with v5.
# image: mysql:5
image: mariadb:latest
# container_name: opensim-mysql
environment:
MYSQL_ROOT_PASSWORD:
# Parameters added to invocation.
@@ -22,8 +21,8 @@ services:
opensim:
depends_on:
- mysql
image: opensim-standalone
- dbservice
image: opensim-opensim
environment:
CONFIG_NAME:
CONFIGKEY:
@@ -36,5 +35,5 @@ services:
- 9010:9010/tcp
- 9010:9010/udp
links:
- mysql:mysql
- dbservice:dbservice
# restart: always
+7 -17
View File
@@ -3,8 +3,9 @@
[Startup]
MaxPoolThreads = 45
PhysicalPrimMax = 256
physics = BulletSim
; physics = ubODE
; physics = BulletSim
physics = ubODE
meshing = ubODEMeshmerizer
; physics = OpenDynamicsEngine
; CombineContiguousRegions = true
@@ -18,10 +19,12 @@
; 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_PASSWORD;Old Guids=true;"
ConnectionString = "Data Source=MYSQL_DB_SOURCE;Database=opensim;User ID=MYSQL_DB_USER;Password=MYSQL_DB_PASSWORD;Old Guids=true;"
[Estates]
; NOTE That names and passwords come from environment variables set from os-secrets
DefaultEstateName = DEFAULT_ESTATE_NAME
DefaultEstateOwnerName = DEFAULT_ESTATE_OWNER
; ** Standalone Estate Settings **
@@ -34,22 +37,9 @@
[Terrain]
SendTerrainUpdatesByViewDistance = true
[BulletSim]
; BulletEngine = BulletXNA
; VehicleLoggingEnabled = True
; VehicleDebuggingEnable = true
; VehiclePhysicalLoggingEnabled = True
; UseSeparatePhysicsThread = true ; orig = false
; PhysicsLoggingEnabled = True
; PhysicsLoggingDoFlush = True
; PhysicsLoggingDir = "../logs"
; PhysicsPhysicalDumpEnabled = True
; PhysicsUnmanLoggingFrames = 100
[ExtendedPhysics]
Enabled = true
[XEngine]
; If one uses XEngine, use a larger thread stack
ThreadStackSize = 500000
+13 -14
View File
@@ -1,7 +1,3 @@
# Copied from .. to supply defaults when just running a
# standalone copy. MAKE A NEW ONE if you are releasing an
# actual public service.
# File of secrets for the build and run images.
# This file is a template of the values to use.
# NEVER, NEVER EVER CHECK-IN the version with the real values!!
@@ -9,28 +5,31 @@
# 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:
# ccrypt -e -E CONFIGKEY < os-secrets > os-secrets.crypt
# cp os-secrets tempFile
# <edit 'tempFile' adding real passwords>
# ccrypt -e -E "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
# If this next variable is defined, MYSQL is configured
export MYSQL_ROOT_PASSWORD=kjiosdfasjdfanwenasd
export MYSQL_DB_SOURCE=mysql
export MYSQL_ROOT_PASSWORD=unknownStuff
export MYSQL_DB_SOURCE=dbservice
export MYSQL_DB_DB=opensim
export MYSQL_DB_USER=opensim
export MYSQL_DB_PASSWORD=aisdsdnxcmjl
export MYSQL_DB_USER_PASSWORD=moreUnknownStuff
export OPENSIM_USER=opensim
export OPENSIM_USER_PASSWORD=klajslkjsladfiouw
export OPENSIM_USER_PASSWORD=unknownPassword
# The following are used to initialize estate if running standalone
export DEFAULT_ESTATE_NAME="Donalds Estate"
export DEFAULT_ESTATE_OWNER="Donald Duck"
export PW_FOR_DEFAULT_ESTATE_OWNER=aoisdufaeras
export PW_FOR_DEFAULT_ESTATE_OWNER=anotherUnknownPassword
# Flag used to know if secrest are set
export HAVE_SECRETS=true
# Did I mention that one should NEVER, NEVER, EVER checkin a version
# Did I mention that one should NEVER, NEVER, EVER check-in a version
# with the real passwords in it?
@@ -2,7 +2,7 @@ version: '3'
services:
opensim:
image: opensim-standalone
image: opensim-opensim
environment:
CONFIGKEY:
+2 -1
View File
@@ -4,7 +4,8 @@
MaxPoolThreads = 45
PhysicalPrimMax = 256
; physics = BulletSim
; physics = ubODE
physics = ubODE
meshing = ubODEMeshmerizer
; physics = OpenDynamicsEngine
; CombineContiguousRegions = true
+3 -3
View File
@@ -7,16 +7,16 @@
# "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 "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 "CONFIGKEY" < os-secrets.crypt
# If this next variable is defined, MYSQL is configured
#export MYSQL_ROOT_PASSWORD=ksdjfalkcxviowerw
#export MYSQL_ROOT_PASSWORD=unknownStuff
export MYSQL_DB_SOURCE=localhost
export MYSQL_DB_DB=opensim
export MYSQL_DB_USER=opensim
+2 -2
View File
@@ -33,6 +33,7 @@ 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=./docker-compose.yml
if [[ -e "config/$CONFIG_NAME/docker-compose.yml" ]] ; then
@@ -51,5 +52,4 @@ docker-compose \
--project-name opensim-standalone \
--project-directory "$BASE" \
up \
-d \
opensim
--detach
-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
+3 -1
View File
@@ -32,7 +32,9 @@ if [[ ! -e "$FIRSTTIMEFLAG" ]] ; then
fi
# Start Opensim
echo "Starting OpenSimulator version $(cat $VERSIONDIR/OS_VERSION) with opensim-docker version $(cat $VERSIONDIR/OS_DOCKER_IMAGE_VERSION)"
echo "Starting OpenSimulator version $(cat $VERSIONDIR/OS_VERSION)"
echo " with opensim-docker version $(cat $VERSIONDIR/OS_DOCKER_IMAGE_VERSION)"
echo " using configuration set \"$CONFIG_NAME\""
cd "$OPENSIMHOME"
./run.opensim.sh