Guida all'installazione di Nextcloud con server Nginx e database Postgresql
Installare Ubuntu server se si vuole fare dei test su virtualbox impostare la scheda di rete della macchina virtuale su bridge per facilitare le cose; l'installazione di ubuntu server non verrà trattata
Connettersi via ssh da terminale
ssh -p 22 nomeutente@indirizzoipserver
Ci stiamo collegando da una macchina Linux
Aggiorniamo il sistema operativo
sudo apt update; sudo apt upgrade -y
Nginx
Installiamo il web server nginx
sudo apt install nginx -y
lanciamo il servizio e rendiamolo attivo al boot
sudo systemctl start nginx
sudo systemctl enable nginx
PHP
Installiamo PHP
sudo apt-get install php php-fpm
php -v
per scoprire la versionesudo systemctl start phpNUMEROVERSIONE-fpm
sudo systemctl enable phpNUMEROVERSIONE-fpm
- Moduli aggiuntivi
sudo apt install php-zip php-dom php-curl php-gd php-mbstring php-gmp php-bcmath php-imagick
Configurazioni php-fpm
sudo find / -iname www.conf
(comando per trovare il file www.conf)entriamo nel file con il comando
sudo vim percorso
e decommentiamo
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
Postgresql
Installiamo postgresql
sudo apt install postgresql postgresql-contrib libpq-dev -y
sudo apt install php-pgsql -y
(modulo php)Creiamo il database per Nextcloud (Nome database nextcloud, nome utente ncuser)
sudo -u postgres psql -d postgres
CREATE USER ncuser WITH PASSWORD 'PASSWORD' CREATEDB;
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UTF8';
ALTER DATABASE nextcloud OWNER TO ncuser;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO ncuser;
GRANT ALL PRIVILEGES ON SCHEMA public TO ncuser;
\q
Modifichiamo il file pgsql.ini come da documentazione Nextcloud
sudo find / -iname pgsql.ini
(ricerca il file)sudo vim /etc/php/8.1/mods-available/pgsql.ini
(esempio)
Assegnamo una password all'utente
sudo passwd postgres
Entrare come utente postgres
sudo su - postgres
Nextcloud
Prepariamo le cartelle ed i file di config per Nextcloud
sudo mkdir /var/www/nextcloud
cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
(Installare unzip se non è presente)sudo rm latest.zip
Assegnamo a tutta la cartella i permessi di scrittura/lettura dell'utente www-data
sudo chown -R www-data:www-data /var/www/nextcloud
Creiamo il file di configurazione
sudo vim /etc/nginx/sites-available/nextcloud
Incolliamo le istruzioni dal sito nextcloud il file andrà opportunamente modificato come da documentazione (a breve verra aggiunta la sezione qui)sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud
Certificati ssl
Certificato autofirmato con openssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/nginx/cloud.key -out /etc/ssl/nginx/cloud.crt
I due certificati si troveranno qui
/etc/ssl/nginx/cloud.crt /etc/ssl/nginx/cloud.key
Certificato con Certbot Let's Encrypt
- Editiamo il file
sudo vim /etc/nginx/sites-available/nextcloud
Modifichiamo temporaneamente le righe 26/27:
listen 443 ssl http2; listen [::]:443 ssl http2;
in
listen 80; #443 ssl http2; listen [::]:80; #443 ssl http2;
e commentimao le righe 35/36
#sslcertificate /etc/ssl/nginx/cloud.example.com.crt; #sslcertificate_key /etc/ssl/nginx/cloud.example.com.key;
- Lanciamo i comandi ben descritti nel sito Certbot
Se tutto è andato a buon fine rieditiamo il file
sudo vim /etc/nginx/sites-available/nextcloud
listen 443 ssl http2; listen [::]:443 ssl http2; sslcertificate /etc/letsencrypt/live/nomesito.com/cert.pem; sslcertificate_key /etc/letsencrypt/live/nomesito.com/privkey.pem;
- Lanciamo un reload e un test per le configurazioni ngnix
sudo nginx -t
sudo systemctl reload nginx
Configurare il Firewall
coomingsoon
Un po' di comandi e info su nginx
Comando | Percorso | A cosa serve |
---|---|---|
sudo systemctl status nginx |
mostra lo stato del web server | |
sudo systemctl stop nginx |
interrompe web server | |
sudo systemctl status nginx |
riavvia il web server rendendo effettivi i cambiamenti dei files di configurazione | |
/etc/nginx/nginx.conf | file configurazione generale | |
/etc/nginx/sites-enabled/ | cartella dove vengono linkate le pagine attive | |
/etc/nginx/sites-available | cartella di tutti i progetti | |
/var/www/nextcloud | cartella contenente tutti i siti |