Installiamo Thingsboard con Docker
Cominciamo il nostro tour alla scoperta di Thingsboard dal primo ed inevitabile step: l’installazione della piattaforma.
Sebbene sia possibile utilizzare una live demo sui loro server, il consiglio è di imparare fin da subito a mettere in piedi l’intera infrastruttura, anche perchè in produzione quasi sicuramente bisognerà gestire il tutto in piena autonomia.
Sono disponibili varie opzioni: dai pacchetti preconfigurati per i vari sistemi operativi (e distribuzioni Linux), alla compilazione dei sorgenti che consente ulteriori personalizzazioni, come ad esempio la sostituzione del logo per creare un prodotto con il proprio brand.
Tuttavia il modo più semplice per installare tutto il necessario senza “sporcare” il proprio sistema consiste nel ricorrere a Docker.
Si suppone che lo stesso sia già installato sulla propria macchina. In caso contrario, almeno per Linux Ubuntu, è possibile far riferimento a questo post oppure al sito ufficiale.
Sulla documentazione ufficiale del progetto, da cui prendiamo spunto, è riportato il comando da utilizzare con tutti i dettagli delle singole opzioni.
Lavorando in ambito Linux da console eseguiamo
$ docker run -it -p 9090:9090 -p 1883:1883 -p 5683:5683/udp -v ~/.mytb-data:/data -v ~/.mytb-logs:/var/log/thingsboard --name mytb --restart always thingsboard/tb-postgres
In particolare:
docker run
– esegue il container-it
– attiva una sessione di terminale con il processo in esecuzione (vederemo in seguito come utilizzarla)-p 9090:9090
– mappa la porta locale 9090 con la 9090 esposta dal container-p 1883:1883
– mappa la porta locale 1883 con la 1883 esposta dal container ed utilizzata di default dal protocollo MQTT-p 5683:5683
– mappa la porta locale 5683 con la 5683 esposta dal container ed utilizzata di default dal protocollo COAP-v ~/.mytb-data:/data
– monta la cartella dell’host~/.mytb-data
con quella utilizzata da ThingsBoard per il database-v ~/.mytb-logs:/var/log/thingsboard
– monta la cartella dell’host~/.mytb-logs
con quella utilizzata da ThingsBoard per i log--name mytb
– assegna un nome al container (molto utile per le successive operazioni di start/stop o di rimozione)--restart always
– imposta il riavvio automatico del container in caso di crashthingsboard/tb-postgres
– specifica l’immagine Docker da utilizzare. Sono previste altre ozpioni in base al database che si intende utilizzare (thingsboard/tb-cassandra
othingsboard/tb
)
Naturalmente le varie opzioni possono essere personalizzate in base alle proprie esigenze.
Ad esempio le porte locali possono differire, se già utilizzate, ed anche le cartelle locali possono avere nomi e path differenti. A tal proposito si ricorda che le cartelle presenti sul proprio host sono nascoste di default, quindi occorre abilitare la relativa opzione per dare un’occhiata.
Per una rapida consultazione si riporta la lista delle porte esposte dal container
- 9090 – accesso dashboard
- 1883 – MQTT
- 5683 – COAP
e delle cartelle
- /data – database
- /var/log/thingsboard – log di sistema
L’esecuzione del comando può richiedere alcuni minuti a seconda della velocità della connessione Internet in quanto occorre scaricare tutte le immagini Docker richieste.
Al termine basta aprire il browser all’indirizzo http://{indirizzo-host}:9090
(ad esempio http://localhost:9090
) per accedere alla pagina di login.
Di default sono previsti 3 utenti demo per ciascuna categoria, le cui credenziali di accesso sono di seguito riportate:
- System Administrator: sysadmin@thingsboard.org / sysadmin
- Tenant Administrator: tenant@thingsboard.org / tenant
- Customer User: customer@thingsboard.org / customer
E’ sempre possibile e fortemente consigliato modificare le password per motivi di sicurezza.
Grazie alla presenza della sessione di terminale possiamo osservare in tempo reale i log dell’applicazione.
Per uscire dalla modalità interattiva occorre digitare la sequenza Ctrl+p Ctrl+q.
Per riattivarla
docker attach mytb
Per fermare e riavviare il container basta utilizzare i classici comandi di Docker rispettivamente
docker stop mytb
docker start mytb
Ecco che si comprende meglio la necessità di attribuire un nome significativo al container.
La prossima volta cominceremo ad esplorare la piattaforma più in dettaglio.
INDICE