Guida rapida per l’installazione di un Reflector XLX

di | 15/11/2016

Quanto segue è una rapida spiegazione dei passi necessari all’installazione di un reflector XLX, materiale in parte liberamente tratto dal documento in PDF disponibile sul gruppo Yahoo degli sviluppatori. Consiglio di seguire attivamente tale gruppo per conoscere gli aggiornamenti del software e ulteriori spiegazioni al funzionamento e installazione. Alcune doverose premesse per evitare problematiche e una non perfetta operatività:

  • il software “gira” su di un server Linux, queste informazioni si riferiscono alla distribuzione Debian versione 7 oppure 8
  • meglio dedicare un server al reflector, evitare quindi operino altri programmi che possono pretendere risorse
  • non serve una macchina potente, va bene inizialmente anche un VPS o server in Cloud con 1 GB di memoria Ram, spazio su disco minimo
  • occorre un indirizzo IP pubblico STATICO e un nome DNS da assegnargli, utile nel caso si sostituisca o si sposti il server su altro provider
  • il server deve essere accessibile su internet, evitiamo NAT se possibile, occorrono siano aperte delle porte su eventuale firewall presente
  • il server deve avere “banda” garantita, le connessioni dei ripetitori e hotspot occupano spazio nel trasferimento della voce digitalizzata e non devono subire interruzioni

Per fare delle valutazioni operative, sul nostro sito è presente un link al sistema di monitor presente sul reflector XLX077. Raccomando l’uso di password molto robuste e di una gestione oculata nell’apertura delle porte ai vari servizi (es. inutile installare un server FTP se non vi è la reale necessità…). Infine dobbiamo domandarci se è utile la creazione di un nuovo reflector e quindi ci saranno dei ripetitori e hotspot che si collegheranno ad esso, oppure conviene sfruttare quanto già c’è e collegarci, ad esempio, a XLX077, che funziona proprio bene … :-)) Chiaramente provare ad installare questi sistemi è molto utile per accrescere le proprie conoscenze, senza ombra di dubbio !! Il software XLX è stato testato su sistemi a 32 e 64bit e qualcuno lo ha anche installato su Raspberry Pi, e funziona anche se, per motivi di performance, magari non è consigliato su una gestione di una grossa mole di traffico, viste le limitate caratteristiche. Nel procedere è richiesta una sufficiente conoscenza del sistema operativo linux e i comandi della shell, oltre a comprendere e gestire i concetti base del “networking” (protocolli, porte, nat, etc.)

Queste invece le porte (e relativo protocollo) necessarie alla gestione delle connessioni e manutenzione, devono essere aperte sul firewall (o “girate” dal router verso il server se dietro NAT):

  • TCP porta 80 (http) ==> server web per la visualizzazione della dashboard
  • TCP porta 8080 (RepNet) ==> visualizzazione dell’interfaccia/dashboard in 3D (la documentazione per questa installazione è separata)
  • UDP porta 10001 (json interface XLX Core) ==> gestione interna del software, interrogazione dati
  • UDP porta 10002 (XLX interlink) ==> gestione interna del software, riservata a interconnessione tra XLX
  • TCP porta 22 (ssh) ==> necessaria per collegarsi al server tramite terminale (es. PUTTY) per le operazioni di manutenzione/aggiornamento
  • UDP porta 30001 (DExtra protocol) ==> connessione al server reflector da ponti ripetitori/hotspot/XRF con protocollo DEXTRA
  • UDP porta 20001 (DPlus protocol) ==> connessione al server reflector da ponti ripetitori/hotspot con protocollo DPLUS
  • UDP porta 30051 (DCS protocol) ==> connessione al server reflector da ponti ripetitori/hotspot con protocollo DCS

Dopo aver installato una versione stabile (e pulita, senza altro software) del sistema operativo sul server, procedere con un aggiornamento dell’intero sistema digitando i seguenti comandi:

# apt-get update

# apt-get upgrade

quindi installare il software “git” per lo scarico in automatico di quanto ci occorre relativamente al software del reflector,

# apt-get install git git-core

e installiamo il server web apache ed il linguaggio PHP (per la visualizzazione della dashboard).

# apt-get install apache2 php5

Rimane da installare il compilatore C++ per “creare” dai sorgenti (il codice) che scaricheremo il programma in formato eseguibile:

# apt-get install build-essential

(il seguente passaggio può essere saltato se si è scelto il sistema operativo Debian 8.x o superiore)(vedi integrazione in fondo al testo)

# apt-get install g++-4.7

I prossimi comandi eseguono il download del codice dal sito degli sviluppatori e lo “compilano” creando quindi l’eseguibile, il cuore del nostro reflector:

# git clone https://github.com/LX3JL/xlxd.git

# cd xlxd/src/

# make

# make clean

# make install

Al termine di questa procedura, se non vi sono stati errori, verrà creata in automatico una directory /xlxd nel ramo principale (si chiama root) del sistema operativo e all”interno di essa copiati alcuni file, fra cui l’eseguibile. Riporto l’estratto delle operazioni che questa procedura effettua per meglio capire quali sono i file che saranno copiati (non digitare quanto segue):

install:
mkdir -p /xlxd
cp ./xlxd /xlxd/
cp -i ../config/xlxd.blacklist /xlxd/
cp -i ../config/xlxd.whitelist /xlxd/
cp -i ../config/xlxd.interlink /xlxd/

La directory /xlxd è quella a cui dovremo fare riferimento per le configurazioni delle connessioni tra XLX (editare il file xlxd.interlink, all’interno di esso è spiegata la sintassi da utilizzare, inoltre presso il gruppo Yahoo degli sviluppatori vi è apposita documentazione) e per limitare eventuali accessi (i file xlxd.blacklist e xlxd.whitelist). Questa directory contiene anche il file xlxd che è il programma di reflector. Il passo successivo riguarda il file di configurazione principale del reflector (anche lui si chiama xlxd ma è un file di testo che contiene dei comandi) che va manualmente copiato in una opportuna posizione (cartella /etc/init.d) del sistema operativo per essere letto (ed eseguito) ad ogni avvio del server. Digitare quanto segue:

# cp ~/xlxd/scripts/xlxd /etc/init.d/xlxd

Occorre quindi eseguire gli opportuni adattamenti editandolo (viene utilizzato il comando “nano” come editor di testo, va bene qualsiasi altro editor) e inserendo i nostri parametri:

# nano /etc/init.d/xlxd

Si possono lasciare “di default” tutti i parametri, diversamente ci addentreremmo in una personalizzazione troppo approfondita; occorre invece modificare la proprietà della variabile “ARGUMENTS” con il nome del proprio reflector (per esempio XLX077) e l’indirizzo IP statico (nel nostro caso 5.249.151.111) assegnato al server (se è dietro un router occorre inserire l’indirizzo IP privato statico assegnato all’interno della lan). Indirizzo sul quale il software del reflector farà ascolto:

ARGUMENTS=”XLX077 5.249.151.111″

Dopo aver salvato il file di configurazione digitare il seguente comando che serve ad automatizzare l’avvio del reflector ad ogni accensione del server:

# update-rc.d xlxd defaults

Manualmente si può procedere anche così:

# service xlxd start

# service xlxd stop

Gli ultimi passaggi riguardano la dashboard, il cruscotto visibile via web contenente le informazioni sullo stato delle connessioni al reflector. Iniziamo copiando i vari file che compongono la dashboard nella directory gestita dal server web Apache già installato. generalmente sotto /var/www :

# cp -r ~/xlxd/dashboard /var/www/db

Troviamo quindi le pagine e il file di configurazione della dashboard nella dir /var/www/db e relative sottodirectory. Anche in questo caso occorre eseguire una personalizzazione editando manualmente il file:

# nano /var/www/db/pgs/config.inc.php

Questo file è molto ben commentato, e molto facilmente si possono inserire le informazioni relative alla propria installazione, quali la mail dell’amministratore del sistema, il tempo di refresh della pagina, etc. Prestare attenzione all’ultima sezione che riguarda l’inserimento del reflector nella lista automatica dei reflector mondiali inserendo l’ URL completo per visualizzare la dashboard, oltre ad un commento. Dalla versione 2.2.2 della dashboard viene creato un file sotto /tmp chiamato callinghome.php Consiglio di fare una copia di questo file perchè serve all’autenticazione al server che mantiene la lista dei reflector, e nel caso venisse cancellato occorre ripristinare l’originale, pena la non registrazione. Seguire le varie discussioni sul gruppo Yahoo nel caso questa operatività venisse cambiata con l’uscita di aggiornamenti.

Rimane, in ultimo, di assegnare i permessi di lettura alla dashboard al file che contiene il log del reflector:

# chmod +r /var/log/messages

e un riavvio del server per verificare che tutto sia perfettamente funzionante.

# reboot

Per vedere in tempo reale cosa sta accadendo al reflector è possibile dare questo comando che legge il file di log:

# tail -f  /var/log/messages

e, per assicurarsi che il reflector stia correttamente “ascoltando” sulle porte sopra indicate, il seguente comando:

# netstat -lnp

che produrrà un output simile a questo (il processo xlxd è in ascolto su IP/porta indicata con il protocollo UDP):

udp 0 0 5.249.151.111:20001 0.0.0.0:* 2959/xlxd
udp 0 0 5.249.151.111:10001 0.0.0.0:* 2959/xlxd
udp 0 0 5.249.151.111:10002 0.0.0.0:* 2959/xlxd
udp 0 0 5.249.151.111:30001 0.0.0.0:* 2959/xlxd
udp 0 0 5.249.151.111:30051 0.0.0.0:* 2959/xlxd

Nel caso non fosse installato netstat, si può provvedere con:

# apt-get install netstat

E’ utile ricordare che le cartelle “importanti” sono /xlxd e /var/www/db quindi la cartella originaria creata durante il processo di download dei sorgenti (es. /root/xlxd) può essere rimossa affinchè successivamente sia possibile scaricare nuovi aggiornamenti. Per qualsiasi suggerimento e integrazione mandatemi una mail, provvederò ad aggiornare questo articolo. Buone prove, David Bencini [ ik5xmk@gmail.com ]

Integrazione al testo del 03/aprile/2016

I comandi sotto riportati valgono per distribuzioni Wheezy basati su Debian inferiori a 8.0

dopo il comando:

# apt-get install build-essential

occorre digitare in successione:

# apt-get install g++-4.7

# update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 –slave /usr/bin/g++ g++ /usr/bin/g++-4.6 

# update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 –slave /usr/bin/g++ g++ /usr/bin/g++-4.7 

# update-alternatives –config gcc

all’ultimo comando chiedere di scegliere delle opzioni e si risponderà con la n. 2 (due).