OwnTracks: un’alternativa orientata alla privacy per il tracciamento della posizione

Per il mio compleanno, avevo deciso di tornare in un fantastico ristorante di Firenze, dove avevo fatto una cena memorabile diversi anni fa.

Ricordavo il cibo delizioso e l’atmosfera accogliente, ma non riuscivo a ricordare il nome o l’indirizzo del locale. Sapevo che era da qualche parte nel centro della città, ma non ricordavo esattamente dove.

Ho deciso quindi di usare l’applicazione di localizzazione del mio smartphone per cercare di trovare il ristorante: ho zoomato sul centro città e in pochi secondi l’avevo trovato!

Non potevo crederci: avevo trovato il ristorante dopo tutti questi anni. Ho prenotato immediatamente e non vedo l’ora di tornare per rivivere quella cena speciale.

Da quel giorno, mi sono assicurato di mantenere sempre attivo il sistema di tracciamento della mia posizione.

Cos’è il tracciamento della posizione

Il tracciamento della posizione è una funzione comune nella maggior parte degli smartphone che consente di registrare informazioni sulla propria posizione per un certo periodo di tempo, da consultare in seguito per ripercorrere i propri passi e ricordare dove si è stati.

Il tracciamento della cronologia della posizione presenta diversi vantaggi:

  1. Promemoria: ti ricorda i luoghi visitati, le cose fatte e i luoghi in cui sei stato
  2. Condividere la cronologia della posizione con altri: puoi condividere la cronologia della posizione con i tuoi amici, familiari o partner per monitorare i tuoi spostamenti.
  3. Sicurezza personale: ti aiuta a tenere traccia dei tuoi spostamenti, soprattutto se viaggi da solo o in una zona sconosciuta.

Cronologia Posizioni di Google Maps è la piattaforma di localizzazione più comune, in quanto integrata nella diffusa applicazione Google Maps.

Purtroppo, Google Maps nasconde un grave problema di privacy, poiché la cronologia delle posizioni viene analizzata da Google e utilizzata per pubblicità mirate.

Esempio di Google Maps Timeline

Un’alternativa orientata alla privacy per il tracciamento della posizione

OwnTracks è un’ottima alternativa open source se cerchi un maggiore controllo sui tuoi dati di localizzazione rispetto a soluzioni commerciali come Google Maps Timeline.

La piattaforma OwnTracks è costituita da due componenti:

  1. Un’applicazione mobile open-source che viene eseguita in background sul tuo dispositivo mobile e invia le tua coordinate al tuo server.
  2. Il tuo server dove viene eseguito il backend per ricevere i dati trasmessi dall’applicazione mobile ed elaborare i dati ricevuti, per memorizzarli in un database e mostrare la cronologia della tua posizione su una mappa.

Come vedi, non c’è nessuna entità commerciale che raccoglie i tuoi dati e li elabora per i propri scopi.

I tuoi dati sono tuoi e rimangono nelle tue mani!

Dato che qui amiamo il coding e le soluzioni self-hosted, divertiamoci a creare il nostro sistema di localizzazione self-hosted per fornire le stesse funzioni di Google Map, ma in modo orientato alla privacy.

Per prima cosa dobbiamo configurare il server per ascoltare i messaggi inviati dall’applicazione ed elaborare i dati; dopo, configureremo l’applicazione mobile sullo smartphone.

Configurare il backend sul server

Prima di poter configurare l’applicazione mobile, è necessario configurare il backend self-hosted sul tuo server, che è composto da quattro componenti:

  1. il broker MQTT
  2. il database
  3. il Listener
  4. il Location Diary

Il broker MQTT

MQTT (Message Queue Telemetry Transport) è un protocollo di comunicazione tra dispositivi e un server centrale chiamato “broker”.

MQTT utilizza un modello “publish-subscribe“, in cui i dispositivi pubblicano messaggi su un “topic” e altri dispositivi possono sottoscrivere questo “topic” per ricevere i messaggi.

Nella piattaforma OwnTracks, il broker MQTT consente all’ascoltatore di sottoscrivere il topic che verrà poi configurato nell’applicazione mobile.

Ho scelto il broker Eclipse Mosquitto, un broker MQTT open source facile da installare. Ecco una guida rapida per l’installazione su Linux:

Installare il pacchetto Mosquitto:

sudo apt-get update
sudo apt-get install mosquitto mosquitto-client

Per avviare, arrestare o riavviare il broker si può usare il seguente comando:

sudo systemctl start mosquitto
sudo systemctl stop mosquitto
sudo systemctl restart mosquitto

Controllare lo stato del servizio eseguendo

systemctl status mosquitto

Il comando mosquitto_sub può essere usato per iscriversi a un argomento e ricevere messaggi.

mosquitto_sub -h localhost -t "test"

Il comando mosquitto_pub può essere usato per pubblicare un messaggio su un argomento specifico

mosquitto_pub -h localhost -t "test" -m "ciao mondo"

Per proteggere il broker, creare un file di password:

sudo mosquitto_passwd -c /etc/mosquitto/passwd

modificare il file mosquitto.conf e aggiungere le seguenti opzioni:

allow_anonymous false
password_file /etc/mosquitto/passwd

Riavviare il servizio

sudo systemctl restart mosquitto

Il broker MQTT deve essere accessibile da Internet, poiché l’applicazione mobile pubblicherà periodicamente la sua posizione collegandosi al vostro server.

È necessario impostare il port forwarding sul router. In questo modo, il traffico in entrata sulla porta 1883 per MQTT sarà diretto all’indirizzo IP interno del dispositivo che esegue il broker MQTT.

Se disponi di un indirizzo IP statico, lo utilizzerai nella configurazione dell’applicazione mobile.

Se non disponi di un indirizzo IP statico, puoi utilizzare un servizio di DNS dinamico (ad esempio, Duck DNS) che consente di accedere al broker utilizzando un nome host anziché un indirizzo IP. Il servizio aggiornerà automaticamente il record DNS con l’indirizzo IP corrente, senza che ti debba preoccuparvi di aggiornarlo manualmente.

Il database

Dobbiamo configurare il database e la tabella per memorizzare i dati che il Listener riceverà dall’applicazione mobile.

Ecco la configurazione corretta per il database MySql:

CREATE DATABASE owntracks; 
USE owntracks; 
CREATE TABLE owntracks ( 
id INT AUTO_INCREMENT PRIMARY KEY, 
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
lat FLOAT NOT NULL, 
lon FLOAT NOT NULL);

Il Listener

Il Listener è uno script Python che viene eseguito sul server in background, riceve la posizione dall’applicazione mobile e memorizza i dati in un database.

Lo script si connette al broker MQTT, si iscrive al topic di Owntracks e ascolta i messaggi in arrivo. Il topic sarà definito in seguito, durante la configurazione dell’applicazione mobile, quindi ricorda di tornare alla configurazione del Listener per inserire il topic.

Quando riceve un messaggio, il Listener decodifica il payload contenente latitudine e longitudine, lo converte in un oggetto JSON e inserisce questi valori in una tabella del database MySQL.

Architettura della piattaforma OwnTracks

L’applicazione web del Location Diary

Infine, il Location Diary è l’applicazione web che utilizzarai per visualizzare la cronologia della tua posizione.

Sono disponibili due opzioni di visualizzazione:

  • Vista marcatori: visualizza un marcatore per ogni punto di localizzazione tracciato, con una linea che lo collega per mostrare il percorso. Nella vista marcatori, è possibile filtrare per data utilizzando il selezionatore di date.
  • Vista Heatmap: delle aree colorate rappresentano la densità dei punti in una determinata area, da colori più caldi a colori più freddi. Questo ti consente di vedere dove hai trascorso più tempo.

Come configurare l’applicazione mobile OwnTracks

Ora è il momento di installare e configurare l’applicazione OwnTracks sul tuo cellulare!

Ricorda che tutti i componenti di questo progetto sono open source e che l’applicazione garantisce la vostra privacy in quanto invia la tua posizione solo al tuo server e non ad alcun cloud commerciale.

  1. Scarica l’applicazione OwnTracks dall’App Store (iOS) o dal Google Play Store (Android).
  2. Nelle impostazioni dell’app (icona info nell’angolo in alto a sinistra), imposta la modalità di connessione su MQTT e configura le impostazioni di connessione con il nome host, il numero di porta 1883 e le credenziali del broker MQTT self-hosted che hai impostato nella configurazione del broker.
  3. Torna alla mappa, fai clic sul marcatore e recupera il Topic personale (“owntracks/mqtt/”) da inserire nella configurazione del Listener sul server.

Nella configurazione standard, l’applicazione OwnTracks invia i dati in chiaro al broker MQTT. Per garantire la sicurezza e la privacy, ti consiglio di configurare sia Mosquitto che l’applicazione mobile in modo che utilizzino TSL. Ho in programma di scrivere un post dedicato alla sicurezza di OwnTracks!

Il tuo sistema tracciamento della posizione privato è ora attivo!

Ecco fatto! L’applicazione mobile inizierà a inviare la tua posizione al server (soprattutto quando ti muovi, per risparmiare la batteria del dispositivo) e il Listener ascolterà costantemente i messaggi inviati tramite il protocollo MQTT e salverà la tua posizione nel tuo database personale. Il Location Diary recupera le posizioni dal database e le mostra su una mappa.

E il Location Diary farà la magia!

Rivivi i tuoi viaggi, naviga nel passato con il selezionatore di date e scopri dove hai trascorso la maggior parte del tempo con la heat map!

OwnTracks Location Diary – Vista marcatori
OwnTracks Location Diary – Vista Heatmap

Grazie per esserti interessato a questo progetto!

Se hai installato il progetto sul tuo server, lascia un commento per condividere la tua esperienza!