Oggi è normalissimo fare affidamento su più servizi Web per tenere traccia delle news giornaliere e, non di rado, gli utenti si affidano ad un sistema di feed RSS online. Tuttavia non sempre si tratta di piattaforme gratuite. Spesso nascondono degli ads o prevedono una forma di abbonamento mensile per l'accesso contemporaneo da più dispositivi. Fortunatamente esistono diverse alternative per realizzare un aggregatore RSS (Really Simple Syndication) ospitato in locale su un server presente nella prorpria rete LAN.
Con la guida di oggi impareremo come realizzare un servizio di RSS aggregator/reader su di un Raspberry Pi, in modo da rendere sempre disponibile la lettura delle news da tutti i dispositivi connessi al router. Questa board low-cost è infatti perfetta per tale scopo, può rimanere accesa 24 ore su 24 senza problemi ed è possibile collocarla dietro un modem date le dimensioni esigue. Oltretutto il suo SoC ARM ha consumi energetici notevolmente minori rispetto ad un PC con la più tradizionale architettura hardware x86.
Il software che andremo ad utilizzare per questo tutorial è FreshRSS. Si tratta di un progetto completamente open source facilmente configurabile su qualsiasi distribuzione Linux. Nello specifico lo installeremo su Raspberry Pi OS, il sistema, basato sui pacchetti software provenienti dai repository di Debian sviluppato dai coder della Raspberry Pi Foundation.
L'hardware
Come accennato, per realizzare tale progetto è necessario dotarsi della board ARM Raspberry Pi. Per il nostro scopo consigliamo Raspberry Pi 4 model B con 8GB di RAM. Ma va benissimo anche l'edizione precedente Raspberry Pi 3 model B, sempre con 8GB di memoria RAM. Oltretutto è necessario reperire: un scheda microSD da almeno 64GB, in modo da ospitare la distribuzione Linux Raspberry Pi OS ed i vari pacchetti software che utilizzeremo, un alimentatore USB-C, per alimentare il dispositivo, ed un cavo ethernet cat6 con cui connetterci al router. Per la configurazione iniziale consigliamo inoltre di dotarvi di mouse, tastiera e monitor con cavo HDMI.
Installazione e configurazione di Raspberry Pi OS
Iniziamo eseguendo il download del media d'installazione di Raspberry Pi OS e di un imaging tool a nostra scelta. Noi suggeriamo di affidarvi a Raspberry Pi Imager. Si tratta di una pratica utility, realizzata dal team di Raspberry Pi, che consente di realizzare in pochi minuti una microSD avviabile con Raspberry Pi OS.
Si deve quindi inserire la microSD nel computer ed aprire Raspberry Pi Imager. Successivamente bisogna cliccare sul "Choose OS" per selezionare il file ISO di Raspberry Pi OS. Selezioniamo poi "Choose Storage" per indicare al programma la microSD connessa al PC e, infine, clicchiamo "Write" per da avviare il processo di flash del sistema operativo.
Non appena il processo sarà terminato dovremo inserire la microSD nel Raspberry Pi, all'interno dell’apposito alloggiamento. Saremo quindi pronti ad avviare il processo d'installazione del sistema operativo vero e proprio. Colleghiamo la board all'alimentatore, al monitor ed a mouse e tastiera cosi da procedere con il wizard di configurazione iniziale.
L'intera procedura è davvero molto semplice, basta seguire le pratiche istruzioni a schermo. Dunque non ci dilungheremo ulteriormente su tale aspetto, andando a focalizzarci sulla configurazione di FreshRSS.
Installazione e configurazione di MariaDB, Apache e PHP
Prima di installare FreshRSS è necessario "preparare il terreno" installando alcune dipendenze: PHP, il Web server Apache e il database relazione MariaDB. Fortunatamente tutti questi componenti software sono reperibili nei repository di Raspberry Pi OS.
Avviamo il nostro emulatore di terminale e tramite la CLI del gestore di pacchetti APT installiamo gli applicativi sopracitati:
sudo apt install git apache2 mariadb-server php8.0 php8.0-common php8.0-curl php8.0-xml php8.0-gmp php8.0-mbstring php8.0-zip php8.0-mysql
Ultimata la loro installazione possiamo passare alla configurazione del database con MariaDB. Dunque torniamo nella shell e lanciamo il seguente comando:
sudo mysql_secure_installation
Seguite dunque le istruzioni che compariranno in bash ed inserite le credenziali dell'utente amministratore. Alla domanda se desiderate utilizzare lo "unix_socket" potete rispondere "Yes", mentre quando viene richiesto se cambiare la password dell'account potete rispondere "No". Al resto delle opzioni proposte dovete invece rispondere sempre "Yes".
Creazione del database con MariaDB
A questo punto possiamo avviare la generazione del database SQL con MariaDB:
sudo mariadb -u root
CREATE DATABASE freshrss_db;
Per poi creare un nuovo utente del database e fornirgli tutti i permessi necessari per accedere ai dati:
CREATE USER 'freshrss_usr'@'localhost' IDENTIFIED BY 'LATUAPASSWORD';
GRANT ALL PRIVILEGES ON freshrss_db.* TO 'freshrss_usr'@'localhost';
FLUSH PRIVILEGES;
exit;
Installazione e configurazione di FreshRSS
FreshRSS non è presente nei repository della distribuzione. Tuttavia possiamo reperirlo sulla piattaforma di code sharing Github sfruttando git. Spostiamoci quindi nella directory /usr/share/
:
cd /usr/share/
ed avviamo il download del programma:
sudo git clone https://github.com/FreshRSS/FreshRSS.git
Ora dobbiamo assicurarci che www-data
abbia i permessi di lettura e scrittura per tale directory:
sudo chown -R www-data:www-data /usr/share/FreshRSS
Fatto questo bisogna configurare Apache in modo che punti su FreshRSS. Per farlo bisogna creare un file chiamato freshrss.conf
nella directory /etc/apache2/sites-available
:
sudo nano /etc/apache2/sites-available/freshrss.conf
Con il precedente comando abbiamo indicato al sistema di creare il documento sfruttando l'editor di testo Nano. Tale file deve essere popolato con questi settaggi:
<VirtualHost *:80>
DocumentRoot /usr/share/FreshRSS/p
</VirtualHost>
Per salvare la modifica usiamo la shortcut da tastiera CTRL+O ed infine chiudiamo il file con CTRL+X. Ora che la configurazione è stata impostata possiamo abilitare le modifiche usando il tool a2ensite:
sudo a2ensite freshrss.conf
Inoltre, visto che stiamo utilizzando la porta 80
senza aver impostato un servername, è necessario modificare la configurazione di default che adotta Apache:
sudo a2dissite 000-default.conf
Infine dobbiamo riavviare il demone del Web server, tramite systemd, cosi da concretizzare le modifiche eseguite:
sudo systemctl reload apache2
Connessione alla Web interface di FreshRSS
Siamo pronti ad accedere all'interfaccia Web di FreshRSS tramite browser. Per farlo bisogna conoscere l'indirizzo IP locale del Raspberry Pi. Dunque torniamo nella shell e digitiamo:
hostname -I
Dovremmo ricevere un output simile al seguente:
192.168.1.2
Successivamente spostiamoci nella barra degli URL del browser e digitiamo l'indirizzo IP del device:
http://192.168.1.2/
Se tutta la configurazione preliminare è stata eseguita correttamente dovrebbe avviarsi il wizard di FreshRSS. Bisogna quindi selezionare la lingua, inserire il nome, le credenziali e la tipologia (MySQL) del database creato in precedenza ed in fine cliccare su "Submit". Infine viene richiesto di creare un utente per poter accedere alla Web interface e ai relativi feed RSS.