Archiviare foto senza cloud con Linux e Piwigo

Come archiviare foto e creare album personali senza appoggiarsi al cloud con Piwigo. Guida all'installazione su Linux per allestire il proprio private cloud.

Uno degli strumenti più conosciuti per gestire foto e video, creare album e backup è Google Foto. Sul cloud sono disponibili alternative come Amazon Foto, Microsoft OneDrive, Apple iCloud e altri ancora meno conosciuti.

Tutti questi servizi sono sicuramente molto pratici da utilizzare ma hanno due difetti: in primo luogo i propri dati, seppur conservati in forma sicura, vengono trasferiti su server di terze parti. Per secondo, lo spazio è limitato e se si devono memorizzare e catalogare volumi importanti di dati potrebbe essere necessario investire cifre importanti a cadenza mensile o annuale.

Soluzioni alternative per archiviare foto senza cloud ci sono e risultano anche molto efficaci. I principali produttori di NAS, come ad esempio Synology, offrono applicazioni per trasformare i loro dispositivi di memorizzazione come supporti molto capienti per creare album fotografici senza ricorrere al cloud.

Creando un server locale oppure rivolgendosi a un fornitore di terze parti si può creare il proprio servizio personal cloud. Abbiamo già presentato PhotoPrism: in questo articolo ci concentriamo su un altro software libero e open source, Piwigo.

Archiviare foto con Piwigo: le principali caratteristiche

Piwigo è un’applicazione Web che aiuta ad archiviare foto senza alcun limite sul numero di oggetti gestibili. È adatto a organizzazioni, professionisti e privati: concentrandosi sulla semplicità d’uso e sulle prestazioni, Piwigo consente di catalogare ed organizzare migliaia di foto.

Piwigo non è nato oggi ma è un prodotto maturo grazie a oltre 20 anni di continue migliorie e innovazioni. È sempre stato e sempre resterà un software libero: il codice sorgente è liberamente accessibile, verificabile ed eventualmente modificabile da parte di chiunque.

Per installare Piwigo è necessario dotarsi di una macchina Linux: si può eventualmente fare pratica installando prima il software in una macchina virtuale per poi installare e configurare la piattaforma sul server finale.

Se si volesse rendere Piwigo accessibile via HTTPS e fare in modo che i dati vengano trasferiti attraverso un canale crittografato, si può richiedere un certificato Let’s Encrypt: è gratuito e si rinnova automaticamente prima della scadenza.
Il consiglio è quello di dotarsi di un dominio di terzo livello modificando i record DNS in modo che punti all’IP pubblico della macchina sulla quale si installerà Piwigo.
Se si prevede di installare Piwigo su un sistema locale (anche in una macchina virtuale), è importante attivare sul router il port forwarding ovvero inoltrare le porte TCP 80 e 443 dall’IP pubblico all’IP locale della macchina su cui è installato Piwigo.

Let’s Encrypt necessita che le porte TCP 80 e 443 siano aperte e raggiungibili da remoto: diversamente non verrà rilasciato il certificato digitale per il nome a dominio.

Installare e configurare Piwigo su una macchina Ubuntu

Installare Piwigo e usare l’applicazione web come piattaforma per archiviare foto, organizzarle e cercarle in modo molto semplice si concretizza nella configurazione di una macchina Linux.
Nel nostro caso abbiamo utilizzato un sistema Ubuntu 20.04 LTS.

Per iniziare basta collegarsi con la macchina Linux (ad esempio via SSH; come client si può usare PuTTy) oppure usare direttamente la finestra del terminale se fosse un sistema collegato alla rete locale.

I seguenti comandi permettono di aggiornare la distribuzione Linux quindi di installare tutti i componenti necessari per il funzionamento di Piwigo:

sudo apt update && sudo apt upgrade -y

sudo apt install apache2 mariadb-server php -y

sudo apt install libapache2-mod-php php-common php-intl php-mysql php-gd php-xml php-ldap php-zip php-mbstring php-xmlrpc php-cli php-curl unzip -y

Con il comando seguente si avvia la configurazione del DBMS MariaDB:

sudo mysql_secure_installation

In questo caso è necessario impostare la password dell’account root e rispondere Y alle altre domande.

A questo punto si può accedere alla configurazione del file php.ini digitando quanto segue:

sudo nano /etc/php/7.4/apache2/php.ini

Premere CTRL+W per cercare ciascuna delle stringhe seguenti e impostare le varie direttive così come indicato:

memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
date.timezone = Europe/Rome

Per salvare le modifiche e chiudere l’editor di testo basta premere prima CTRL+O e poi CTRL+X.

Conclusa questa prima parte della configurazione si può predisporre il database che Piwigo utilizzerà una volta in esecuzione. Per farlo basta digitare sudo mysql -u root -p quindi introdurre i comandi riportati di seguito:

CREATE DATABASE piwigo_db;

CREATE USER 'piwigo_user'@'localhost' IDENTIFIED BY 'PASSWORD';

GRANT ALL ON piwigo_db.* TO 'piwigo_user'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

FLUSH PRIVILEGES;
EXIT;

L’unica informazione da modificare è PASSWORD: al posto di tale stringa va indicata una password sufficientemente lunga e complessa che sarà utilizzata dall’applicazione web Piwigo per accedere ai dati da essa stessa gestiti.

I comandi successivi permettono di scaricare il file d’installazione di Piwigo, di installare l’applicazione e di predisporre i permessi corretti affinché sia raggiungibile da Web:

curl -o piwigo.zip https://piwigo.org/download/dlcounter.php?code=latest

sudo unzip piwigo.zip -d /var/www/html/

sudo chown -R www-data:www-data /var/www/html/piwigo/

sudo chmod -R 755 /var/www/html/piwigo/

È poi la volta di creare un file per impostare un virtual host in Apache:

sudo nano /etc/apache2/sites-available/piwigo.conf

Incollando all’interno del file di configurazione (CTRL+V) quanto segue si fa in modo che Piwigo risponda sulla porta HTTP (TCP 80) alle richieste di connessione in ingresso.

<VirtualHost *:80>
ServerAdmin admin@nomedominiotest.com
DocumentRoot /var/www/html/piwigo
ServerName terzolivello.nomedominiotest.org

<Directory /var/www/html/piwigo/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Al posto di admin@nomedominiotest.com va indicato il proprio indirizzo email mentre terzolivello.nomedominiotest.org va sostituito con il nome a dominio di terzo livello che punta a Piwigo.

Al solito, per salvare le modifiche e chiudere l’editor basta premere CTRL+O e poi CTRL+X.

Per rendere effettive le modifiche e riavviare il server Apache digitare i seguenti tre comandi:

sudo a2ensite piwigo.conf

sudo a2enmod rewrite

sudo systemctl restart apache2

Ottenere un certificato digitale Let’s Encrypt da assegnare al terzo livello usato per Piwigo

Con i passaggi descritti in precedenza Piwigo risulterà già accessibile sulla porta TCP 80 digitando nel browser l’indirizzo del nome a dominio di terzo livello. Lo scambio dei dati con Piwigo avverrà però in forma non crittografata (cosa sconsigliata dal punto di vista della sicurezza).

Per richiedere un certificato Let’s Encrypt e fare in modo che venga automaticamente assegnato al terzo livello che punta all’installazione di Piwigo basta digitare quanto segue come peraltro spiegato anche nella guida ufficiale di EFF (Electronic Frontier Foundation):

sudo snap install core; sudo snap refresh core

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

sudo certbot --apache

La procedura da seguire per l’ottenimento del certificato digitale è semplicissima: basta rispondere Y alla prima domanda; N alla seconda se non si volesse condividere il proprio indirizzo email con EFF e infine confermare il nome a dominio per il quale si richiede il certificato Let’s Encrypt.

Dopo aver ottenuto il certificato Let’s Encrypt, si può digitare il nome a dominio di terzo livello nella barra degli indirizzi del browser: la connessione a Piwigo avverrà usando il protocollo HTTPS e un certificato digitale valido.

Nel campo Utente va indicato piwigo_user ovvero il nome dell’utente creato a livello di database MySQL/MariaDB. La password deve essere quella corretta specifica in precedenza.
Come nome del database va specificato piwigo_db mentre come prefisso per le tabelle si può lasciare inviato quello che viene proposto.

Nella seconda parte della schermata di configurazione si deve specificare l’account amministratore che si desidera creare (nome utente, password e indirizzo email).

Cliccando su Inizia l’installazione, la procedura si concluderà quasi istantaneamente.
A questo punto, per proseguire, basta fare clic su Visitare la galleria e Voglio aggiungere delle foto.

La creazione del primo album e di altri archivi è cosa che si conclude in pochi secondi: Piwigo prende infatti per mano l’utente e lo guida passo dopo passo. L’upload delle immagini è semplice e immediato. Ovviamente, nel caso in cui si fosse usata una macchina remota per creare il proprio server di private cloud bisognerà considerare la banda in upload fornita dall’operatore di telecomunicazioni col quale si è stipulato un contratto.
Diversamente, se il server di Piwigo fosse locale l’upload delle immagini risulterà istantaneo.

Una volta creati uno o più album fotografici con Piwigo è possibile utilizzare plugin per condividerli, per abilitare attività di sincronizzazione, per installare plugin che consentono di estendere le funzioni della piattaforma.

È importante tenere presente che per impostazione predefinita Piwigo crea album pubblici: anche chi non possiede alcuna credenziale di accesso può collegarsi al server e visualizzare tutte le foto.
È fondamentale cliccare su Album, Proprietà nella colonna di sinistra quindi spostare dal riquadro Album pubblico ad Album privato tutti gli archivi fotografici che non debbono essere pubblicamente accessibili.

Per evitare che altri utenti possano registrarsi sulla propria installazione di Piwigo basta fare clic su Configurazione, Opzioni e disattivare la casella Consentire registrazione degli utenti cliccando infine su Salva le impostazioni in basso.

È possibile anche cliccare su Plugin nella colonna di sinistra, attivare LocalFiles Editor, fare clic sul pulsante Configurazione quindi incollare quanto segue nel file per poi salvare le modifiche:

$conf['guest_access'] = false;
$conf['newcat_default_status'] = 'private';

Così facendo l’accesso alla piattaforma Piwigo come ospiti sarà disattivato e i nuovi album saranno automaticamente creati come privati.

La dashboard di Piwigo (Quadro di controllo) mostra l’attività degli utenti nel corso del tempo sulla piattaforma, il numero di foto memorizzate e lo spazio complessivamente occupato.

Utilizzando il firewall UFW in Ubuntu è importante rafforzare la sicurezza del server Linux lasciando aperte e raggiungibili dall’esterno solo le porte effettivamente necessarie per erogare il servizio. Nel caso di un server web che permette di collegarsi soltanto con Piwigo, si potrebbe lasciare aperta in ingresso soltanto la porta TCP 443.

Ti consigliamo anche

Link copiato negli appunti