Oggi è comunissimo avere al polso una trackband oppure uno smartwatch per tenere traccia dei propri allenamenti o più in generale della propria forma fisica. Tali device si affidano a servizi Cloud per eseguire il tracciamento dei nostri allenamenti quotidiani.
Un approccio di questo genere potrebbe non essere l'ideale per tutti, anche per ragioni legate alla privacy. Ecco perché oggi vogliamo parlarvi di ExerciseDiary, una soluzione self-hosted che consente di tenere traccia delle proprie sessioni di workout e del proprio peso cosi da ottenere nel tempo una serie di statistiche complete.
Cosa è ExerciseDiary
ExerciseDiary è un vero e proprio workout diary avanzato che offre anche una visualizzazione dei nostri allenamenti in stile "GitHub", ovvero con delle pratiche heat map che mostrano a colpo d'occhio i periodi più impegnativi e le giornate più intense. Quando, magari, abbiamo dato il nostro meglio in palestra o in qualche attività all'aperto.
Offre inoltre una comoda interfaccia web, quindi gli utenti posso aggiungere dati giornalieri su esercizi e peso corporeo da ogni device connesso ad una rete locale. Questo software open source è inoltre molto leggero e può essere eseguito su qualsiasi server Linux, su PC "di riciclo" o su di una board ARM come Raspberry Pi. In questo tutorial scopriremo come installare e configurare ExerciseDiary su questo device low-cost.
Si tratta di una soluzione che può essere adottata da tutte le tipologie di utenti, anche da coloro che hanno una scarsa esperienza con i sistemi Linux e sono da poco venuti in possesso di Raspberry Pi.
Questo perché ExerciseDiary viene distribuito anche tramite un pratico container Docker. Questo permette di evitare configurazioni particolarmente complicate visto che il tutto viene eseguito in automatico su di un'istanza dedicata che, all'occorrenza, può essere aggiornata in pochi semplici passaggi.
Dotazione hardware
Per realizzare questo progetto con ExerciseDiary basta una Raspberry Pi 4 o anche una "vecchia" Raspberry Pi 3. Tuttavia, se dovete acquistare la board, vi consigliamo l'ultima edizione del device ovvero Raspberry Pi 5. Per il primissimo setup dobbiamo dotarci anche di diverse periferiche: scheda microSD, mouse, tastiera, monitor, alimentatore USB-C, cavo ethernet cat6 ed HDMI.
Installazione di Raspberry Pi OS
Dopo aver reperito il device passiamo al flash del sistema operativo su microSD. Dunque procediamo al download del file ISO di Raspberry Pi OS, disponibile nel sito ufficiale del progetto, ed ovviamente di un imaging tool dedicato.
In questo tutorial abbiamo scelto l'ormai classico Raspberry Pi Imager. Dunque, dopo aver scaricato l'installer procediamo al suo avvio. Dalla GUI del programma andiamo su "Choose OS" e selezioniamo il file ISO di Raspberry Pi OS presente nel disco fisso. Successivamente selezioniamo "Choose Storage" per scegliere la microSD connessa al PC. Infine, tramite il tasto "Write", avviamo il flash.
Il processo durerà qualche minuto. Nel frattempo possiamo iniziare connettere tutte le periferiche a Raspberry Pi. Terminata la procedura inseriamo la microSD nel device e connettiamolo all'alimentazione per eseguire il primo boot.
Il wizard di configurazione di Raspberry Pi OS è davvero semplice. Dunque in questo tutorial non ci dilungheremo su di esso. Una volta arrivati al Desktop saremo pronti per iniziare la seconda parte della guida.
Installazione di Docker su Raspberry Pi OS
Arrivati a questo punto apriamo bash e verifichiamo, tramite il package manager di sistema, se ci sono aggiornamenti disponibili nei repository della distribuzione:
sudo apt update && sudo apt upgrade -y
Ultimati gli update possiamo passare all'installazione di Docker. Come accennato, ExerciseDiary può essere eseguito tramite questo pratico sistema di container. Dunque provvediamo a reperire l'installer di Docker:
curl -sSL https://get.docker.com | sh
Finito il download avviamo l'installazione:
sudo sh get-docker.sh
Aggiungiamo ora il nostro utente al gruppo cosi da poter lavorare con il programma:
sudo usermod -aG docker nomedelnostroutente
Successivamente impostiamo il tutto, sfruttando il gestore dei demoni systemd, per l'esecuzione automatica ad ogni boot del sistema operativo:
sudo systemctl enable docker.service && sudo systemctl enable containerd.service
Con quest'ultimo comando viene conclusa la configurazione di Docker e possiamo passare alla creazione dell'istanza di ExerciseDiary.
Configurazione del file Docker compose di ExerciseDiary
Generiamo la directory dove saranno ospitati i file del container di ExerciseDiary:
sudo mkdir -p /opt/stacks/exercisediary
ora spostiamoci nella nuova cartella:
cd /opt/stacks/exercisediary
e tramite l'editor di testo nano andiamo a creare il nuovo file chiamato compose.yaml
:
sudo nano compose.yaml
Quest'ultimo deve essere popolato in questo modo:
version: "3"
services:
exdiary:
image: aceberg/exercisediary
restart: unless-stopped
ports:
- 8851:8851
volumes:
- ./data:/data/ExerciseDiary
environment:
TZ: Europe/Rome
Segniamo il numero indicato sotto la stringa ports
perché servirà in seguito. Ora salviamo le modifiche apportate al Docker compose file premendo CTRL+O e chiudiamo l'editor con CTRL+X cosi da tornare all'interno di bash. Siamo finalmente pronti a lanciare il Docker di ExerciseDiary:
docker compose up -d
Accedere alla web interface di ExerciseDiary da Raspberry Pi
Se abbiamo seguito tutte le istruzioni correttamente, l'istanza di ExerciseDiary sarà in esecuzione in background su Raspberry Pi. Dunque possiamo accedere all'interfaccia web del programma ed iniziare ad utilizzarlo. Apriamo il browser e digitiamo un URL del genere:
http://192.168.1.12:8851
8851
è la porta su cui è in ascolto ExerciseDiary, si tratta del numero, indicato nel Docker compose file di cui abbiamo consigliato di prendere nota poco prima.
La prima parte dell'URL è composta dall'indirizzo IP di Raspberry Pi. Se non siamo a conoscenza di tale dato ci verrà in aiuto bash con questo comando:
hostname -I
Come output otterremo appunto il nostro IP locale, una sequenza simile a questa:
192.168.1.12
Dopo aver digitato l'URL si accede sin da subito a ExerciseDiary, non serve infatti creare un account dedicato. Con il tasto "Add Exercise" si può poi aggiungere un esercizio specifico eseguito nel corso della giornata ed altri dati come il peso o un'immagine.