lunedì 21 settembre 2015

Come installare il proprio server GPS

I dati georeferenziati rappresentano una delle fonti più importanti di conoscenza nel flusso di informazioni che scorre in rete.
I dati sulla posizione in tempo reale di persone, mezzi, dispositivi, oggetti sono anche la base sulla quale si possono costruire servizi utili, a volte indispensabili, per le comunità.

Per questo mi è venuta la curiosità di installare e provare un server GPS. Si tratta di sistema in grado di tracciare la posizione, in tempo reale, di qualsiasi dispositivo possa comunicare con esso, nel mio caso un normalissimo smartphone.

Ho scelto di provare OpenGTS, un server opensource scaricabile e installabile liberamente e che prevede anche una versione Enterprise a pagamento dotata di diverse features aggiuntive, ritengo però che la versione base sia già sufficiente per molti scopi.
Per la parte client ho installato sul telefonino CellTracGTS/Free per Android.

Ecco la traccia di un giro di prova che ho fatto per testare il sistema :

Un altro giro visualizzato su Google Earth :


In questo post spiegherò quali sono i passi da compiere per eseguire l'installazione base, ma per i più pigri metto a disposizione il server già configurato e funzionante come macchina virtuale VMWare ;) Fedora22-64bit-OpenGTS2.5.9.zip .



INSTALLAZIONE DEL SERVER

1) Scaricare l'ultima versione di Fedora 22 Server e installarla su una macchina virtuale VMWare.
La versione server di Fedora 22 non prevede una interfaccia grafica, che si può comunque aggiungere con il comando sudo yum groupinstall "Fedora Workstation" --skip-broken
2) Installare Java.
sudo yum install java-1.8.0-openjdk-devel.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51-5.b16.fc22.x86_64
cd /usr/local
ln -s $JAVA_HOME java
3) Installare il supporto JavaMail
Scaricarlo da https://java.net/projects/javamail/pages/Home
cd <directory dove è stato scaricato java mail>
sudo cp javax.mail.jar $JAVA_HOME/jre/lib/ext/.
4) Installare Ant
sudo yum install ant
5) Installare Tomcat 7, NON installare Tomcat 8 poichè non è compatibile
Per l'installazione seguire questo tutorial
Poi eseguire
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.64/
cd /usr/local
ln -s $CATALINA_HOME tomcat

Ricordare poi di modificare il file di configurazione server.xml avendo cura di specficare :
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
address="0.0.0.0"/>
E' importante aprire il firewall per consentire connessioni dall'esterno. Per farlo occorre installare l'applicazione Firewall (fare un semplice 'Cerca' sul menù start di Fedora) e poi nelle regole consentire l'accesso http.
6) Installare Apache POI
Scaricarlo da https://poi.apache.org/download.html
cd <directory dove è stato scaricato Apache-POI>
sudo cp poi-3.12-20150511.jar $JAVA_HOME/jre/lib/ext/
7) Installare HTTP Core
Scaricarlo da http://hc.apache.org/httpcomponents-core-ga/download.html
cd <directory dove è stato scaricato HTTP core>
sudo cp httpcore-4.4.1.jar $JAVA_HOME/jre/lib/ext/
8) Installare Twilio
Scaricarlo da https://www.twilio.com/docs/java/install
cd <directory dove è stato scaricato Twilio>
sudo cp twilio-java-sdk-3.3.12.jar $JAVA_HOME/jre/lib/ext/
9) Installare MySQL
sudo yum install mariadb-galera-server.x86_64
sudo systemctl enable mariadb.service
sudo yum install mysql-connector-java
cd <directory dove è stato scaricato mysql-connector>
sudo cp mysql-connector-java.jar $CATALINA_HOME/lib
sudo cp mysql-connector-java.jar $JAVA_HOME/jre/lib/ext/mysql-connector-java-5.1.xx.jar

10) Installare OpenGTS
Scaricarlo da http://sourceforge.net/projects/opengts/files/latest/download
cd /usr/local
su root /usr/local
unzip /<directory dove è scaricato OpenGTS/OpenGTS_2.5.9.zip
chown -R user:group OpenGTS_2.5.9
exit
export GTS_HOME=/usr/local/OpenGTS_2.5.9
cd /usr/local
ln -s $JAVA_HOME java
ln -s $CATALINA_HOME tomcat
ln -s $GTS_HOME gts
cd $GTS_HOME
ant all
11) Inizializzare il database e verifica della configurazione
cd $GTS_HOME
bin/initdb.sh -rootUser=root
bin/checkInstall.sh
12) Creazione dell'utente amministratore
bin/admin.sh Account -account=sysadmin -pass=password -create
13) Installazione dei moduli
cd $GTS_HOME
cp build/track.war $CATALINA_HOME/webapps/
cp build/event.war $CATALINA_HOME/webapps/
cp build/gprmc.war $CATALINA_HOME/webapps/

A questo punto il server è installato e dovrebbe rispondere all'indirizzo http://localhost/track/Track, entrando con account=sysadmin user:<vuoto> password=password

INSTALLAZIONE DEL CLIENT

Il client CellTracGTS per Android può essere scaricato e installato da qui.
Nella configurazione è necessario , nell'indirizzo del server, specificare l'indirizzo pubblico del server OpenGTS : http://<ip pubblico del server>/gprmc/Data

Occorre poi entrare nel pannello di amministrazione sul server ed aggiungere il dispositivo client appena configurato, specificando l'ID univoco del device.

Per scaricare il tracciato del dispositivo o verificarne la posizione in tempo reale si può fare una richiesta al server di questo tipo :
http://<ip pubblico del server>/events/data.kml?a=sysadmin&p=password&d=<id univoco del dispositivo>


7 commenti:

  1. Ciao e scusa la mia ignoranza... ho provato a dare uno sguardo al manuale opengts_config, ma non ho trovato menzione di apache poi, http core e twilio. A che servono questi tre programmi? Si può evitare di installarli?

    RispondiElimina
    Risposte
    1. Ciao Antonio, scusa ma mi ero perso il tuo commento.... Le librerie che citi le ho installate poichè altrimenti OpenGTS dava errori a runtime richiedendo componenti legati ad esse. POI serve a gestire documenti , http-core contiene componenti per la comunicazione client-server, twilio per gestire SMS.

      Elimina
  2. Ciao
    non avendo un ip pubblico è possibile usare il server con un servizio tipo NOIP?
    grazie

    RispondiElimina
  3. ciao
    non avendo un indirizzo ip pubblico, posso usare il server con un DDNS?
    grazie

    RispondiElimina
  4. Ciao come posso contattarti in pv?
    grazie

    RispondiElimina
  5. ciao Franco, scusa se ti disturbo...io ho installato tutto sia sul pc che l'app sul mio telefonino ma su quest'ultimo mi compare un messaggio di errore di connessione al server...ho inserito http://127.0.0.1:8080/gprmc/data.
    postresti aiutarmi a risolvere il problema?

    RispondiElimina
  6. ciao Franco, scusa se ti disturbo...io ho installato tutto sia sul pc che l'app sul mio telefonino ma su quest'ultimo mi compare un messaggio di errore di connessione al server...ho inserito http://127.0.0.1:8080/gprmc/data.
    postresti aiutarmi a risolvere il problema?

    RispondiElimina