Creare un veloce sito WordPress con Docker e Raspberry Pi

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 :

location /test/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://0.0.0.0:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;

Dopo aver riavviato Nginx

$ systemctl reload nginx.service

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 :

...
 location /test/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://0.0.0.0:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;

        # authentication
        auth_basic           "Area di test - Accesso riservato";
        auth_basic_user_file /etc/apache2/.htpasswd;

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.

Libreoffice e MacOS Catalina: gioie con qualche dolore

L’introduzione di MacOS Catalina non è stata indolore per molti utenti: il definitivo abbandono delle applicazioni 32-bit ha costretto molti ad un po’ di lavoro extra, mentre alcune funzioni di sicurezza del nuovo sistema operativo Apple a volte creano qualche problema, soprattutto con le applicazioni provenienti da sviluppatori non certificati.

Questa ridda di cambiamenti nella piattaforma possono essere la causa di qualche bug, come nel caso di Libreoffice.
Una nuova installazione della versione 7.0 su un Macbook appena inizializzato aveva problemi nel salvataggio dei file: cliccando sull’icona di salvataggio il sistema sembrava andare in blocco per qualche secondo per poi tornare reattivo ma senza aver effettuato il salvataggio nè tantomeno aver fornito un messaggio di errore esplicativo.

Cercando in rete mi sono imbattuto nella segnalazione di questo bug, probabilmente dovuto all’installazione del language pack.

Seguendo le istruzioni, è bastato spostarsi nella cartella Applicazioni del mio Mac

$ cd /Applications

e digitare il comando:

$ codesign -vvv --deep --strict LibreOffice.app

Rimuovere la password dai file PDF (riga di comando)

A volte capita di ricevere un PDF protetto da password e di non essere quindi in grado di modificarlo nè tantomeno di stamparlo.
Nel mio caso si trattava di una ricetta medica che dovevo assolutamente stampare.
Una prima ricerca su Internet mi ha portato a decine di programmi in grado di risolvere il mio problema, ma poi mi sono chiesto se non potessi evitare di installare un altro programma per modificare soltanto un file.
Le soluzioni per Linux sono molteplici, ma avevo a portata di mano un Mac e quindi ho cercato nei repository di Homebrew dove ho trovato qpdf.

E’ bastato installarlo:

brew install qpdf

e poi con un semplice comando creare un nuovo file PDF senza password:

qpdf --password=PASSWORD_PDF --decrypt file_con_password.pdf nuovo_file_senza_password.pdf

qpdf è uno strumento molto versatile per la manipolazione dei file PDF, potete trovare qui tutta la documentazione.

Gestire un iPod senza iTunes

Se, nonostante tu abbia un Mac, non vuoi o non puoi usare Itunes, Floola è una buona soluzione per trasferire i file sul tuo iPod.

Ho ormai regalato i miei vecchi iPod (un Nano secondo generazione e un vetusto ma sempre comodo iPod Shuffle primissima generazione) ai miei figli, che continuamente mi chiedono di aggiungere canzoni ai loro dispositivi.

Sincronizzare i dispositivi con una libreria iTunes era scomodo e mi limitava ad usare sempre e solo un computer per trasferire la musica, dovendo oltretutto prima importare i brani selezionati.

So di non essere il primo a trovare iTunes poco simpatico e così scomodo da usare da essere considerato una inspiegabile anomalia nell’ecosistema Apple, così mi sono messo alla ricerca di qualcosa di alternativo che mi permettesse di fare una sola cosa: mettere le canzoni sull’iPod senza fare troppi passaggi e soprattutto con qualsiasi computer avessi a portata di mano.

Floola fa proprio questo, anche se per amor di giustizia occorre aggiungere che fa molte più cose del semplice trasferimento di canzoni.
E’ un music manager neanche troppo minimale, con tanto di convertitore istantaneo e una gestione della libreria semplice come volevo io.

Facendo una veloce ricerca su Internet potrete trovare diverse alternativa, ma Floola è multipiattaforma: Windows, Linux e Mac.
La versione attuale è ferma al 2012, ma durante i miei utilizzi ha sempre funzionato bene ed è veloce: questo permette di esaudire in fretta la voglia di Occidentali’s Karma dei vostri figli e riprendere ad ascoltare la vostra playlist 90’s grunge hits.

P.S.
Youtube-dl è un altro grande alleato della tranquillità di ogni genitore moderno.