Eseguire Nextcloud su un server NGINX permette un uso ef­fi­cien­te delle risorse e offre ampie pos­si­bi­li­tà di per­so­na­liz­za­zio­ne. Per l’in­stal­la­zio­ne sono richiesti sia un sistema com­pa­ti­bi­le sia una con­fi­gu­ra­zio­ne adeguata. Inoltre, per integrare cor­ret­ta­men­te Nextcloud in un ambiente NGINX, è ne­ces­sa­rio apportare alcune modifiche spe­ci­fi­che.

Nextcloud e NGINX: una com­bi­na­zio­ne per­for­man­te per il cloud

NGINX è un software per server web open source che può essere uti­liz­za­to anche come server reverse proxy, load balancer e cache HTTP. L’ap­pli­ca­zio­ne è svi­lup­pa­ta in gran parte dal pro­gram­ma­to­re russo Igor Sysoev e di­stri­bui­to con licenza BSD (una variante di Unix).

NGINX è pro­get­ta­to per gestire un numero elevato di con­nes­sio­ni si­mul­ta­nee grazie a un’ar­chi­tet­tu­ra asincrona basata su eventi. A dif­fe­ren­za dei server web tra­di­zio­na­li, non assegna un processo o thread a ogni richiesta, ma utilizza un processo master e diversi processi worker. Il master gestisce la con­fi­gu­ra­zio­ne, mentre i worker ri­spon­do­no alle richieste dei client.

Usare Nextcloud con NGINX offre diversi vantaggi, so­prat­tut­to in contesti server ad alte pre­sta­zio­ni:

  • Uso ef­fi­cien­te delle risorse: NGINX è in grado di gestire numerose con­nes­sio­ni senza uti­liz­za­re troppe risorse.
  • Alta sca­la­bi­li­tà: consente una di­stri­bu­zio­ne fles­si­bi­le del carico e l’aggiunta di server.
  • Ampia per­so­na­liz­za­zio­ne: la struttura modulare lo rende adat­ta­bi­le a vari scenari.
  • Pre­sta­zio­ni stabili anche in caso di carico eccessivo: anche in caso di elevato carico del server, NGINX rimane af­fi­da­bi­le e ga­ran­ti­sce una di­spo­ni­bi­li­tà costante.
N.B.

Nextcloud supporta uf­fi­cial­men­te solo Apache 2.x come server web. Pertanto, non fornisce alcun supporto ufficiale per NGINX. L’utilizzo di Nextcloud con NGINX è quindi con­si­glia­to prin­ci­pal­men­te a utenti con espe­rien­za nella con­fi­gu­ra­zio­ne di server web.

Quali requisiti devono essere sod­di­sfat­ti per uti­liz­za­re Nextcloud tramite NGINX?

Il pre­re­qui­si­to fon­da­men­ta­le è un server com­pa­ti­bi­le, come Ubuntu o Debian, con almeno 4 GB di RAM e 2 CPU. Per istanze più complesse con numerose app Nextcloud si con­si­glia­no più core CPU e più memoria RAM. Deve esserci anche spazio di ar­chi­via­zio­ne suf­fi­cien­te per dati e backup.

Per l’in­stal­la­zio­ne è inoltre ne­ces­sa­rio un database com­pa­ti­bi­le come MySQL o MariaDB e il lin­guag­gio di scripting PHP (versione minima 8.1, con­si­glia­ta la versione 8.3). Nel database sono me­mo­riz­za­ti utenti, plugin, relativi dati e metadati dei file. PHP è es­sen­zia­le per l’ela­bo­ra­zio­ne e l’ese­cu­zio­ne delle funzioni di Nextcloud. Per poter in­stal­la­re Nextcloud è inoltre ne­ces­sa­rio un account con permessi di am­mi­ni­stra­to­re.

Managed Nextcloud
La nuova soluzione di cloud storage
  • Pieno controllo sui tuoi dati
  • Ag­gior­na­men­ti au­to­ma­ti­ci
  • Espan­di­bi­le con app e strumenti di col­la­bo­ra­zio­ne

Nextcloud con NGINX come server web: in­stal­la­zio­ne e con­fi­gu­ra­zio­ne

Prima di in­stal­la­re Nextcloud abbiamo già svolto alcune ope­ra­zio­ni pre­li­mi­na­ri fon­da­men­ta­li. In questa guida partiamo dal pre­sup­po­sto che sia stato in­stal­la­to un server Ubuntu con il sistema operativo e tutte le di­pen­den­ze ne­ces­sa­rie. Tra queste figurano NGINX come server web, MySQL come database e PHP nella versione 8.3 con tutte le esten­sio­ni ne­ces­sa­rie.

Abbiamo inoltre in­stal­la­to Certbot per poter con­fi­gu­ra­re fa­cil­men­te un cer­ti­fi­ca­to SSL con Let’s Encrypt. È inoltre ne­ces­sa­rio disporre di un dominio per poter uti­liz­za­re Nextcloud tramite un URL cor­ri­spon­den­te invece che tramite un indirizzo IP.

Consiglio

Nei nostri articoli correlati scopri come in­stal­la­re Nextcloud su Ubuntu 22.04 o Nextcloud su Ku­ber­ne­tes. Inoltre, puoi trovare una guida det­ta­glia­ta per l’in­stal­la­zio­ne e la con­fi­gu­ra­zio­ne di Nextcloud su Debian 12.

Scaricare e de­com­pri­me­re Nextcloud

Per prima cosa, crea una cartella de­no­mi­na­ta “nextcloud”, nella directory utente sul tuo server, nella quale sca­ri­che­rai i file di in­stal­la­zio­ne di Nextcloud. Puoi farlo ma­nual­men­te tramite il changelog di Nextcloud, ma è ancora più semplice uti­liz­zan­do il seguente comando curl:

mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zip
bash
N.B.

Se installi una versione diversa, as­si­cu­ra­ti di inserire l’URL corretto per il download del file ZIP.

De­com­pri­mi il file, sposta la cartella in ./var/www (che funge da directory root del server web) e imposta i permessi dei file. A tal fine, utilizza i seguenti comandi:

unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloud
bash

Con­fi­gu­ra­re il database

Per con­fi­gu­ra­re il database MySQL, esegui il comando sudo sudo mysql_secure_installation. Digita “y” per impostare la password di root (VALIDATE PASSWORD) e “2” per una password complessa (STRONG), che potrà essere con­fi­gu­ra­ta in seguito. Premi “y” per con­fer­ma­re la password e poi di nuovo per rimuovere gli utenti anonimi, vietare gli accessi remoti, rimuovere il database di prova e ri­ca­ri­ca­re le tabelle dei privilegi.

Quindi procedi come segue:

  1. Entra nel database come utente root con il comando sudo mysql -u root -p.
  2. Crea il database Nextcloud con create database nextcloud;.
  3. Crea l’account utente Nextcloud con il comando create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Assegna all’account creato i permessi di database con grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Infine, aggiorna i permessi con flush privileges; ed esci dalla console del database con il comando exit.

Dopo aver con­fi­gu­ra­to cor­ret­ta­men­te il database, è ne­ces­sa­rio inserire i dati di accesso (DB_NAME, DB_USER, DB_PASSWORD) nel file di con­fi­gu­ra­zio­ne di Nextcloud. A tal fine, apri il file ./var/www/nextcloud/config/config.php e aggiungi le relative voci di con­fi­gu­ra­zio­ne:

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt
Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Di­sat­ti­va­re la con­fi­gu­ra­zio­ne pre­de­fi­ni­ta di NGINX

Prima di integrare Nextcloud in NGINX, as­si­cu­ra­ti che nessun altro file di con­fi­gu­ra­zio­ne so­vra­scri­va l’in­stal­la­zio­ne di Nextcloud. Per im­po­sta­zio­ne pre­de­fi­ni­ta potrebbe essere presente una con­fi­gu­ra­zio­ne di default in ./etc/nginx/sites-enabled/ che impedisce il corretto ca­ri­ca­men­to di Nextcloud. Questa deve essere rimossa con il seguente comando:

sudo rm /etc/nginx/sites-enabled/default
bash

Suc­ces­si­va­men­te, as­si­cu­ra­ti che la nuova con­fi­gu­ra­zio­ne per Nextcloud sia attiva con il seguente comando:

sudo ln -s /etc/nginx/sites-available/dominioesempio.it /etc/nginx/sites-enabled/
bash

Con­fi­gu­ra­re il server NGINX

Per con­fi­gu­ra­re NGINX come server web, è ne­ces­sa­rio che sia già stato impostato un dominio e che questo sia collegato all’IP del server. As­si­cu­ra­ti anche che la con­fi­gu­ra­zio­ne DNS sia corretta. A questo punto, crea il file di con­fi­gu­ra­zio­ne NGINX nella directory sites-available uti­liz­zan­do il comando Linux sudo sudo touch /etc/nginx/sites-available/dominioesempio.it (come URL abbiamo uti­liz­za­to dominioesempio.it).

Apri il file di con­fi­gu­ra­zio­ne in un editor di testo come Vim con sudo vim /etc/nginx/sites-available/dominioesempio.it e incolla il blocco di codice della sezione “Nextcloud in a subdir of the NGINX webroots” della pagina web di Nextcloud sulla con­fi­gu­ra­zio­ne NGINX in ./etc/nginx/sites-available/dominioesempio.it.

Poiché il cer­ti­fi­ca­to HTTPS viene aggiunto con Certbot, è ne­ces­sa­rio rimuovere tutte le righe relative a SSL dal file di con­fi­gu­ra­zio­ne NGINX. Certbot esegue la con­fi­gu­ra­zio­ne au­to­ma­ti­ca, quindi non è ne­ces­sa­ria alcuna im­po­sta­zio­ne manuale det­ta­glia­ta.

Con­fi­gu­ra­re il cer­ti­fi­ca­to SSL con Certbot

Affinché Nextcloud funzioni tramite una con­nes­sio­ne HTTPS sicura, è ne­ces­sa­rio con­fi­gu­ra­re un cer­ti­fi­ca­to SSL, in questo caso di Let’s Encrypt. In­nan­zi­tut­to, è ne­ces­sa­rio con­fi­gu­ra­re il firewall in modo che le con­nes­sio­ni HTTPS e SSH siano con­sen­ti­te. A tal fine, utilizza il seguente comando sudo:

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

Quindi, attiva il firewall con sudo ufw enable e verifica con sudo ufw status che le con­nes­sio­ni siano ora con­sen­ti­te. Suc­ces­si­va­men­te, puoi creare il cer­ti­fi­ca­to SSL tramite Certbot:

sudo certbot --nginx -d dominioesempio.it
bash

Inserisci il tuo indirizzo e-mail per ricevere notifiche sul rinnovo dei cer­ti­fi­ca­ti, accetta i termini e le con­di­zio­ni e seleziona l’opzione 2 per rein­di­riz­za­re au­to­ma­ti­ca­men­te tutte le richieste HTTP a HTTPS. I file del cer­ti­fi­ca­to si trovano nella directory /etc/letsencrypt/live/dominioesempio.it/. Il file fullchain.pem contiene il cer­ti­fi­ca­to SSL, mentre il file privkey.pem contiene la chiave privata. Questi devono essere inseriti nel file di con­fi­gu­ra­zio­ne NGINX:

ssl_certificate /etc/letsencrypt/live/dominioesempio.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dominioesempio.it/privkey.pem;
txt

Poiché Certbot ha mo­di­fi­ca­to il file di con­fi­gu­ra­zio­ne, è ne­ces­sa­rio ag­giun­ge­re nuo­va­men­te l’attributo ssl tra 443 e http2. Il blocco cor­ri­spon­den­te dovrebbe quindi apparire come segue:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name dominioesempio.it;
txt

Riavviare i servizi e avviare Nextcloud

Per applicare le modifiche, è ne­ces­sa­rio ri­ca­ri­ca­re i servizi PHP-FPM e NGINX:

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

A questo punto apri il browser e digita il tuo dominio (nel nostro caso, do­mi­nioe­sem­pio.it). Se tutto è stato con­fi­gu­ra­to cor­ret­ta­men­te, vedrai la pagina iniziale di Nextcloud.

N.B.

Se Nextcloud non funziona, è possibile che il tuo dominio non sia ancora stato inserito nel file config.php come dominio sicuro per Nextcloud. Esegui questo passaggio per risolvere il problema.

Vai al menu prin­ci­pa­le