Translate

giovedì 19 ottobre 2023

Passare a DOCKER COMPOSE

Come spiegato nella scheda dedicata a cos’è e a cosa serve Docker Compose, questo tool permette di evitare di utilizzare un comando strutturato come quello sopra spiegato (o più d’uno), cosa utile per diversi motivi che non staremo a ripetere.

Va da sé che, volendo istanziare una nuova app Docker, più che del comando ci interessi il codice YAML corrispondente da aggiungere alla configurazione di Docker Compose. Tale codice recepisce le caratteristiche del comando di lancio manuale.

Dopo aver facilmente installato Docker Compose sullo stesso host ospitante Docker, la prima cosa da fare è definire dunque un file docker-compose.yaml.

Successivamente all’installazione del tool va creata una directory qualunque nel quale ospitare tale file (l’esempio che segue è dedicato al mondo Raspberry Pi OS/Raspberry Pi o genericamente Linux, ma su ambienti Windows o altro è possibile fare la stessa cosa semplicemente creando una cartella dentro la quale poi creare il file):

mkdir -p /home/pi/homeassistant
cd /home/pi/homeassistant
nano /home/pi/
homeassistant/docker-compose.yaml
 
copiamo dunque nell’editor che si aprirà il seguente codice:

version: '3'
services:
  home-assistant:
    container_name: home-assistant
    image: homeassistant/raspberrypi4-homeassistant:stable
    volumes:
    - /home/homeassistant/.homeassistant:/config
    environment:
    - TZ=Europe/Rome
    network_mode: host
    restart: always

 Al termine, uscire salvando (CTRL+X, Y, invio).

Ciò che abbiamo creato è il corrispettivo YAML per Docker Compose del comando di lancio Docker di cui sopra.

 AVVIARE LO STACK

A questo punto, invece di eseguire i comandi manuali che istanzierebbero i due container, è sufficiente eseguire lo stack del quale abbiamo informato Docker Compose tramite il file YAML.

Per eseguirlo, il comando da ricordare è uno e piuttosto semplice. Eseguendolo dall’interno della stessa cartella nel quale è presente il file docker-compose.yaml (il che lascia intuire che, volendo, si potrebbero definire più stack autonomi e indipendenti), il comando è:

docker compose up -d

L’opzione “up” permetterà di creare l’immagine e tirare su il/i servizi, mentre “-d” indicherà di far partire il tutto in background (detached).

Finito!
Docker Compose provvederà a far tutto da sé in base a quanto indicato nel file di configurazione YAML.

GESTIONE ORDINARIA

Nel caso in cui si voglia aggiornare un container in esecuzione scaricando l’ultima immagine disponibile, sarà necessario digitare i seguenti comandi:

docker compose pull home-assistant
docker compose up -d home-assistant

docker compose pull home-assistant
docker compose up --build -d home-assistant 

Infine, per rimuovere eventuali immagini datate e non più utilizzate per alcun container, il comando è:

docker image prune -fa

docker image prune -f

Va da sé che questo tipo di gestione semplifichi enormemente la gestione dei container Docker: anche solo banalmente il solo aggiornamento di un container a fronte della disponibilità di una nuova immagine è estremamente semplificato, perché non è necessario ricordare l’intero comando Docker per l’esecuzione del container, ma è bensì sufficiente utilizzare i comandi (ben più astratti e semplici) sopra elencati.

Come installare Docker su Raspberry Pi OS (Raspbian)

 

Docker

INSTALLAZIONE AUTOMATICA

Una volta collegati via SSH al proprio Raspberry (avendo cura di utilizzare l’utenza “pi“), eseguire innanzitutto un aggiornamento dell’ambiente tramite i seguenti comandi:

sudo apt-get update -y
sudo apt-get upgrade -y
sudo reboot

Successivamente al riavvio causato dall’ultimo comando, installare tramite procedura automatica l’ambiente di virtualizzazione Docker tramite il comando:

sudo curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
sudo chmod +x /tmp/get-docker.sh
sudo sh /tmp/get-docker.sh


Al termine, saltare alla configurazione successiva.

Sudoers

Sudo (a volte considerato l’abbreviazione di Super-user do) è un programma progettato per far sì che gli amministratori di sistema permettano ad alcuni utenti di eseguire certi comandi come root (o altro utente). La filosofia di base è quella di dare meno privilegi possibile, ma permettere ancora di compiere il lavoro. Sudo è anche un modo efficace per registrare chi ha usato un dato comando e quando.

Si consiglia, arrivati a questo punto, di aggiungere docker al gruppo dei sudoers tramite i comandi:

sudo usermod -aG docker $USER
sudo reboot

Dopo l’esecuzione di tali comandi, chiudere la sessione SSH con

exit 

e poi ricollegarsi nuovamente.

Docker compose

Come abbiamo spiegato qui, il tool “Docker Compose” può essere utilizzato sia come plug-in sia come applicazione a se stante. Se si è seguita la parte sopra di installazione, allora si ha già a disposizione la modalità plug-in; qualora si necessitasse di installarlo su una vecchia installazione di Docker, è sufficiente il comando:

sudo apt-get install docker-compose-plugin

altrimenti non c’è bisogno di altro, se non di ricordarsi che qualsiasi esecuzione di “Docker Compose” andrà eseguita tramite il comando “docker compose” non “docker-compose” (quindi senza trattino).


Se invece, per qualche motivo, si decide di adottare “Docker Compose” in modalità applicazione a se stante, l’installazione si effettua tramite:

python3 -m pip install docker-compose
sudo reboot

Mentre, se siete in ambito venv, è possibile usare il comando:

sudo python3 -m pip install docker-compose
sudo reboot

In quetsa modalità, ricordarsi che qualsiasi esecuzione di “Docker Compose” andrà eseguita tramite il comando “docker-compose” non “docker compose” (quindi con il trattino).

Verifiche

Successivamente all’avvenuta installazione e per verificare che Docker sia correttamente installato, eseguire il seguente comando:

docker run hello-world

Per confermare la bontà dell’installazione ed esecuzione di Docker, l’output dev’essere simile al seguente:


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.
(arm64v8)
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/

Complimenti!
Docker è ora installato e operativo sul vostro sistema.


Python/Venv su Raspberry Pi OS

Come aggiornare:

 Home Assistant Core - come aggiornare

Python/Venv su Raspberry Pi OS Raspbian Logo

[ qui la guida d’installazione in questa modalità ]

Collegarsi via SSH (oppure utilizzando il terminale nell’ambiente desktop di Raspberry Pi OS) utilizzando l’utenza “pi“.

Prima di avviare l’update, verificare la versione in uso (e magari segnarsela):

sudo -u homeassistant -H -s
source /srv/homeassistant/bin/activate
hass --version
exit

Successivamente, i comandi da eseguire per l’update all’ultima versione disponibile sono:

sudo systemctl stop home-assistant@homeassistant
sudo -u homeassistant -H -s
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant
exit
sudo systemctl start home-assistant@homeassistant
 
 
 

venerdì 29 settembre 2023

RaspberryPi 4 8gb - Redivivo - per Domare la casa

indomus.it 

Dopo il mio primo Articolo del 2014 che trattava della schedina Raspberry Pi B (primo modello) e dell'accensione di 3 led, oggi, torno alla carica con degli appunti su come usarla per Domotizzare la casa. 

C'e' da considerare che dopo 8 anni, ora mentre scrivo, viene venduta la versione "Raspeberry pi 4 con 8Gb di ram" e potenza di calcolo decine di volte quella della mia "Raspeberry pi 4 con 8Gb di ram"... e parecchi tutorial per la domotica usano quest'utltima versione. 

Prima di tutto, avevo perso qualsiasi ricordo delle credenziali di accesso a "Mirtillo" (il nome "Lampone" è troppo inflazionato :) ).
 

Cos’è WinSCP

WinSCP è un client grafico open source per Windows per SFTP e FTP. Supporta inoltre il protocollo legacy SCP. La sua funzione principale è quella di copiare in modo sicuro file tra un computer locale e uno remoto.

WinSCP

 SSH

SSH è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete informatica, nel nostro caso il Raspberry Pi. Si tratta della metodologia più applicata in fase di amministrazione del Raspberry Pi.
Quando si fa riferimento ad “eseguire un comando” su tale dispositivo, si fa riferimento a una connessione di questo tipo.


In caso il nostro computer utilizzi il sistema operativo Windows, per collegarsi via SSH al nostro Raspberry Pi è necessario scaricare un software gratuito specifico chiamato “PuTTY“.

Scaricare dunque PuTTY al sito
greenend.org.uk cercando il link di putty.exe alla
voce For Windows on Intel x86.

putty

In caso invece la connessione vada a buon fine, la prima volta apparirà una schermata come segue:

putty 2
Cliccare su “Yes“.

 

VNC

VNC è un sistema che ci permette, a differenza di SSH, di collegarci all’ambiente grafico (desktop) offerto da Raspberry Pi come ci si trovasse fisicamente ad un monitor collegato ad esso.

Per collegarsi via VNC al nostro Raspberry Pi è necessario scaricare un software gratuito specifico chiamato “RealVNC“. Questo software, gratuito, è disponibile per svariati sistemi oltre gli scontati Windows, Apple macOS e Linux: sono infatti disponibili versioni per i dispositivi mobili (quindi Android e Apple iOS) oltre che per altri sistemi meno diffusi, come Sun Solaris e HP-UX.

“RealVNC” può essere scaricato gratuitamente dal sito realvnc.com.

Una volta scaricata la versione per il sistema d’interesse, eseguire VNC e inserire, alla voce “VNC Server” l’IP del Raspberry al quale collegarsi:

VNC

Dopodiché cliccare su “Connect”.


Prima dell’accensione

Prima di avviare il Raspberry Pi, è necessario “installare” il sistema operativo sulla microSD, la quale è il corrispettivo dell’Hard Disk in un comune personal computer. Tale sistema operativo è disponibile in molte declinazioni e personalizzazioni; su inDomus faremo spesso riferimento alla più classica, supportata e completa oggi disponibile, ovvero Raspberry Pi OS.
  • un computer (Windows, Apple o Linux);
  • l’immagine del sistema operativo da installare (Raspberry Pi OS o, come detto, altri)
  • la microSD e il relativo adattatore USB.
La procedura che andiamo a descrivere è valida sia per Raspberry Pi OS sia per ogni altro sistema operativo adatto a Raspberry.


Installare il sistema operativo

Per installare Raspberry Pi OS sul supporto microSD le procedure variano in base al computer a disposizione come supporto.

L’elenco completo di immagini di sistema operativo Raspberry Pi OS è disponibile qui (versioni 64bit, consigliate) e qui (32bit).

N.b. La presente guida descrive sì come installare e configurare Raspberry Pi OS, ma la procedura (almeno quella di installazione) è la medesima per qualsiasi altra distribuzione adatta a Raspberry Pi distribuita su immagine a singolo file.

L’opzione più semplice per installare un’immagine su una microSD è quella di utilizzare un semplice tool ad interfaccia grafica.

In questa guida prenderemo in considerazione l’uso di Raspberry Pi Imager, un tool per Windows, macOS e Ubuntu realizzato dalla Raspberry Foundation il quale è in grado di scaricare l’immagine da Internet (permettendo all’utente di scegliere tra varie distribuzioni oppure un’immagine ad hoc presente sul proprio computer) e poi di installarla sulla nostra microSD.

 

Avvio del tool

Saricare e installare il software Raspberry Pi Imager sul computer di supporto (clicca qui per scaricare la versione opportuna). Questa guida dà per assunto che la versione del tool sia almeno la 1.7.2 (uscita nell’aprile 2022).

Collegare la microSD al computer di supporto, dopodiché avviare Raspberry Pi Imager.


Installazione sistema operativo


Nella schermata iniziale del tool è possibile scegliere il sistema operativo (“Operating System“) da installare: scegliere la voce “Raspberry Pi OS (Other)” > “Raspberru Pi OS (64-bit)“. 

Selezionare poi la rotellina delle impostazioni:

Raspberry Pi Imager - Impostazioni

 I parametri che seguono sono quelli da noi consigliati:

  • Set hostname: raspberrypi
  • Enable SSH: Use password authentication
  • Set username e password:
    • Username: pi
    • Password: a propria scelta
  • Configure wireless LAN (per configurare la Wi-Fi)
    • SSID: il nome della propria Wi-Fi
    • Password: la password di accesso della Wi-Fi
    • Wireless LAN Country: IT
  • Set locale settings:
    • Time zone: Europe/Rome
    • Keyboard layout: IT

Cliccare poi sul bottone centrale, per scegliere su quale microSD/disco SSD andare a scrivere il sistema operativo.

Infine, cliccare su “Write” per scrivere il sistema operativo sullo storage.

ATTENZIONE: non interrompere il processo di verifica post-scrittura, come molti a volte fanno: al termine viene effettuato un processo necessario al boot, quindi interrompendo si crea un problema.

Attendere il completamento del task (può metterci anche fino a un’ora, in base alla velocità della connessione Internet – necessaria – e alla velocità di scrittura dati verso la microSD/disco SSD). Terminata la procedura sarà possibile scollegare la microSD/disco SSD e procedere oltre alla prima accensione.

 

Prima accensione

Inserita la microSD nell’apposito slot, è ora possibile accendere Raspberry Pi agendo sull’interruttore posto sul cavo di alimentazione o, in assenza, collegando l’alimentazione sull’unità stessa.
 

Sul monitor l’unità darà visibilità di una serie di attività automatiche di prima configurazione. Al termine, ci troveremo dentro un ambiente grafico desktop offerto da Raspberry Pi OS. Dopo l’avvio, Raspberry Pi OS vi chiederà di configurare alcuni aspetti della configurazione di base, quali la nazione di appartenenza, il fuso orario, la password amministrativa e l’accesso alla vostra rete Wi-Fi (a meno che ovviamente non si sia già provveduto a monte).


- se si è collegati con monitor e tastiera, basta aprire unafinestra di comando (programma "Terminal") e scrivere:
sudo ifconfig

ottenendo in risposta qualcosa del genere

L’IP assegnato in questa sessione sarà quello indicato alla destra della dicitura “inet addr

da cui si ricava l'indirizzo 192.168.1.120


Altre tecniche per scoprire l’IP del Raspberry sono disponibili qui.

- se invece Non si ha monitor e tastiera collegati, conviene collegarsi al router casalingo (solitamente tramite browser al 192.168.1.1) da cui si ricava l'ip del raspberry, e dove conviene, a questo punto, forzarlo a rimanere fisso nel tempo (ogni router ha le sue peculiarità...).

Nota: l’IP assegnato tende a cambiare nel tempo. Per non doverlo scoprire di volta in volta si consiglia caldamente di assegnare un IP statico al vostro Raspberry Pi. Per far ciò, si consiglia di consultare questa guida.

 

Primo aggiornamento

La prima cosa da fare è aggiornare il software. Per farlo, colleghiamoci via SSH al nostro Raspberry Pi ed eseguiamo i seguenti comandi:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt autoremove -y

una volta terminata la procedura automatica di aggiornamento, riavviare il Raspberry Pi con il comando:

sudo reboot

 

Advanced Options

Expand Filesystem

Questa opzione espanderà la tua installazione per riempire l'intera scheda SD, offrendoti più spazio da utilizzare per i file.
Sarà necessario riavviare il Raspberry Pi per renderlo disponibile.

 

File SWAP

Il cosiddetto “file di swap” è un file specifico utilizzato come “estensione” della memoria RAM presente sul computer, in questo caso specifico, sul Raspberry Pi. Tale file viene pre-allocato dal sistema operativo con una dimensione prefissata; noi consigliamo di ampliare questa dimensione per evitare eventuali problemi di spazio insufficiente di memoria (RAM+Swap) in futuro.

Per farlo, eseguire da terminale il seguente comando per fermare il servizio di swap:

sudo dphys-swapfile swapoff

dopodiché modificare il file di impostazione swap tramite il comando:

sudo nano /etc/dphys-swapfile

andando a modificare la chave “CONF_SWAPSIZE” come segue:

CONF_SWAPSIZE=1024

dopodiché uscire salvando (CTRL+X, y, invio) e infine riavviare il servizio di swap tramite il comando:

sudo dphys-swapfile swapon

Disabilitare il wizard

Alcuni utenti lamentano l’ascolto di un messaggio ripetitivo sull’uscita audio che, tramite una voce sintetizzata, dice “To install the screen reader press control alt space“. Si tratta dell’inutile wizard: per disabilitarlo, eseguire il comando:

sudo rm /etc/xdg/autostart/piwiz.desktop

e poi riavviare.

Keepalive

Per evitare che, in futuro, connessioni SSH possano cadere (“broken pipe”) per inattività, consigliamo la configurazione che segue.
Eseguire il seguente comando:

sudo nano /etc/ssh/sshd_config

posizionarsi in fondo al file e aggiungere:

ClientAliveInterval 300
ClientAliveCountMax 2

Uscire e salvare (CTRL+X, y, invio) e poi eseguire il seguente comando:

sudo nano /etc/ssh/ssh_config

e aggiungere in fondo (attenzione ai quattro spazi davanti):

    ServerAliveInterval 30

Uscire e salvare (CTRL+X, y, invio).
Infine, riavviare con un comando:

sudo reboot