OpenSim Installiamo una grid parte 1/3: Nuove istruzioni per "esperti": come configurare una grid (0.7.1.1)...
Articolo originalmente pubblicato qui: http://virtualworldsmagazine.wordpress.com/2011/07/15/opensim-nuove-istruzioni-per-esperti-come-configurare-una-grid-0-7-1-1/
Abbiamo pubblicato ad inizio anno alcune guide per consentire a persone anche relativamente digiune di programmazione di configurare/installare 1/4 sim ed eventualmente collegarle al mondo esterno o ad altre grid. Queste guide erano caratterizzate dall'essere abbastanza veloci e consentire la creazione di una regione in pochi minuti.
Perchè creare una grid invece di Sim Isolate?
Per coloro di voi un pochino più coraggiosi, spieghiamo ora come installare una intera Grid, cosa che può essere necessaria ed utile se volete utilizzare OpenSim in una struttura commerciale o in una scuola o istituto, o in una Università dove sia necessario configurare più di 1-4 regioni. E dove magari è necessario evitare che intrusi possano entrare, oppure ancora se voleste proprio dare vita ad una struttura di hosting di sim indipendenti (pare che sia uno sport abbastanza diffuso negli ultimi tempi, anche se a me sembra che non ne valga la pena :) ). Uno dei motivi seri per cui si costruisce una grid anzichè un insieme di sim standalone è il fatto di poter suddividere il carico su più computer distinti. Se ad esempio voleste creare una struttura con 50 sim, sarebbe un po' un suicidio crearle e caricarle su un'unica macchina, molto meglio suddividere il carico su un gruppo di computer che cooperano in modo da avere ad esempio una macchina "Robust" che mantiene l'infrastruttura della grid (Inventory, Identity, ecc), e distribuire le sim ad esempio mettendone due per macchina. (D'altronde la stessa Linden Lab di solito ospita su una macchina fisica UNA SOLA sim, ad eccezione delle HomeStead che vengono ospitate non più di 4 per macchina fisica). Rispetto ad una architettura HG (Hypergrid) abbiamo anche il vantaggio che possiamo tenere sotto controllo l'identità di chi si registra ed usa le nostre sim, e di poter appoggiare un sito web per la gestione delle identità. La grid di solito riesce anche a garantire quei servizi professionali che oramai sono essenziali in un mondo virtuale che voglia poter essere utilizzato seriamente, come ad esempio il servizio di gestione dei gruppi, un modulo "Money" per gestire acquisti interni, e soprattutto il modulo "Voce". 
Struttura di questi Tutorial.
Per rendere meno ostico l'argomento separeremo i vari argomenti in diversi articoli, di cui questo è il primo:
- Prima parte: la grid base (questo articolo)
- Seconda parte: installiamo interfaccia web e i gruppi/profili
- Terza parte: installiamo il voice (freeswitch)
Ingredienti di base Hardware:
Installiamo il S.O. e gli strumenti prerequisiti (MYSQL, APACHE, MONO)
sudo apt-get updatesudo apt-get upgradesudo apt-get install mono-completesudo apt-get install mysql-serversudo apt-get install phpmyadmin
Le prime due servono per avere il repository dei programmi di apt-get allineato, la 3a installa mono che è il motore che ci serve. Le altre due installano il gestore del database e l'interfaccia web (comprensiva di php, apache). Durante l'installazione di mysql-server vi viene chiesta la "pwd" di root del database. Ricordatevi di trascriverla da qualche parte. Durante l'installazione di phpmyadmin vi viene chiesto di installare apache2 (mettete con la barra spaziatrice il baffo sulla prima opzione e poi tab invio per confermare), poi vi viene chiesta la pwd di root che avete dato a mysql-server e infine una nuova pwd di amministrazione di phpmyadmin (io metto admin/admin). Per le altre eventuali richieste accettate il default. Quando avete terminato andate sul vostro server con phpmyadmin (http://<vostroip>/phpmyadmin), specificate root e pwd di root già definite. Andate su privileges e create un utente opensim accessibile localmente con pwd opensim (o altra) e specificate di creare un database con lo stesso nome dove l'utente ha tutti i privilegi. 
Installazione e configurazione di Robust
A questo punto quello che vi rimane da fare è di scaricare la versione binaria di OpenSim da qui: http://opensimulator.org/wiki/Download, attualmente la 0.7.1.1, la scaricate con wget o dal browser e la scompattate. Poi dovete andare nella cartella bin da un terminale e copiate Robust.ini.example in Robust.ini e cambiate le impostazioni del db ed eventualmente la presentazione della vostra grid.
[DatabaseService]
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;Old Guids=true;"
[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:9000/
; 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:9000/
; 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
A questo punto basta che lanciate "mono Robust.exe" e verifichiate che non ci siano errori... Ricordatevi di creare un utente con "create user" e registratevi i suoi dati che serviranno quando aggiungerete la PRIMA SIM.
Lanciamo la nostra prima sim associata alla grid
Da un altro terminale andate sempre nella cartella bin e modificate il file OpenSim.ini e cambiate l'architettura:
[Architecture]
; Include-Architecture = "config-include/Standalone.ini"
; Include-Architecture = "config-include/StandaloneHypergrid.ini"
Include-Architecture = "config-include/Grid.ini"
; Include-Architecture = "config-include/GridHypergrid.ini"
; Include-Architecture = "config-include/SimianGrid.ini"
; Include-Architecture = "config-include/HyperSimianGrid.ini"
Deve rimanere senza il ; solo il pezzo che indica Grid.ini. Dopo di che andate su config-include/GridCommon.ini (ricopiatelo da GridCommon.ini.example se manca) cambiando tutti i riferimenti dove leggete :8003 in modo che si legga chiaramente l'IP di dove avete messo Robust. Attenzione che vi sono tanti di questi quindi cercate 8003 senza dimenticarvene nessuno.
[AssetService]
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
AssetLoaderArgs = "assets/AssetSets.xml"
;
; change this to your grid-wide asset server
;
AssetServerURI = "http://78.47.22.111:8003"
A questo punto basta che lanciate questa prima sim con "mono OpenSim.exe". La prima volta che la lanciate vi chiede un insieme di domande a cui dovrete rispondere. Le uniche cose importanti sono:
- Il nome della regione che create
- L'IP esterno della regione che dovrà coincidere con quello dove sta la sim
- L'estate manager user che deve coincidere per la prima sim con quello fornito a robust
OpenSim: installiamo una grid. Parte 2/3: sito web e gruppi
L'accesso wifi alla nostra grid
Articolo originalmente pubblicato qui: http://virtualworldsmagazine.wordpress.com/2011/07/17/opensim-installiamo-una-grid-parte-seconda-sito-web-e-gruppi/
Come vi avevo promesso nel mio primo articolo http://virtualworldsmagazine.wordpress.com/2011/07/15/opensim-nuove-istruzioni-per-esperti-come-configurare-una-grid-0-7-1-1/ ora proviamo ad arricchire la nostra grid “nuda” con due caratteristiche secondo me essenziali per una grid ma che NON sono parte essenziali della installazione di base di OpenSim:
- L’interfaccia web (anche detta wifi) “Web Interface for… I”, sviluppata da Diva Canto, che consente di fare le seguenti attività:
- Creazione di utenti, controllati dall’amministratore
- Possibilità di definire degli avatar di default per i nuovi account
- Consente l’aggiornamento degli account sia agli utenti che all’amministratore
- Consente la cancellazione di utenti
- Consente il recupero della password via email
- Consente un accesso limitato all’inventory dell’utente
- Definisce una pagina web di benvenuto
- La gestione dei gruppi (ottenuta usando un componente che si chiama XmlRpcGroup), che consente una elementare gestione dei gruppi e dei messaggi offline.
1. Parte Prima: installiamo Wifi.
- bin con alcune dll specifiche di wifi
- doc con documentazione di wifi
- wifipages con le pagine di gestione html
[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/Diva.Wifi.dll:WifiServerConnector"
[WifiService]
GridName = "My World"
LoginURL = "http://<il tuo ip>:8002"
WebAddress = "http://<il tuo ip>:8002"
....
A questo punto dovete rilanciare (107) il servizio Robust ed essere in grado di lanciare wifi (108) accedendo a http://<iltuoip>:8002/wifi Al primo lancio dovete (109) cliccare su “INSTALL WIFI” in alto a dx della maschera dopo di che dovete inserire la pwd dell’amministratore per poter avere un avatar di gestione. (110) Create gli avatar “template” da amministratore chiamandoli “Male Avatar” “Female Avatar” “Neutral Avatar” in modo da offrire a chi entra degli inventory e delle apparenze già precostituite. E ok, avete installato wifi….
2. Installazione dei gruppi
La struttura dei gruppi con XmlRpc
Per installare i gruppi dovete scaricarvi invece il seguente tar.gz da questo sito (201):
https://github.com/mcortez/flotsam/tarball/master rinominate il file scaricato (se già non lo ha in modo da terminare con .tar.gz), (202) spacchettatelo.
(203) E ricopiate nel server la cartella “mcortez-flotsam-963d99e\flotsam\Servers\XmlRpcGroupsServer” dentro la root del vostro server http (su ubuntu sotto /var/www) chiamandola ad esempio (204) “groups” accertatevi di modificare le permissions (204a) chmod o il proprietario chown in modo che il server apache sia in grado di leggere e scrivere questi file.
Create un database per gestire i gruppi e i messaggi offline:
con la tecnica suggerita dall’articolo precedente, andate in (205) http://<vostroip>/phpmyadmin, specificate la pwd di root del db mysql e su privilegi (206) create un utente opensim_group con pwd opensim_group e creategli il db corrispondente.
A questo punto dovete modificare due file:
il file sotto /var/www/groups/config.php.example (copiatelo come config.php) in modo da essere (207):
<?php
$dbName = "opensim_group";
$dbHost = "localhost";
$dbPort = 3306;
$dbUser = "opensim_group";
$dbPassword ="opensim_group";
// Set to 0 for no debugging, 1 for essential debugging, 2 for more information.
$debugXMLRPC = 2;
$debugXMLRPCFile = "xmlrpc.log";
//////////////////////////////
//// Group security
/////////////////////
// A xmlrpc client must have this key to commit changes to the Groups DB
// Leave blank to allow all clients to make changes.
$groupWriteKey = '1234';
$groupReadKey = '1234';
Dove sostituite l’eventuale (208) database nome utente e password se per caso non avete usato questi… (209) E se volete anche le chiavi di accesso sostituendo il PIN ovvio 1234.
Poi proseguite modificando il vostro file OpenSim.ini cancellando la impostazione vecchia della stanza [Groups] e mettendo invece la seguente (210):
[Groups]
;# {Enabled} {} {Enable groups?} {true false} false
;; Enables the groups module
Enabled = true
;# {Module} {Enabled:true} {Groups module to use? (Use GroupsModule to use Flotsam/Simian)} {} Default
;; This is the current groups stub in Region.CoreModules.Avatar.Groups.
;; All the other settings below only really apply to the Flotsam/SimianGrid
;; GroupsModule.
;; This module can use a PHP XmlRpc server from the Flotsam project at
;; http://code.google.com/p/flotsam/
;; or from the SimianGrid project at http://code.google.com/p/openmetaverse
Module = GroupsModule
;# {MessagingEnabled} {Module:GroupsModule} {Is groups messaging enabled?} {true false} true
;MessagingEnabled = true
;# {MessagingModule} {MessagingEnabled:true} {Module to use for groups messaging} {GroupsMessagingModule} GroupsMessagingModule
MessagingModule = GroupsMessagingModule
;# {ServicesConnectorModule} {Module:GroupsModule} {Service connector to use for groups} {XmlRpcGroupsServicesConnector SimianGroupsServicesConnector} XmlRpcGroupsServicesConnector
;; Service connectors to the Groups Service as used in the GroupsModule. Select one depending on
;; whether you're using a Flotsam XmlRpc backend or a SimianGrid backend
ServicesConnectorModule = XmlRpcGroupsServicesConnector
;# {GroupsServerURI} {Module:GroupsModule} {Groups Server URI} {}
;; URI for the groups services
;; e.g. http://yourxmlrpcserver.com/xmlrpc.php for Flotsam XmlRpc
;; or http://mygridserver.com:82/Grid/ for SimianGrid
GroupsServerURI = "http://localhost/groups/xmlrpc.php"
;# {NoticesEnabled} {Module:GroupsModule} {Enable group notices?} {true false} true
;; Enable Group Notices
; NoticesEnabled = true
;; This makes the Groups modules very chatty on the console.
DebugEnabled = true
;; XmlRpc Security settings. These must match those set on your backend
;; groups service if the service is using these keys
XmlRpcServiceReadKey = 1234
XmlRpcServiceWriteKey = 1234
Attenzione a inserire esattamente questa configurazione: io ho perso un sacco di tempo cercando di modificare la versione di base di OpenSim.ini.
Ora potete rilanciare il vostro OpenSim.exe ed entrando inworld avrete i vostri bravi gruppi funzionanti.
Cosa c’è dopo?
Come promesso, nel prossimo articolo illustreremo come configurare l’ultimo elemento per dare professionalità alla vostra grid: il voce. Ricordate che una grid si può installare in infiniti modi, usando differenti add-on, noi abbiamo usato quelli suggeriti dal sito opensim.org, in particolare seguendo le guide in inglese a queste pagine:
http://opensimulator.org/wiki/Wifi
http://opensimulator.org/wiki/Enabling_Groups
Ma amministratori esperti possono caricare degli add-on integrati con i principali sistemi di gestione di contenuti CMS come ad esempio JOOMLA, XOOPS, MOODLE.
Non vi spiego come configurare i moduli per questi CMS, per questo ci sono amministratori esperti.
Vi aspettiamo alla prossima puntata dove installeremo FreeSwitch…
Salahzar
OpenSim: Installiamo una grid. Parte 3/3: la voce…

Rieccoci 
Articolo originariamente pubblicato qui: http://virtualworldsmagazine.wordpress.com/2011/08/06/opensim-installiamo-una-grid-parte-iii-la-voce/
Ed ecco finalmente la terza parte del nostro trittico su come costruire una grid opensim professionale. Dopo avere descritto nei due articoli precedenti:
- http://virtualworldsmagazine.wordpress.com/2011/07/15/opensim-nuove-istruzioni-per-esperti-come-configurare-una-grid-0-7-1-1/
- http://virtualworldsmagazine.wordpress.com/2011/07/17/opensim-installiamo-una-grid-parte-seconda-sito-web-e-gruppi/
Ecco la guida:
Questa procedura è valida per UBUNTU con versione opensim 0.7.2 dev r. 16203 (NB: io l’ho provata con una 0.7.1 ufficiale)
e configurazione per usare freeswitch come servizio di grid .Luglio 15 , 2011 Andrea Arbizu ( contatto skype : andreapiero.hotmail.it )
PREPARAZIONE DELL’AMBIENTE
apt-get update apt-get install -y autoconf automake libtool build-essential subversion libxml2 apt-get install -y libxml2-dev libtiff4 libtiff4-dev php5 php5-cli apt-get install -y php5-common php5-mcrypt php5-mysql php5-gd php5-pgsql php-pear php-db apt-get install -y libmysqlclient16-dev curl sox libssl-dev libncurses5-dev bison apt-get install -y libaudiofile-dev libnewt-dev libcurl4-gnutls-dev apt-get install -y libnet-ssleay-perl openssl ssl-cert libauthen-pam-perl apt-get install -y libio-pty-perl apt-get install -y libpg-perl libdbd-pg-perl sqlite3 apt-get install -y libsqlite3-dev apt-get install -y libapache2-mod-php5 libmcrypt-dev
INSTALLAZIONE DI FREESWITCH
cd /usr/local/src
- download, compilazione e installazione del Git di freeswitch
apt-get install -y git git clone git://git.freeswitch.org/freeswitch.git cd freeswitch cd build cp modules.conf.in modules.conf vi modules.conf
individuare la riga:
#codecs/mod_siren
e levare il # (da me era già scommentata)
individuare la riga
#xml_int/mod_xml_curl (OK) e levare il # salvare il file (con vi esc:wq) cd .. AUTOCONF=/usr/bin/autoconf ./bootstrap.sh attendere una decina di minuti sino al termine dell ‘ operazione. (a me meno di 5 minuti) ./configure --prefix=/usr/local/freeswitch attendere il termine (5 minuti pieni) make attendere il termine. (20 minuti pieni) make install make mod_siren-install make mod_xml_curl-install notare che i due comandi successivi vanno ripetuti due volte non e’ un errore!! make sounds-install make sounds-install make moh-install make moh-install make samples
CONFIGURAZIONE FREESWITCH
- Configurazione di Freeswitch per opensim
supponiamo che il nostro server sia connesso ad internet con un IP pubblico del tipo: 192.111.222.33
supponiamo che non esista alcun firewall che limita alcunche ne in ingresso ne in uscita.
cd /usr/local/freeswitch/conf/autoload_configs/ vi modules.conf.xml individuare la riga: <!– <load module=”mod_xml_curl”/> –> e sostituirla con: <load module=”mod_xml_curl”/> individuare la riga: <!–<load module=”mod_siren”/>–> (a me non era commentata) e sostituirla con: <load module=”mod_siren”/> salvare il file (esc:wq) cd /usr/local/freeswitch/conf/autoload_configs vi xml_curl.conf.xml posizionarsi sotto la riga: <binding name=”example”> cancellare tutte le righe (premendo dd piu volte su vi) (dG cancella tutto se si è sulla prima riga) e sostituire con: <configuration name="xml_curl.conf" description="cURL XML Gateway"> <bindings> <binding name="example"> <param name="gateway-url" value="http://192.111.222.33:8004/fsapi/freeswitch-config" bindings="directory"/> <param name="disable-100-continue" value="true"/> </binding> <binding name="local"> <param name="gateway-url" value="http://192.111.222.33:8004/fsapi/freeswitch-config" bindings="dialplan"/> <param name="disable-100-continue" value="true"/> </binding> </bindings> </configuration>
(al posto di 192.111.222.33 va messo l’ip pubblico del server dove gira opensim.).
salvare il file.
AVVIO FREESWITCH IN UNO SCREEN
- Avvio di Freeswitch
screen –S Voice screen –r Voice (????) da me questo da errore cd /usr/local/freeswitch/bin/ ./freeswitch ignorare qualunque messaggio o errore più o meno colorato 2011-08-07 06:34:03.782163 [NOTICE] switch_utils.c:248 Adding 192.0.2.0/24 (allow) [ Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo. ] to list domains 2011-08-07 06:34:03.782208 [CONSOLE] switch_core.c:1839 _____ ______ _____ _____ ____ _ _ | ___| __ ___ ___/ ___\ \ / /_ _|_ _/ ___| | | | | |_ | '__/ _ \/ _ \___ \\ \ /\ / / | | | || | | |_| | | _|| | | __/ __/___) |\ V V / | | | || |___| _ | |_| |_| \___|\___|____/ \_/\_/ |___| |_| \____|_| |_| ************************************************************ * Anthony Minessale II, Michael Jerris, Brian West, Others * * FreeSWITCH (http://www.freeswitch.org) * * Paypal Donations Appreciated: Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo. * * Brought to you by ClueCon http://www.cluecon.com/ * ************************************************************ 2011-08-07 06:34:03.782215 [CONSOLE] switch_core.c:1842 FreeSWITCH Version 1.0.head (git-b952b2b 2011-08-04 19-53-18 +0200) Started. Max Sessions[1000] Session Rate[30] SQL [Enabled] freeswitch@opensim> e detachare screen control+maiuscolo a control+maiuscolo d CONFIGURAZIONE ROBUST e OPENSIM
Editare il file Robust.ini sezione Freeswitch :
[FreeswitchService] LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService" ;; The IP address of your FreeSWITCH server. ;; This address must be reachable by viewers. ServerAddress = 192.111.222.33 (al posto di 192.111.222.33 va messo l’ip pubblico del server dove gira robust.). - Configurazione di Opensim editare il file OpenSim.ini nella sezione FreeSwitchVoice [FreeSwitchVoice] ;; In order for this to work you need a functioning FreeSWITCH PBX set up. ;; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module Enabled = true ;; You need to load a local service for a standalone, and a remote service ;; for a grid region. Use one of the lines below, as appropriate ;; If you're using Freeswitch on a standalone then you will also need to configure the [FreeswitchService] section in config-include/StandaloneCommon.ini ;; LocalServiceModule = OpenSim.Services.FreeswitchService.dll:FreeswitchService LocalServiceModule = OpenSim.Services.Connectors.dll:RemoteFreeswitchConnector ;; If using a remote connector, specify the server URL FreeswitchServiceURL = http://192.111.222.33:8004/fsapi ( sostituire con ip del server )
>>>> Fine <<<<
avviare normalmente opensim, da questo momento in poi la sim ha il voice abilitato.
Verificare che nelle impostazioni della parcell il voice sia attivo
Ho seguito la configurazione ufficiale suggerita sul sito http://www.opensimulator.org
integrandola su come settare i moduli e con alcuni suggerimenti sia dai bug mantis
che dalle mailing list di opensimulator. Questo documento e’ rilasciato con licenza cc ( obbligo citazione della fonte)
Credo che possa essere utile a quanti stanno sbattendosi a far funzionare il voice in questo periodo.
PS: Ho seguito fedelmente questa guida e al termine ho poi invitato gli amici Pinowo, Rumegusc, Marcus73 a provare il voce, che dopo un iniziale momento in cui sembra che non funzionasse nulla, aggiustando i livelli del microfono, degli altoparlanti etc, alla fine siamo riusciti a fare una discreta conferenza a 3.
La resa, pur soddisfacente per alcuni versi, lamenta alcuni momenti di perdita di voce. La qualità complessiva non pare essere equivalente a quella di secondlife, ma tuttavia pare promettente e se avete un po’ di pazienza, anche usabile. Ad onore del vero nella grid Craft Rumegusc aveva cercato di usare il voice, ma dice che quando le persone erano più di 3-4 i problemi diventavano insormontabili.
Dal mio punto di vista, sono ragionevolmente soddisfatto, perchè fino a 2 anni fa i miei tentativi di installazione di freeswitch erano stati infruttuosi e frustranti ![]()
Salahzar Stenvaag

