Recentemente anche Firefox ha la possibilità di spostare lateralmente la barra delle tab, permettendo di utilizzare meglio lo spazio sugli schermi widescreen ormai generalmente diffusi. Purtroppo al momento (mentre scrivo questo articolo Firefox è giunto alla versione 131) questa opzione non è disponibile tra le opzioni direttamente accessibili da menu, ma occorre aprire le impostazioni avanzate digitando about:config nella barra degli indirizzi e cliccare sul bottone Accetta alla fine dell’avviso di sicurezza che appare.
A questo punto le voci da modificare sono due: sidebar.verticalTabs e sidebar.revamp – si trovano facilmente usando la barra di ricerca – impostandole entrambi su true con con un clic sulle due freccine sovrapposte a destra dovremmo ottenere il risultato voluto.
In caso contrario potrebbe essere semplicemente necessario riavviare Firefox
Tailscale è un ottimo modo per collegare tra loro server diversi. I client sono open source e disponibili per una grande varietà di piattaforme, non da ultima i NAS Synology, compreso il mio vecchio DS214se. La configurazione è rapida e di nessuna difficoltà, le prestazioni sono inferiori a quelle che pare si possano avere utilizzando un semplice tunnel Wireguard ma sono comunque all’altezza dei compiti svolti dai miei server amatoriali. Il problema è che il server di autenticazione è l’unico componente proprietario.
Headscale è un’implementazione opensource del server Tailscale. Al momento in cui scrivo è arrivato alla release 0.12, quindi il progetto non ancora del tutto maturo, ma dalle mie prime prove è già utilizzabile con un buon margine di tranquillità.
Per l’installazione mi sono avvalso di questo tutorial, con qualche aggiunta presa qua e là. Questa procedura prevede che Docker e Docker Compose siano installati sulla macchina che farà da server, io ho utilizzato una VPS molto economica con Debian Buster ed installarliè facile. E’ inoltre necessario un web proxy – io ho utilizzato Nginx con certbot che gestisce i certificati SSL e relativi redirect. Questo è un esempio di configurazione:
Per l’installazione dei client sulle varie piattaforme la documentazione reperibile sul sito di Tailscale o con una qualsiasi ricerca è sufficientemente esauriente e di facile esecuzione.
Come prima cosa creaiamo la cartella in cui installeremo Headscale:
sudo mkdir -p /opt/headscale
Spostiamoci nella cartella appena creata e eseguiamo i seguenti comandi:
abbiamo così creata una cartella per le configurazioni, al cui interno abbiamo creato un file .sqlite per l’archivio e scaricato una copia dell’esempio di file di configurazione. Le modifiche a questo ultimo file saranno minime.
La porta esterna è la 27896, ma siete liberi di cambiarla come meglio preferite, impostate correttamente il proxy (cfr. la configurazione di Nginx qui sopra).
Prima di avviare Headscale editiamo il file di configurazione:
nano config/config.yml
inserendo l’URL del nostro server:
server_url: https://esempio.miodominio.it
Adesso possiamo avviare Headscale:
docker-compose up -d
Sui client, una volta installato Tailscale, basterà specificare il server di login al momento dell’avvio perchè tutto funzioni quasi magicamente:
tailscale up --login-server https://esempio.miodominio.it
Mi è capitato di dover effettuare importanti modifiche ad un sito realizzato con WordPress e avere le necessità di condividere il lavoro con altre persone. Invece di “pasticciare” sul server di produzione, ho pensato di utilizzare il Raspberry Pi 4 che ho in casa come server di sviluppo. Siccome il Raspberry in questione svolge già una miriade di compiti, per non smanettare troppo ho deciso di usare Docker, così da avere un’istanza preconfigurata di WordPress facilmente installabile e rimovibile quando non mi servisse più.
Su Docker Hub esiste l’immagine ufficiale di WordPress, ma si appoggia ad un database MySQL che non sembra funzionare sull’architettura ARM del Raspberry Pi. Ho quindi scelto un’immagine specifica per ARM e l’installazione è andata liscia.
Questo è il mio file docker-compose.yml:
version: '3.1'
services:
wordpress:
image: wordpress:latest
container_name: wordpress
restart: always
ports:
- 8080:80 # il sito comunicherà con l'esterno attraverso la porta 8080, modificabile a piacere
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: test
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: test
volumes:
- /opt/docker/wordpress/data:/var/www/html #per comodità ho creato una cartella dove archiviare i file di WordPress
db:
image: biarms/mysql # ho modificato questa riga per utilizzare l'immagine MySQL di biarms per ARM
restart: always
environment:
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
Non sono un esperto di Docker, quindi probabilmente tutto si potrebbe fare meglio di così, ma in questo modo nel giro di pochi minuti ho avuto un’istanza funzionante di WordPress raggiungibile all’indirizzo http://<IP_RASPBERRYPI>:8080 .
Perchè il sito fosse raggiungibile anche dall’esterno mi è bastato utilizzare il reverse proxy Nginx già presente nella mia configurazione (a voi il divertimento eventuale di configurarlo e aprire le porte del vostro router casalingo, sul web trovare migliaia di tutorial e how-to) aggiungendo queste righe al file .conf già presente in /etc/nginx/sites-enabled :
la mia installazione WordPress è raggiungibile digitando http://MIO_INDIRIZZO_IP/test .
Però si era detto che questo sarebbe stato un sito di prova e non è bello che sia accessibile da chiunque. Per questo ci viene in soccorso la basic authentication di Nginx : basta creare gli utenti desiderati con il comando :
$ sudo htpasswd /etc/apache2/.htpasswd utente1
e poi editare ancora il precedente file .conf di Nginx :
Un altro $ systemctl reload nginx.service per caricare la nuova configurazione e voilà !
A questo punto è bastato fare una copia del sito originale con il plugin Duplicator per WordPress, cancellare il contenuto della cartella data e sostituirlo con i due file creati da Duplicator, un archivio e un installer. Andando all’indirizzo http://MIO_INDIRIZZO_IP/test/installer.php ho avviato la procedura di migrazione e in pochi minuti ho avuto una perfetta replica del mio sito, pronta per essere modificata a piacimento. Una volta soddisfatto delle modifiche, sempre utilizzando Duplicator, potrò compiere la migrazione in senso inverso, dal server di test a quello pubblico.
Cosa c’è di più ovvio da fare in questi giorni di quarantena che andare a frugare tra le vecchie cose con il velleitario intento di mettere un po’ di ordine? Ecco che su uno scaffale a prendere polvere trovo un vecchio scanner Canon, un Canoscan 200 Lide.
Collegato all’ancor più vecchio iMac su cui è installata Debian Bullseye, viene riconosciuto immediatamente. Bingo!
La prima scansione di prova però presenta una barra nera che si estende verticalmente su tutta l’immagine, più o meno così:
Collegato a Mac OS lo scanner funziona invece regolarmente, così da poter escludere che sia un problema hardware.
Tornato a Linux, dopo aver installato sane riesco a far diventare la barra verticale da nera a semplicemente più chiara, ma sempre molto fastidiosa.
Qui il mio vecchio iMac di 12 anni ha lavorato per un po’, su un computer più recente la compilazione non dovrebbe richiedere troppo tempo. Se tutto va come previsto, dovreste avere il pacchetto pronto da installare:
$ sudo dpkg -i libsane_1.0.27-3.2_amd64.deb
Se richiesto, nella stessa cartella troverete anche i .deb con le necessarie dipendenze.
Alla prima prova lo scanner funzionava già perfettamente, ma potrebbe essere opportuno un riavvio del sistema.
Non resta che impedire che il pacchetto venga sostituito con un aggiornamento successivo:
Ho tirato fuori dalla polvere una vecchia Raspberry Pi e, grazie a motionEye, l’ho trasformata in un sistema di videosorveglianza artigianale più che adatto alle mie esigenze. Usando il rilevatore di movimento combinato con Pushover, ho un sistema che mi avvisa nel caso qualcuno entrasse in casa mentre non ci sono. Fortunatamente fino ad adesso ho collezionato solo molti scatti dei viaggi del mio gatto fino alla sua ciotola e documentato i suoi invidiabili pisolini pomeridiani.
Disattivare però motionEye quando mi trovo in casa per evitare che scatti l’allarme ogni volta che passo dal soggiorno è abbastanza scomodo: devo loggarmi al Raspberry Pi via ssh e digitare ogni volta il comando di stop. Stavo cercando se ci fosse il modo di creare un bottone fisico, quando mi sono imbattuto in un articolo che spiega come sia possibile impartire comandi a distanza usando il sistema di messaggistica Telegram.
La configurazione è abbastanza agevole, ma la parte di compilazione, su una board di prima generazione ha richiesto ben di più della classica pausa caffè. (Se la compilazione non andasse a buon fine con un errore simile:
telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion 0' failed. SIGNAL received
date un’occhiata a questa soluzione, basta commentare una riga e ricompilare).
Una volta effettuati tutti i test del caso, ho voluto trovare il modo di automatizzare anche l’avvio di Telegram. Le istruzioni di configurazione del demone mi hanno demoralizzato quasi subito, cosìho optato per una soluzione meno elegante ed efficiente, ma decisamente più alla mia portata.
L’opzione -d permette di lanciare il client come demone, non resta quindi che farlo partire in automatico all’avvio e il gioco è fatto.
Editando poi il file action.lua è poi abbastanza facile creare tutti i comandi che si vogliono.
if (msg.text=='start-motion') then
os.execute('systemctl start motioneye')
send_msg (msg.from.print_name, 'motionEye avviato!', ok_cb, false)
end
Aggiornamento del 27 dicembre 2022: – corretto il link all’articolo originale purtroppo andato offline con un altro che lo riporta fedelmente – corretti i caratteri accentati che non si vedevano correttamente