Quest’oggi andremo alla scoperta di NextCloud All-In-One, anche conosciuto come NextCloud AIO, una particolare versione di NextCloud di più semplice manutenzione e installazione, poiché completamente eseguita all’interno di container docker. In particolare il focus di questa guida sarà su una tipica installazione in ambiente GNU/Linux, per esempio su un Raspberry PI, su un VPS, su un PC che utilizzate come server a casa o qualsiasi altra cosa in grado di far eseguire GNU/Linux e Docker 😀

Nextcloud All-in-One è un progetto basato su Docker che semplifica la gestione e la creazione di tutti i componenti necessari per un’installazione Nextcloud in piena regola. Nextcloud AIO non solo fornisce una facile distribuzione e manutenzione di molte funzionalità di NextCloud, ma tramite un’interfaccia user friendly, permette di effettuare aggiornamenti senza stress (backup incluso). Il tutto si basa sullo scaricamento di una singola immagine docker, detta “Master“, che ci permetterà di installare e aggiornare con un click tutti gli altri componenti che desideriamo utilizzare.

Un container docker, infatti, contiene già tutte le dipendenze, librerie, pacchetti aggiuntivi, necessari alla corretta esecuzione del software e non va a “sporcare” il sistema host, poiché tutto ciò di cui ha bisogno è già nell’immagine da cui viene avviato. Questo comporta che non avremo mai problemi di conflitti di versioni con i pacchetti installati sul sistema, poiché completamente isolati, rendendoci quindi la vita molto più semplice per fare upgrade di NextCloud o del sistema operativo stesso.

L’unica cosa di cui realmente ci dovremo occupare sarà quindi l’installazione di Docker.

Cos’è incluso in NextCloud AIO?

Con un’istallazione completa di Nextcloud AIO, abbiamo:

  • Nextcloud
  • Nextcloud Office (per modificare file direttamente nel browser)
  • Un back-end ad alte prestazioni per Nextcloud Files
  • Un back-end ad alte prestazioni per Nextcloud Talk (videochiamate private, direttamente nel browser)
  • Uno strumento per gestire i backup (basato su BorgBackup)
  • Imaginary (per generare le anteprime dei formati heic, tiff e webp)
  • ClamAV (Antivirus per Nextcloud)
  • Fulltextsearch (per fare ricerche all’interno dei vari file)

Molti di questi componenti sono opzionali, anche perché alcuni di loro richiedono risorse extra (CPU e RAM) piuttosto importanti. Inoltre, in base a quanti dati caricherete nell’istanza NextCloud, potrebbero essere necessarie ulteriori risorse (sia CPU che RAM, oltre ovviamente allo spazio su disco).

Requisiti minimi

  • Almeno una CPU quad-core, diciamo che da Raspberry PI 4 in poi può andare bene. Io ad esempio ho un VPS con 4 vCPU, basta che la CPU sopporti bene i carichi di lavoro e che sia abbastanza scattante, questo a prescindere da Docker, poiché NextCloud richiede diverse risorse computazionali.
  • Almeno 4 GB di RAM. Più RAM avete e meglio è, se volete fare un’installazione completa. Nel mio caso, ho un VPS con 8 GB di RAM.
  • Molto spazio su disco, meglio se SSD, nel mio caso ho un VPS con 400 GB di spazio. Come minimo direi almeno 100 GB liberi de dedicare ai dati che caricherete in NextCloud + spazio per i backup.
  • Se volete che sia raggiungibile dall’esterno e che quindi ci potete accedere in qualsiasi momento, servirà una connessione Internet con possibilità di fare port fowarding (aprire porte sul modem/router) abbastanza veloce, così da esporre le varie porte impiegate per il funzionamento di NextCloud AIO. Questa cosa è necessaria, in particolare, per via dell’integrazione con Let’s Encrypt per il certificato utilizzato per https.
  • Distribuzione GNU/Linux a vostro piacimento, consiglio quelle Debian-based (quindi o direttamente Debian, oppure Raspberry PI OS, Ubuntu, ecc.)
  • Dominio (es: risposteinformatiche.it) a cui associare l’istanza NextCloud. Va bene anche un sottodominio, utilizzando servizi che offrono DDNS, come No-IP.

Installazione

In questa guida vedremo come fare un setup completo, installando il tutto su un VPS che ha 4 vCPU, 8 GB di RAM e 400 GB di spazio su SSD con OS: Debian 12. Per la configurazione del sistema operativo, ecc., vi rimando alle varie guide che trovate su questo sito (ho inserito un link sulle varie parole chiave). Come partizione, per i dati, terremo tutto quanto sulla root del filesystem, così da mantenere il tutto più semplice/standard possibile. Potete comunque sia fare una partizione dedicata ai soli dati, se volete.

Docker

Installiamo Docker per Linux seguendo la documentazione ufficiale. Il modo più semplice di farlo è utilizzando il seguente comando, che si scaricherà lo script di installazione e lo andrà ad eseguire:

curl -fsSL https://get.docker.com | sudo sh

Piccola nota: normalmente, è sempre bene dare un’occhiata agli script prima di scaricarli, magari per accertarsi che non ci siano malware o altre brutte cose, quindi consiglierei di dare prima un’occhiata e poi lanciare lo script se ritene che sia tutto ok, sempre che ne siate in grado (non sempre è facile, purtroppo) 😀

Nel caso in cui vogliate abilitare il supporto IPv6, segnalo questi step aggiuntivi da seguire: clicca qui per info su come abilitare il supporto a IPv6 con Docker + NextCloud AIO.

NextCloud AIO

Se non avete in esecuzione dei webserver come Apache2, nginx o lighttpd (ad esempio se avete installato Pi-Hole prima, ce ne sarà uno attivo di sicuro), la cosa più semplice è eseguire il seguente comando:

sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest

Piccola nota: potete sostituire il percorso in cui salvare i dati seguendo questa procedura nel caso li vogliate tenere su un’altra partizione. Di default andrà tutto nella root del filesystem.

A questo punto, dopo aver atteso il download dell’immagine e l’avvio del container, potrete aprire l’interfaccia di NextCloud AIO accedendo via browser all’indirizzo IP della macchina su cui lo avete installato specificando la porta 8080, su protocollo HTTPS, esempio: https://ip.della.macchina:8080

⚠️ Importante: utilizza sempre un indirizzo IP per accedere a quella porta, perché se utilizzi un dominio potresti rimanere bloccato da HSTS (un’impostazione di sicurezza che fa dei controlli su dominio + certificato https)!

Dopo aver accettato un certificato auto-firmato, dovresti poter vedere la seguente schermata:

NextCloud AIO Setup - Password

Alternativamente se le porte 80 e 8443 (TCP) sono aperte sul tuo firewall/router e disponi di un tuo dominio configurato per puntare al tuo server, potrai raggiungere l’interfaccia di AIO con un certificato valido, generato da Let’s Encrypt, utilizzando direttamente https://tuo-dominio.it:8443

Dopo aver recuperato la password (sì, è quel lungo elenco di parole casuali), facciamo click su “Open Nextcloud AIO login” e incolliamola:

NextCloud AIO - Login

Dopodiché dovremmo vedere la seguente pagina, dalla quale potremo andare a specificare un dominio per la nostra istanza NextCloud e altre impostazioni:

NextCloud AIO - Setup

Digitiamo quindi un dominio valido da associare all’istanza e facciamo il port forwarding delle seguenti porte (da aprire sia sul firewall di sistema che sul modem/router):

  • 80/tcp (qui risponderà NextCloud)
  • 443/tcp (qui risponderà NextCloud)
  • 3478/udp (per il servizio Talk)
  • 3478/tcp (per il servizio Talk)
  • 8443/tcp (se vogliamo esporre la gestione dall’esterno di NextCloud AIO, necessaria se state usando un VPS senza VPN o tunnel SSH)

Configuriamo poi la Timezone, nel caso in cui fosse diversa da Europe/Rome e abilitiamo eventuali componenti aggiuntivi. Una volta fatto ciò, clicchiamo su “Start containers“:

NextCloud AIO - Containers

Arrivati fin qui, non ci resterà che attendere (ci vorrà un po’, poiché sostanzialmente verranno scaricate da internet le varie immagini docker dei componenti che abbiamo attivato e dopodiché verranno mandati in esecuzione). Potrebbero volerci più di 10 minuti, durante i quali vedremo questa animazione:

NextCloud AIO - Avvio container

Finito il download dei vari componenti, vedremo un’altra schermata, che ci farà vedere a che punto siamo con l’avvio di tutto il necessario, attraverso degli indicatori in stile semaforo (rosso = container arrestato, giallo = container in avvio, verde = container operativo):

NextCloud AIO - Container Status

Quando anche l’ultimo container si sarà avviato, ci verranno comunicate le credenziali di accesso dell’utente amministratore predefinito:

NextCloud AIO - Credenziali predefinite

Non ci resta quindi che cliccare su “Open your Nextcloud” per effettuare l’accesso e iniziare ad utilizzare la nostra nuova istanza di NextCloud.

Info utili

Solitamente, una volta a settimana o poco più, esce un aggiornamento per NextCloud AIO. Si riceverà una notifica e sostanzialmente accedendo da Icona del nostro profilo (in alto a destra) > Impostazioni di amministrazione > Riepilogo e cliccando poi su “Open NextCloud AIO Interface”:

NextCloud - Amministrazione - Riepilogo

Saremo in grado di aggiornare il “Master container” e tutti gli altri container, con un click, nel caso in cui un aggiornamento fosse disponibile.

Sempre da lì è possibile configurare il backup tramite Borg. Va eseguito manualmente (a meno che non lo automatizziate) dopo averlo configurato, sempre dalla solita schermata. Il backup è incrementale e cifrato. Sarebbe consigliato fare sempre il backup prima di aggiornare un qualsiasi container.

Per fare il backup bisogna necessariamente arrestare i container, altrimenti non è possibile procedere.

Nel caso in cui doveste voler mettere mano al file di configurazione di NextCloud, per un qualche motivo particolare, potete accedervi tramite il comando:

docker run -it --rm --volume nextcloud_aio_nextcloud:/var/www/html:rw alpine sh -c "apk add --no-cache nano && nano /var/www/html/config/config.php"

Per ulteriori informazioni sulla configurazione di NextCloud potete leggere la documentazione, disponibile al seguente link.