In questi anni si parla sempre più spesso del concetto di educazione finanziaria. Quel processo che consente a risparmiatori e investitori di migliorare le proprie competenze riguardo a prodotti, concetti e rischi in campo finanziario. Questa presa di consapevolezza del proprio potere economico, unita all'attuale congiuntura economica mondiale, sta portando sempre più persone a rivolgersi ad applicazioni per gestire i propri risparmi ed investimenti. In questa guida vogliamo quindi parlarvi di Firefly 3, un personal finance manager open source molto popolare presso la community di Linux.
Nel dettaglio oggi vi illustreremo come installarlo su Raspberry Pi, cosi da rendere l'applicativo accessibile dalla propria rete locale. Si potrà così creare un hub da cui monitorare l'andamento delle finanze personali e mantenere il controllo dei propri dati finanziari. Firefly 3 infatti, al contrario delle soluzioni Cloud-based, non esegue alcun tipo di tracciamento e non è interessato ai dati dell'utente.
Configurazione hardware
Per il nostro progetto dobbiamo dotarci di Raspberry Pi, va benissimo anche Raspberry Pi 3 se già la possediamo, in alternativa è sempre meglio optare per il modello più recente. Assieme alla board ARM bisogna recuperare una microSD da almeno 64GB, per ospitare il sistema operativo e Firefly 3. Inoltre, per la prima configurazione bisognerà utilizzare le classiche periferiche di input/output come mouse, tastiera e monitor. Non dimentichiamoci infine di recuperare un cavo ethernet cat 6 per connettere il device al router ed ottenere le prestazioni di rete migliori possibili.
Installazione di Raspberry Pi OS
Diamo il via alla guida connettendo la microSD al computer ed avviando il download del file ISO di Raspberry Pi OS, la distribuzione Linux di riferimento per la board, e di un software per eseguire il flash del sistema operativo sulla microSD. L'imaging tool che abbiamo scelto è Raspberry Pi Imager, una utilty creata dal team di Raspberry Pi OS.
Avviamo dunque tale software e per lanciare il processo di flash premiamo su "Choose OS", cosi da indicare al tool il file ISO di Raspberry Pi OS da utilizzare. Successivamente, tramite la voce "Choose Storage", scegliamo la microSD da utilizzare, ovvero quella che abbiamo inserito nel PC. Saremo pronti per selezionare l'opzione "Write" ed avviare il flash della distribuzione.
L'intero processo non dovrebbe durare più di una decina di minuti, dunque mettiamoci comodi ed attendiamo pazientemente. Una volta terminata l'operazione Raspberry Pi Imager ci avvertirà e potremo staccare la microSD dal computer ed inserirla nel Raspberry Pi per il primo boot e la configurazione iniziale della distribuzione.
Installazione di Docker e Firefly 3 su Raspberry Pi OS
Una volta avuto accesso al Desktop di Raspberry Pi OS possiamo focalizzarci su Firefly 3. Controlliamo quindi che tutti i software presenti nel sistema siano aggiornati all'ultima versione.
Apriamo una finestra della shell con la shortcut da tastiera CTRL+ALT+T, oppure reperiamo l'emulatore del terminale dal menu di sistema, ed invochiamo APT, il gestore di pacchetti di riferimento per tutte le distribuzioni derivate da Debian. Digitiamo poi i seguenti comandi:
sudo apt update
sudo apt upgrade -y
L'ultimo comando indica ad APT di installare automaticamente tutti gli upgrade disponibili nei repository. Le tempistiche dell'aggiornamento dipendono dalla quantità di programmi che necessitano dell'update. Ultimato questo step possiamo installare Firefly 3. Per farlo dobbiamo reperire prima di tutto alcuni pacchetti essenziali: wget, un dowload manager e il Web server nginx.
Sempre in bash scriviamo:
sudo apt install wget e nginx
In questa guida andremo ad eseguire Firefly 3 in forma di container Docker. Quindi procediamo alla sua configurazione:
curl -sSL https://get.docker.com | sh
Se lo script scaricato tramite curl non si esegue da solo procediamo al suo lancio:
sudo sh get-docker.sh
Adesso aggiungiamo il nostro utente al gruppo Docker:
sudo usermod -aG docker nomedelnostroutente
e indichiamo al gestore dei demoni systemd di avviare Docker al boot della distribuzione:
sudo systemctl enable docker.service && sudo systemctl enable containerd.service
Siamo ora pronti per raccogliere i file di Firefly 3, generiamo quindi la nuova directory per il programma:
sudo mkdir /opt/firefly3
e spostiamoci dentro di essa:
cd /opt/firefly3
Fatto questo procediamo con il download dei file Docker di Firefly 3 tramite wget:
sudo wget https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml
sudo wget https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example -O .env
sudo wget https://raw.githubusercontent.com/firefly-iii/docker/main/database.env -O .db.env
Configurazione dei Firefly 3 Environment File su Raspberry Pi OS
Prima di partire con la configurazione è necessario generare una chiave di sicurezza (che verrà usata dal Web server) tramite OpenSSL:
openssl rand -base64 24
Dovremmo ottenere un output del genere:
eyLCpd9YmVBG80fq0eg0eigngakoegnaejogn
Salviamo la key in un blocco note, ci servirà successivamente. Ora tramite l'editor nano modifichiamo il file .env
:
sudo nano .env
Dovremo andare a modificare il parametro chiamato APP_KEY
con la nostra chiave, ecco un esempio:
APP_KEY=eyLCpd9YmVBG80fq0eg0eigngakoegnaejogn
Sistemiamo il file con la giusta timezone, almeno per noi europei occidentali, tramite l'opzione TZ
:
TZ=Europe/Amsterdam
Successivamente impostiamo nginx come reverse proxy modificando l'opzione TRUSTED_PROXIES
:
TRUSTED_PROXIES=**
Adesso impostiamo la password del database di Firefly 3:
DB_PASSWORD=LATUAPASSWORD
ed infine salviamo le modifiche al documento con la combinazione di tasti CTRL+O e chiudiamo con CTRL+X.
Passiamo alla modifica del file .db.env
:
sudo nano .db.env
Modifichiamo l'opzione apposita con la password corretta:
MYSQL_PASSWORD=LATUAPASSWORD
e salviamo la modifica al file.
Spostiamoci quindi dentro docker-compose.yml
:
sudo nano docker-compose.yml
In esso troviamo tale stringa:
- 80:8080
e inseriamo al suo posto questo valore cosi da permettere l'accesso a Docker da parte dei device della rete locale:
- 127.0.0.1:8080:8080
Salviamo le modifiche e chiudiamo nano.
Impostazione del web server
Arrivati a questo punto si deve impostare il Web server in modo da rendere Firefly accessibile tramite browser:
sudo nano /etc/nginx/sites-available/firefly3.conf
Utilizzeremo un dominio specifico, quindi andremo ad impostare i valori in questo modo:
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
Salviamo e chiudiamo il file. Ora bisogna generare un certificato SSL e possiamo crearne uno self-signed con tale comando:
sudo openssl req -x509 -nodes -days 1461 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Ad ogni domanda che ci verrà posta premiamo il tasto INVIO. Il valore 1461
indica i giorni della durata del certificato ma potete modificare tale dato come desiderate.
Confermiamo ora le modifiche eseguendo il riavvio del demone di nginx:
sudo systemctl restart nginx
Avvio del container con Firefly 3
Siamo pronti per eseguire l'avvio del container di Firefly 3:
docker compose up -d
Fatto questo potremo accedere alla Web interface di Firefly da qualsiasi browser, è sufficiente che il device sia connesso alla rete locale. Apriamo per esempio Chrome e digitiamo:
https://ipdelraspberry
Se non conosciamo l'IP locale del Raspberry Pi possiamo lanciare il comando seguente in bash per ottenerlo:
hostname -I