ROBUST

もとちゃ

2012年07月21日 17:06


いよいよROBUSTの設定です。

追加: 新しいOpenSimのバージョンで設定書類の一部が変更になったようです。(注)を参照してください。

opensim/binを覗いてみるとRobustという名前のついたファイルがいくつかあることがわかります。

Robust.32BitLaunch.exe
Robust.32BitLaunch.exe.config
Robust.HG.ini.example
Robust.exe
Robust.exe.config
Robust.ini.example

このうちいまここで関係あるのは実行ファイルRobust.exe(64ビット環境ならRobust.32BitLaunch.exe)とRobust.HG.ini(.example)だけです。
(Robust.ini(.example)はハイパーリンクなしにグリッドモードで立ち上げるときに使います。)

例によって.exampleファイルをコピーしてRobust.HG.iniを作成してください。中身を見るとつぎのようになっているはずです。

; * Run
; * $ Robust.exe -inifile Robust.HG.ini
; *

; * Configurations for enabling HG1.5
; *
; * HG1.5 handlers are: OpenSim.Server.Handlers.dll:GatekeeperService
; * OpenSim.Server.Handlers.dll:UserAgentService
; * Additional OpenSim.Server.Handlers.dll:AssetServiceConnector and
; * OpenSim.Server.Handlers.dll:XInventoryInConnector
; * are started in port 8002, outside the firewall
; *
; * The startup section lists all the connectors to start up in this server
; * instance. This may be only one, or it may be the entire server suite.
; * Multiple connectors should be separated by commas.
; *
; * These are the IN connectors the server uses, the in connectors
; * read this config file and load the needed service and database connectors
; *
; * The full syntax of a connector string is:
; * [[@]/][:]
; *
[Startup]
ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,HGAssetService@8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector,8002/OpenSim.Server.Handlers.dll:HGFriendsServerConnector,8002/OpenSim.Server.Handlers.dll:InstantMessageServerConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector"

; * This is common for all services, it's the network setup for the entire
; * server instance, if none is specified above
; *
[Network]
port = 8003

; HTTPS for "Out of band" management applications such as the remote admin
; module. May specify https_main = True to make the main http server
; use https or "False" to make the main server HTTP
; https_main = False
;
; Create https_listener = "True" will create a listener on the port
; specified. Provide the path to your server certificate along with it's
; password
; https_listener = False
;
; Set our listener to this port
; https_port = 0
;
; Path to X509 certificate
; cert_path = "path/to/cert.p12"
;
; Password for cert
; cert_pass = "password"


; * The following are for the remote console
; * They have no effect for the local or basic console types
; * Leave commented to diable logins to the console
;ConsoleUser = Test
;ConsolePass = secret
;ConsolePort = 0

[DatabaseService]
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;Old Guids=true;"

; * As an example, the below configuration precisely mimicks the legacy
; * asset server. It is read by the asset IN connector (defined above)
; * and it then loads the OUT connector (a local database module). That,
; * in turn, reads the asset loader and database connection information
; *
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
AssetLoaderArgs = "./assets/AssetSets.xml"

; * This configuration loads the inventory server modules. It duplicates
; * the function of the legacy inventory server
; *
[InventoryService]
LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"

; * This is the new style grid service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "regions", which uses the legacy tables
; *
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
HypergridLinker = true

; Realm = "regions"
; AllowDuplicateNames = "True"

;; Perform distance check for the creation of a linked region
; Check4096 = "True"

;; Needed to display non-default map tile images for linked regions
AssetService = "OpenSim.Services.AssetService.dll:AssetService"

;; Directory for map tile images of linked regions
; MapTileDirectory = "./maptiles"

;; Next, we can specify properties of regions, including default and fallback regions
;; The syntax is: Region_ = ""
;; or: Region_ = ""
;; where can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut,Reservation,NoMove,Authenticate
;; For example:
; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
; (replace spaces with underscore)

; * This is the configuration for the freeswitch server in grid mode
[FreeswitchService]
LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"

;; The IP address of your FreeSWITCH server.
;; 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

; * This is the new style authentication service. Currently, only MySQL
; * is implemented.
; *
[AuthenticationService]
; for the server connector
LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
; Realm = "useraccounts"

;; Allow the service to process HTTP getauthinfo calls.
;; Default is false.
; AllowGetAuthInfo = false

;; Allow the service to process HTTP setauthinfo calls.
;; Default is false.
; AllowSetAuthInfo = false

;; Allow the service to process HTTP setpassword calls.
;; Default is false.
; AllowSetPassword = false

[OpenIdService]
; for the server connector
AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"

; * This is the new style user service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "useraccounts", which uses the new style.
; * Realm = "users" will use the legacy tables as an authentication source
; *
[UserAccountService]
; for the server connector
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
; Realm = "useraccounts"

; These are for creating new accounts by the service
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
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 for a newly created user.
;; Default is false
; CreateDefaultAvatarEntries = false

;; Allow the service to process HTTP createuser calls.
;; Default is false.
; AllowCreateUser = false

;; Allow the service to process HTTP setaccount calls.
;; Default is false.
; AllowSetAccount = false


[GridUserService]
; for the server connector
LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"

[PresenceService]
; for the server connector
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"

[AvatarService]
; for the server connector
LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"

[FriendsService]
; for the server connector
LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"

[LibraryService]
LibraryName = "OpenSim Library"
DefaultLibrary = "./inventory/Libraries.xml"

[LoginService]
; for the server connector
LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
; for the service
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
GridService = "OpenSim.Services.GridService.dll:GridService"
SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"

;; Ask co-operative viewers to use a different currency name
;Currency = ""

WelcomeMessage = "Welcome, Avatar!"
AllowRemoteSetLoginLevel = "false"

; For V2 map
MapTileURL = "http://127.0.0.1:8002";

; If you run this login server behind a proxy, set this to true
; HasProxy = false

; Defaults for the users, if none is specified in the useraccounts table entry (ServiceURLs)
; CHANGE THIS
GatekeeperURI = "http://127.0.0.1:8002"

SRV_HomeURI = "http://127.0.0.1:8002"
SRV_InventoryServerURI = "http://127.0.0.1:8002"
SRV_AssetServerURI = "http://127.0.0.1:8002"
SRV_ProfileServerURI = "http://127.0.0.1:8002"
SRV_FriendsServerURI = "http://127.0.0.1:8002"
SRV_IMServerURI = "http://127.0.0.1:8002"

;; 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 = ""

[MapImageService]
LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
; Set this if you want to change the default
; TilesStoragePath = "maptiles"

[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 = http://127.0.0.1:8002/

; 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
;welcome = http://127.0.0.1/welcome

; helper uri: optional: if it exists if will be used to tell the client to use
; this for all economy related things
;economy = http://127.0.0.1:8002/

; web page of grid: optional: page providing further information about your grid
;about = http://127.0.0.1/about/

; account creation: optional: page providing further information about obtaining
; a user account on your grid
;register = http://127.0.0.1/register

; help: optional: page providing further assistance for users of your grid
;help = http://127.0.0.1/help

; password help: optional: page providing password assistance for users of your grid
;password = http://127.0.0.1/password

[GatekeeperService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
;; for the service
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
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"
; how does the outside world reach me? This acts as public key too.
; CHANGE THIS
ExternalName = "http://127.0.0.1:8002"

; 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

; If you run this gatekeeper server behind a proxy, set this to true
; HasProxy = false

;; 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 = ""

[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"

; If you run this user agent server behind a proxy, set this to true
; HasProxy = false

;; If you separate the UserAgentService from the LoginService, set this to
;; the IP address of the machine where your LoginService is
;LoginServerIP = "127.0.0.1"

; * The interface that local users get when they are in other grids.
; * This restricts the inventory operations while in other grids.
; * Still not completely safe, especially if users perform inventory operations
; * while in those grids. The more the user accesses his/her inventory, the more
; * those simulators will know about the user's inventory.
; *
[HGInventoryService]
; For the InventoryServiceInConnector
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGInventoryService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
HomeURI = "http://127.0.0.1:8002"

; * The interface that local users get when they are in other grids.
; * This restricts the access that the rest of the world has to
; * the assets of this world.
; *
[HGAssetService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
HomeURI = "http://127.0.0.1:8002"

[HGFriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"

; * the assets of this world.
; *
[HGAssetService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountSe
rvice"
HomeURI = "http://127.0.0.1:8002"

[HGFriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"

[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"
; This should always be true in the Robust config
InGatekeeper = True

[Messaging]
; If you have an Offline IM server, set the vars in this section, so that
; incomming IMs to local users from foreign grids can be saved
;
;# {OfflineMessageURL} {OfflineMessageModule:OfflineMessageModule} {URL of offline messaging service} {}
;; URL of web service for offline message storage
; OfflineMessageURL = http://yourserver/Offline.php

;; Control whether group messages are forwarded to offline users.
;; Default is true.
;; This applies to the core groups module (Flotsam) only.
; ForwardOfflineGroupMessages = true


OpenSim.ini以上に長い設定書類です^^
サービスコネクターの部分には22個ほど名前が並んでいます。これだけの数のサーバーをこの書類ひとつで管理するわけですね。
まず最初にデータベースの部分を修正しておきましょう。

[DatabaseService]
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;Old Guids=true;"

上のDatabase=opensim;User ID=opensim;Password=*****;の部分にGridCommon.iniでやったように使用するMySQLのデータベース名、ユーザー名、パスワードをそれぞれいれてください。

つぎに書類のなかの青色のリンクで示した箇所(19箇所あるはずです)をすべてあなたのサーバーのIPアドレス(あるいはドメインネーム)に書き換えてください。(中にはコメントアウトされていて必ずしも書き換える必要のない部分もありますが、エディターで置換するなら一括でやってしまったほうが手間はかからないでしょう)

たとえば

; For V2 map
MapTileURL = "http://127.0.0.1:8002";

を以下のように書き換えます。

; For V2 map
MapTileURL = "http://motochagrid.luna.ddns.vc:8002";

すべて終わったらwqで保存します。

これでROBUSTを立ち上げる用意ができました。(注)

起動するときはたとえばbinディレクトリで
mono ./Robust.exe -inifile=Robust.HG.ini
とコマンドに打ち込みます。



この待ち受け画面(R.O.B.U.S.T.# でプロンプト点滅)になれば起動は成功です。

注: 新しいOpenSimバージョンのRobust.HG.iniでは以下のような新しい項目ができています。

[Hypergrid]
;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
;; This is the address of the external robust server that
;; runs the UserAgentsService, possibly this server.
;; For example http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
; HomeURI = "http://127.0.0.1:8002"

;# {GatekeeperURI} {Hypergrid} {The URL of the gatekeeper of this world} {}
;; This is the address of the external robust server
;; that runs the Gatekeeper service, possibly this server.
;; For example http://myworld.com:8002
;; This is a default that can be overwritten in some sections.
; GatekeeperURI = "http://127.0.0.1:8002"

このうち

; HomeURI = "http://127.0.0.1:8002"

; GatekeeperURI = "http://127.0.0.1:8002"

の二カ所のコメントをはずしてください。(ただしURL=127.0.0.1の部分はあなたのサーバーの外部IPアドレスになっていなければいけません)
そうしないとROBUSTを立ち上げたとき赤字のエラー文がでてしまうはずです。(追記 2014. 10.11)


OpenSim(オープンシム)