Guide

Come realizzare un cloud domestico autonomo con Raspberry Pi e Nextcloud

Dario Fadda Novembre 27, 2025

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

  1. Scaricare Raspberry Pi OS dal sito ufficiale.
  2. Scrivere l’immagine su microSD tramite Raspberry Pi Imager.
  3. Effettuare il primo avvio, aggiornare i pacchetti:
sudo apt update && sudo apt upgrade -y
  1. 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

  1. Scaricare l’ultima versione:
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
  1. Copiarla nella directory web:
sudo mv nextcloud /var/www/
  1. Impostare i permessi:
sudo chown -R www-data:www-data /var/www/nextcloud
  1. 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

  1. Accedere a https://duckdns.org
  2. Creare un sottodominio (es. casacloud.duckdns.org).
  3. 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.

Una risposta a “Come realizzare un cloud domestico autonomo con Raspberry Pi e Nextcloud”

  1. […] Se l’idea di avere un’alternativa casalinga a Google Drive o Dropbox vi stuzzica, trovate la guida completa qui. […]

💬 Unisciti alla discussione!


Se vuoi commentare su Come realizzare un cloud domestico autonomo con Raspberry Pi e Nextcloud, utilizza la discussione sul Forum.
Condividi la tua esperienza, confrontati con altri professionisti e approfondisci i dettagli tecnici nel nostro 👉 forum community