Installare Pi-Hole su una board Orange Pi One

Di recente ho riesumato un vecchio Orange Pi One comprato ancora nel lontano 2017 con 512MB di RAM (qui trovate le caratteristiche della dev board) dall’armadio e ho pensato che al posto di lasciargli prendere polevere la potevo usare come server per bloccare i banner pubblicitari mostrati su molti siti web dove possono nascondere insidie e pericoli.

Per far questo la mia scelta è caduta su Pi-Hole, uno dei più famosi e collaudati software, che può essere installato comodamente su una board Orange Pi One.

PiHole si “sostituisce” al vostro server DNS e intercetta tutte le richieste, scegliendo quale approvare e quale no secondo una blacklists che contiene i siti malevoli, trackers e pubblicità:

Predisporre il sistema

Abbiamo il nostro Orange Pi One tra le mani, insieme a una mini-SD da almeno 8-16GB dove installare il sistema operativo. Consiglio fortemente di usare Armbian nella sua ultima release per server, scaricabile gratuitamente da qui; la versione che ho usato è l’Armbian 22.11 Jammy (basata su Ubuntu Jammy ) nella versione CLI (non mi serviva la parte desktop e così allegerisco pure il sistema visto che ho solo 512MB).

Scriviamo l’immagine ISO nella mini-SD e inseriamola nello slot dell’OrangePi. Colleghiamolo alla rete casalinga (Obbligatoriamente con il cavo ethernet), colleghiamo l’alimentazione via USB e attendiamo il boot del sistema. Dal Router ricaviamo l’IP di questa board e ci colleghiamo via Putty (o con qualsiasi altro client SSH) alla console. Al primo login lo user da inserire è root mentre la password è 1234 che dovremmo obbligatoriamente cambiare.

I passi da seguire poi sono i seguenti (li trovate qui nella guida di Armbian):

Nel caso col Router non riusciste a trovare l’IP della vostra board, potete usare il seguente tool: Angry IP Scanner.

Ora impostiamo un IP fisso per il nostro Orange Pi One, fuori dal range del server DHCP, eseguendo prima il backup del file /etc/network/interfaces per poi modificarlo successivamente:

cp /etc/network/interfaces /etc/network/interfaces.backup
nano /etc/network/interfaces

e copiamo questa configurazione Ethernet (adattandola alle vostre esigenze), dove il campo “address” contiene l’indirizzo IP statico che vogliamo assegnare al dispositivo:

# Ethernet adapter 0
auto eth0
allow-hotplug eth0
#no-auto-down eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
#dns-nameservers 1.1.1.1 1.0.0.1

Una volta riavviata la board, da utente root date il comando:

curl -sSL https://install.pi-hole.net | bash

e seguite poi le indicazioni a video, fino al termine della procedura. Se il tutto si completa senza errori, aprendo un browser e navigando su 192.168.1.100 (nel mio esempio) dovrebbe darvi il benvenuto il logo verde e rosso, su sfondo nero, di Pi-Hole. Cliccando su link subito sotto o navigando su /admin, si accede all’interfaccia di riepilogo e amministrazione.

Pro memoria, per impostare la password di amministrazione digitare da console il comando:

pihole -a -p securepassword

Configurare la rete per usare Pi-Hole

Come dicevo, PiHole si sostituisce al server DNS di default (generalmente quello del router, che poi fa un semplice forward verso il DNS del provider) per intercettare e bloccare le chiamate verso siti non desiderati (trackers, pubblicità…).

Per farlo funzionare, quindi, ci sono due opzioni alternative e complementari:

  • impostare come server DNS, su tutti i dispositivi nella nostra rete, l’IP del PiHole (es. 192.168.1.2);
  • impostare l’IP del Pi-Hole come server DNS fornito dal DHCP alle richieste dei dispositivi;

    Personalmente suggerisco la seconda, ma qui è difficile darvi istruzioni più precise perché dipendono dal Vs router.

    Per verificare le impostazioni DNS del vostro sistema potete:

    • su Windows, potete aprire un terminale (“cmd“) e digitare ipconfig /all. Tra le varie voci, troverete anche quella relativa ai server DNS attualmente in uso. Qui deve comparire l’IP del PiHole;
    • su GNU/Linux, dipende da cosa usate. Potrebbe essere in /etc/resolv.conf oppure, se avete systemd, lanciare il comando systemd-resolve --status;
    • su Android potete usare una app come DNSChanger;

    Discovering Pi-Hole

    Non appena Pi-Hole entrerà in funzione e la rete sarà correttamente configurata, inizierà a ricevere le richieste DNS provenienti dai dispositivi connessi. Il contatore in prima pagina inizierà a crescere velocemente di numero e, dopo essersi autenticati nell’interfaccia di amministrazione, i dettagli delle chiamate permesse e bloccate ci permetteranno di avere una idea più precisa di cosa accade sulla nostra rete casalinga.

    Per la stragrande maggioranza dei contesti non c’è bisogno di fare altro. Pi-Hole farà il suo “sporco” lavoro, bloccando le pubblicità invasive che trovate a giro sul web in modo pulito e discreto.

    Dall’interfaccia di amministrazione, nel menù di sinistra, ci sono alcune funzioni che potrebbero tornare utili. Ad esempio, impostare alcuni siti web in white (concesso) o blacklist (negato). Magari perché non vogliamo, oppure desideriamo, andare su un sito bloccato. Funzione comoda, ad esempio, per impedire che i figli minorenni vadano su siti pornografici, di gioco online o di scommesse (e qui i vostri figli mi odieranno…).

    C’è la possibilità di creare dei gruppi con permessi diversi, ma questa funzione è possibile solo se il DNS è impostato direttamente su Pi-Hole nei dispositivi (con il DNS forward non funzionerà).

    Si può anche interrompere temporaneamente il blocco dei siti (“liberi tutti“) perché, magari, abbiamo una necessità e sospettiamo che Pi-Hole blocchi la connessione.

    Ovviamente bisogna ricordarsi di aggiornare la lista (“Update Gravity“) dei domini da bloccare ogni tanto. Generalmente lo fa da solo ma è sempre bene verificare, ogni tanto.

    Installare Home Assistant Core su una distribuzione Linux Ubuntu

    Dopo aver visto come installare Home Assistant Supervised su una distribuzione Linux Debian, vediamo ora come installare Home Assistant Core su una distribuzione Linux Ubuntu.

    Questa modalità non è la mia preferita poichè, come potete vedere in questa tabella comparativa delle varie versioni di installazione di Home Assistant,

    la versione Core non permette le installazioni degli Add-on e la gestione Supervisor, ma se non volete avere a che fare con i container docker… questa è quella che fa per voi.

    Prima di iniziare è buona norma aggiornare tutto il sistema all’ultima versione:

    sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

    Ricordo che la nuova versione di Home Assistant richiede la verisione python 3.9 (con relativo pacchetto: python3-dev) mentre con l’ultima version di Ubuntu attualmente disponibile, si installa la versione 3.8.

    Verifico se la versione di python 3.9 è disponibile:

    sudo apt list | grep python3.9

    e poi la installo (assieme ai “suoi pacchetti necessari”):

    sudo apt-get install python3.9 python3.9-dev python3.9-venv -y

    Modifico il collegamento simbolico in /usr/bin/python3.9 per /usr/bin/python3 e impostare il nome del gruppo su “python3”. Il nome del gruppo deve essere lo stesso per tutte le versioni di Python:

    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2

    A questo punto configuro il sistema di usare la versione di python 3.9 com eversione di default:

    sudo update-alternatives --config python3

    Ora installo tutte le dipendenze:

    sudo apt-get install -y python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata

    Aggiungi un account per Home Assistant Core chiamato homeassistant. Poiché questo account è solo per l’esecuzione di Home Assistant Core, gli argomenti extra di -rm vengono aggiunti per creare un account di sistema e creare una home directory.

    sudo useradd -rm homeassistant

    Ora passiamo a creare l’ambiente. Per prima cosa creeremo una directory per l’installazione di Home Assistant Core e cambieremo il proprietario nell’account homeassistant.

    sudo mkdir /srv/homeassistant
    sudo chown homeassistant:homeassistant /srv/homeassistant

    Il prossimo passo è creare e passare a un ambiente virtuale per Home Assistant Core. Questo sarà fatto come account homeassistant. (mi raccomando il punto alla fine del 3° comando… non è un refuso di battitura)

    sudo -u homeassistant -H -s
    cd /srv/homeassistant
    python3 -m venv .
    source bin/activate

    Dopo aver attivato l’ambiente virtuale (notare il prompt che cambia in (homeassistant) homeassistant@xxxxxxxxx:/srv/homeassistant $) sarà necessario eseguire il seguente comando per installare un pacchetto Python richiesto.

    python3 -m pip install wheel

    Dopo aver installato il pacchetto Python richiesto, è giunto il momento di installare Home Assistant Core!

    pip3 install homeassistant

    Avvia Home Assistant Core per la prima volta. Questo completerà l’installazione per te, creando automaticamente la directory di configurazione .homeassistant nella directory /home/homeassistant e installando tutte le dipendenze di base.

    hass

    Ora puoi raggiungere la tua installazione tramite l’interfaccia web su http://homeassistant.local:8123.

    Se questo indirizzo non funziona, puoi anche provare http://localhost:8123 o http://xxx.xxx.xxx.xxx:8123 (sostituisci xxx.xxx.xxx.xxx con l’indirizzo IP della tua macchina).

    Quando esegui il comando hass per la prima volta, scaricherà, installerà e memorizzerà nella cache le librerie/dipendenze necessarie. Questa procedura può richiedere da 5 a 10 minuti. Durante questo periodo, potresti ricevere l’errore “Impossibile raggiungere il sito” quando accedi all’interfaccia web. Questo accadrà solo per la prima volta e i successivi riavvii saranno molto più veloci.

    Spero che questa guida possa esserti d’aiuto.

    Installare Home Assistant Supervised su una distribuzione Linux Debian

    In questo periodo mi sto dilettando con lo studio di Home Assistant per cercare di rendere la domotica della mia casa accessibile da un solo punto e non da infinite app presenti nel cellulare, causa diversi fornitori presenti (Xiaomi, TP-Link, dispositivi compatibili Smart Life, …).
    Allo stato attuale sto facendo i test su una macchna Virtuale (uso Oracle VM Virtual Box) e provo le varie versioni esistenti di Home Assistant per torvare quella che mi da la maggiore flessibilità.

    Partendo dalla tabella sopra esposta e non volendo essere vincolato dalla versione OS (HassOS) perchè troppo blindata per i miei gusti, ho deciso di instalare la versione Supervised, visto che è l’unica che permette la gestione Supervisor.

    Passi da fare pre-installazione

    Passaggio 1: diventare root

    Prima di iniziare, dobbiamo assicurarci di aver effettuato l’accesso come root; Debian potrebbe non avere sudo installato, quindi per diventare root digitiamo:

    su -

    Quindo inseriamo la password di root, che abbiamo configurato durante l’installazione, assicuriamoci di non dimenticare il trattino in quanto consente al sistema di eseguire gli script di accesso per l’utente root.

    Tuttavia, se sei su un sistema con sudo installato possiamo usare il comando:

    sudo su -

    Prima di procedere, verifichiamo di essere l’utente root digitando il comando:

    whoami


    Passaggio 2: aggiornare il sistema

    Prima di iniziare è buona norma aggiornare il proprio sistema, per farlo inseriamo i tre seguenti comandi:

    apt-get update
    apt-get upgrade -y
    apt-get dist-upgrade -y


    Passaggio 3: installare le dipendenze

    Installiamo ora tutte le dipendenze richieste con il seguente comando:

    apt-get install \
    apparmor \
    jq \
    wget \
    curl \
    udisks2 \
    libglib2.0-bin \
    network-manager \
    dbus \
    lsb-release \
    systemd-journal-remote -y

    Installazione del Docker Engine

    Pasaggio 1: Eseguire lo script di installazione di Docker CE

    Ora dobbiamo eseguire lo script di installazione di Docker CE per Linux:

    curl -fsSL get.docker.com | sh

    Passaggio 2:Testare l’installazione di Docker (facoltativo)

    Per testare l’installazione della tua finestra mobile, eseguiamo lo script hello-world:

    docker run hello-world

    Se Docker funziona correttamente, verrà visualizzato il seguente messaggio:

    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

    Installazione di Home Assistant

    Installare Home Assistant è facile, basta seguire questi passaggi:

    Passaggio 1: Installare  OS Agent

    L’OS Agent consente all’Home Assistant Supervisor di comunicare con D-Bus e sarà presto richiesto

    Per installarlo è sufficiente verificare qui quale è l’ultima versione e poi utilizzare i seguenti comandi inserendo la versione corretta (ad oggi è la 1.4.1):

    wget https://github.com/home-assistant/os-agent/releases/latest/download/os-agent_1.4.1_linux_x86_64.deb
    dpkg -i os-agent_1.4.1_linux_x86_64.deb

    Passaggio 2: Esegui lo script di installazione di Home Assistant

    Ora che siamo root esegui semplicemente questi comandi per scaricare e installare Home Assistant Supervised:

    wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
    dpkg -i homeassistant-supervised.deb

    Al termine dell’esecuzione, dovresti essere in grado di accedere a Home Assistant digitando sul browser:

    http://xxx.xxx.xxx.xxx:8123

    Dove xxx.xxx.xxx.xxx è l’IP dove hai effettuato l’installazione.

    Quando esegui il comando hass per la prima volta, scaricherà, installerà e memorizzerà nella cache le librerie/dipendenze necessarie. Questa procedura può richiedere da 5 a 10 minuti. Durante questo periodo, potresti ricevere l’errore “Impossibile raggiungere il sito” quando accedi all’interfaccia web. Questo accadrà solo per la prima volta e i successivi riavvii saranno molto più veloci.

    Può capitare (almeno nella macchna virtuale mi è successo coì nelle varie prove fatte) che al riavvio l’IP sia aumentato di una unità… se dovessi avere problemi al riavvio successivo, questa potrebbe essere la causa.

    Spero che questa guida possa esserti d’aiuto.

    PRESENTAZIONE DEL MIO BLOG: I PENSIERI DEL PERITO

    Leggendo sul web è evidente che il primo post del blog è sempre un dilemma, per non dire un vero e proprio incubo, poiché con il primo post si gettano le basi del nostro “contenitore di testi” o per meglio dire “blog”, in sostanza è il biglietto da visita con cui ci presentiamo al mondo digitale, è il nostro primo sasso nel mare del web….

    Qui inseritò i miei pensieri da Nerd, ma forse anche altro.. vedremo, che spero possano essere utili anche a Voi, non solo a me come promemoria o altro…