Un po’ di giorni fa, con la mia newsletter, NINAsec ha esternato alcune considerazioni sui servizi di cloud che tutti ormai adoperiamo nei nostri dispositivi e abbiamo sempre appresso, e a cui, soprattutto, regaliamo una marea di dati personali, senza averne il vero controllo. Queste esternazioni hanno suscitato dell’interesse tra i (pochi e intimi) lettori della newsletter, così mi sono sentito in dovere di proseguire con il progetto e condividere con tutti, tramite questa guida, la mia avventura e le difficoltà che ho incontrato, di modo che un giorno possano forse essere utili a qualcun altro. Inoltre l’ispirazione viene spinta anche dalla notizia proprio di oggi, secondo cui anche il governo austriaco, abbia scelto di passare all’open source, favorendo proprio la piattaforma Nextcloud contro i concorrenti commerciali delle Big Tech, per tutta l’infrastruttura del ministero dell’economia: circa 1200 dipendenti.
Realizzare un servizio cloud personale, indipendente dai provider commerciali, è un progetto alla portata di chiunque abbia un minimo di dimestichezza con Linux. Con un Raspberry Pi dotato di 8 GB di RAM, un hard disk esterno e qualche configurazione di rete è possibile costruire un ambiente Nextcloud funzionale, accessibile da smartphone e computer, e utilizzabile da più utenti familiari.
Questa guida illustra tutti i passaggi fondamentali, compresi quelli che spesso vengono trascurati: mount automatico del disco, configurazione del LAMP, DNS dinamico con DuckDNS e ddclient, apertura delle porte e hardening minimo. Qui condivido la mia esperienza ma resta inteso che lo stesso progetto si può portare avanti con qualsiasi PC, mini-PC o server casalingo, con installata una distribuzione di GNU/Linux.
1. Prerequisiti hardware e software
Hardware
- Raspberry Pi (consigliato modello 4 da 8 GB).
- Alimentatore ufficiale.
- MicroSD di almeno 16 GB.
- Hard Disk USB da 1 TB o più (io ne avevo uno in disuso spento da un po’ di tempo).
- Connessione Ethernet al router (fortemente consigliata rispetto al Wi-Fi).
Software
- Raspberry Pi OS (Lite o Full).
- Server web Apache2.
- PHP 8.x con estensioni richieste da Nextcloud.
- MariaDB o MySQL.
- Nextcloud stabile (ultima versione disponibile).
- ddclient per l’aggiornamento DNS dinamico.
2. Installazione di Raspberry Pi OS
- Scaricare Raspberry Pi OS dal sito ufficiale.
- Scrivere l’immagine su microSD tramite Raspberry Pi Imager.
- Effettuare il primo avvio, aggiornare i pacchetti:
sudo apt update && sudo apt upgrade -y
- Configurare hostname, SSH e timezone:
sudo raspi-config
3. Preparazione e mount automatico dell’HDD
Identificare il disco
Una volta collegato il disco USB:
lsblk -f
Individuare la partizione (es. /dev/sdb1).
Formattazione consigliata (ext4)
Se il disco non contiene dati importanti:
sudo mkfs.ext4 /dev/sdb1
Creazione del punto di mount
sudo mkdir /mnt/nextcloud
Ottenere l’UUID
sudo blkid /dev/sdb1
Configurare il mount automatico (fstab)
Aprire:
sudo nano /etc/fstab
Aggiungere:
UUID=tuo-uuid /mnt/nextcloud ext4 defaults,noatime 0 2
Testare senza riavviare:
sudo mount -a
Il disco ora verrà montato automaticamente ad ogni avvio.
4. Installazione stack LAMP
Installare Apache
sudo apt install apache2 -y
Installare MariaDB
sudo apt install mariadb-server -y
Messa in sicurezza minima:
sudo mysql_secure_installation
Creare database e utente Nextcloud
CREATE DATABASE nextcloud;
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'password_sicura';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';
FLUSH PRIVILEGES;
Installazione PHP e moduli richiesti
sudo apt install php php-gd php-mysql php-curl php-xml php-zip php-mbstring php-intl php-bcmath php-gmp php-imagick -y
Riavvio Apache:
sudo systemctl restart apache2
5. Installazione di Nextcloud
- Scaricare l’ultima versione:
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
- Copiarla nella directory web:
sudo mv nextcloud /var/www/
- Impostare i permessi:
sudo chown -R www-data:www-data /var/www/nextcloud
- Creare il Virtual Host:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Inserire:
<VirtualHost *:80>
ServerName tuo-dominio.duckdns.org
DocumentRoot /var/www/nextcloud/
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymlinks MultiViews
</Directory>
</VirtualHost>
Abilitare:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
6. Impostare DNS dinamico con DuckDNS + ddclient
Registrazione dominio DuckDNS
- Accedere a https://duckdns.org
- Creare un sottodominio (es.
casacloud.duckdns.org). - Copiare il token personale.
Installazione ddclient
sudo apt install ddclient -y
Configurazione ddclient
Modificare:
sudo nano /etc/ddclient.conf
Esempio:
protocol=duckdns
use=web
server=www.duckdns.org
login=TOKEN
password='TOKEN'
casacloud.duckdns.org
Abilitare e avviare:
sudo systemctl enable ddclient
sudo systemctl restart ddclient
Controllo:
sudo systemctl status ddclient
7. Apertura porte sul router
Per rendere raggiungibile Nextcloud dall’esterno (della propria casa) serve aprire (port forwarding):
- Porta 80 → IP locale Raspberry
- Porta 443 → IP locale Raspberry
(consigliata dopo l’installazione di HTTPS)
Ogni router ha un’interfaccia diversa, ma la sezione è solitamente chiamata “Port Forwarding”, “NAT”, “Virtual Server”. Se su questo punto incontri delle difficoltà particolari, parliamone sul forum.
8. Certificato HTTPS (raccomandato)
Installare certbot:
sudo apt install certbot python3-certbot-apache -y
Generare il certificato:
sudo certbot --apache -d casacloud.duckdns.org
9. Configurazione finale Nextcloud
Accedere via browser:
http://casacloud.duckdns.org
Creare l’utente admin e indicare:
- Cartella dati →
/mnt/nextcloud/data - DB → nextcloud
- Utente DB → ncuser
- Password DB → quella configurata
Dopo qualche minuto l’installazione sarà completa.
10. Problemi noti e soluzioni consigliate
1. USB in sleep mode
Alcuni HDD si disconnettono temporaneamente.
Si può mitigare impostando hdparm:
sudo apt install hdparm
sudo hdparm -S 0 /dev/sda
2. Limiti PHP insufficienti
Modificare:
sudo nano /etc/php/8.x/apache2/php.ini
Valori consigliati:
memory_limit = 1024M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 360
3. Prestazioni lente
- Attivare Redis per file locking.
- Utilizzare cache opcache PHP.
- Tenere il Raspberry collegato via Ethernet.
4. Problemi con mount del disco al boot
Occorre aggiungere nofail in fstab:
defaults,noatime,nofail
5. Indisponibilità dopo cambio IP pubblico
Se ddclient non aggiorna, controllare:
sudo ddclient -daemon=0 -debug -verbose -noquiet
Quindi?
Con un investimento minimo e qualche attenzione alla configurazione, è possibile realizzare un cloud privato domestico robusto, accessibile da tutta la famiglia e completamente sotto il proprio controllo.
Si può facilmente installare la app Nextcloud su qualsiasi dispositivo (tablet, smartphone) Android o iOS. Inoltre esiste l’applicazione desktop per MacOS, Windows, Linux e usare funzionalità di sincronizzazione, sul proprio account Nextcloud (del cloud di casa vostra), oppure aprire la cartella come Virtual Directory e usarla come estensione della propria cartella documenti, sempre raggiungibile, ovunque ci sia una connessione a Internet.
Nextcloud, combinato con un Raspberry Pi e un HDD riciclato, offre funzionalità paragonabili ai servizi commerciali, senza cessione dei dati a terzi e con la piena sovranità digitale.
[…] Se l’idea di avere un’alternativa casalinga a Google Drive o Dropbox vi stuzzica, trovate la guida completa qui. […]