Creare uno spazio personale di archiviazione e condivisione personale
1- creare la scheda con Raspberry Pi Imager
2- La seguente guida funziona con il sistema operativo Raspberry Pi OS Lite (64-BIT)
3- prima di masterizzare la ISO cliccare sull’ingranaggio dell’applicazione per abilitare host, ssh, password e wifi
4- Avvio il Raspberry Pi con il sistema operativo con la configurazione personalizzata
5- Trova l’indirizzo IP assegnato dal tuo router con il comando
hostname -I
6 – E’ possibile recuperarlo anche dal tuo router entrando nella sua configurazione, tipicamente 192.168.1.1
7 – Il più delle volte l’indirizzo IP assegnato dal router non cambia ma per sicurezza è possibile rendere statico l’IP sul Raspberry Pi modificando il file /etc/dhcpcd.conf con il seguente comando
sudo nano /etc/dhcpcd.conf
8- Nota: per inserire i comandi o accedete direttamente al Raspberry Pi o potete scegliere due alternative:
a- se usate linux avendo abilitato ssh basta digitare
ssh pi@192.168.1.007 (dove 192.168.1.77 va cambiato con IP assegnato dal router) (anche "pi" va modificato con l'hostname scelto in fase di configurazione della scheda)
b- se usate Windows installate Putty un client ssh e collegatevi all’indirizzo IP assegnato dal router
Una volta connessi al terminale del Raspberry Pi eseguite i classici comandi di aggiornamento della distribuzione
sudo apt-get update
sudo apt-get upgrade
9 – Rendiamo statico l’indirizzo IP del nostro Raspberry Pi
sudo nano /etc/dhcpcd.conf
cerca la sezione # Example static IP configuration e modificala come segue:
Con l’editor nano usare ctrl “O” per salvare il file modificato e ctrl “X” per uscire
interface eth0
static ip_address=192.168.1.007/24
# static ip6_address=gh33:12t4:klle:a12e::ff/64
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 9.9.9.9 9.9.9.10
Nel tuo file dovrai: a) mettere il vero IP del tuo Raspberry, seguito da /24; b) lasciare # davanti a static ip6_address; c) inserire il corretto IP del router; d) alla quarta riga inserire di nuovo l’IP del router seguito da uno spazio e, se vuoi, dai DNS di Bind 9 che ho messo qui (9.9.9.9 e 9.9.9.10) o di altro gestore di DNS
Riavvia il Raspberry e ricollegati al terminale
sudo reboot
Installare Nextcloud sul Raspberry Pi
Esistono numerose possibilità, quella indicata di seguito permette il controllo di ogni passaggio del deployment di NextCloud
Prima di installare NextCloud bisogna installare i seguenti pacchetti sul sistema: Apache, MySQL (MariaDB) and PHP e alcuni moduli PHP.
Digita i seguenti comandi per installare tutto
sudo apt install apache2 mariadb-server libapache2-mod-php
sudo apt install php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip
1- scaricare e installare NextCloud
controllare sul sito l’ultima edizione disponibile
https://download.nextcloud.com/server/releases/
Mentre scrivo la guida l’ultima versione è la 25.0.2.zip
Spostarsi nella directory web di Apache
cd /var/www/html
e scaricare NextCloud
sudo wget https://download.nextcloud.com/server/releases/nextcloud-25.0.2.zip
scompattare l’archivio
sudo unzip nextcloud-25.0.2.zip
se nella distro in uso non è presente il programma unzip installarlo come segue:
sudo apt install unzip
Adesso bisogna cambiare i permessi della cartella per consentire ad Apache di accedervi
sudo chmod 750 nextcloud -R
sudo chown www-data:www-data nextcloud -R
Configurare il Database MySQL
Connettersi al database come root
sudo mysql
creare un nuovo utente
CREATE USER 'nextcloud' IDENTIFIED BY 'password';
sostituire ‘password’ con una più efficace (almeno 12 caratteri alfanumerici)
creare il nuovo database
CREATE DATABASE nextcloud;
assegnare i permessi del nuovo utente sul database
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@localhost IDENTIFIED BY 'password';
sostituire il campo password con quella impostata precedentemente
salvare ed uscire
FLUSH PRIVILEGES;
quit
Prima di aprire il browser riavviamo il Raspberry Pi con sudo reboot
Adesso siamo pronti ad eseguire la procedura guidata attraverso un browser
Aprire un browser e nella barra degli indirizzi digitare http://IP/nexcloud
es. http://192.168.1.99/nextcloud
L’indirizzo IP da digitare è quello assegnato dal router
Basta inserire le credenziali create nel database
– User: nextcloud
– Password: “password” (la tua password)
– Database: nextcloud
– Host: localhost
Cliccare sul tasto installa
Post installazione
Una volta installato NextCloud andando nella sezione amministrazione Nextcloud farà un controllo della configurazione e ti suggerirà alcuni miglioramenti
- Il limite di memoria di PHP è inferiore al valore consigliato di 512MB
digita:
sudo find / -name php.ini
per trovare il file di configurazione di php
apri con l’editor il file trovato:
sudo nano /etc/php/7.4/apache2/php.ini
sostituire la versione con la versione trovata con il comando find
vai alla riga memory_limit
con l’editor nano basta premere ctrl ‘W’ e scrivere memory_limit
sostituire il valore di default (128M) con 1536M (considerando che Raspberry Pi abbia 2 GB dei memoria). In linea di massima 3/4 di memoria del totale della RAM possiamo dedicarla a NextCloud, il resto al Raspberry.
Per aumentare la velocità di trasferimento durante la sincronizzazione modifichiamo anche questi tre valori:
– post_max_size=25G
–upload_max_filesize=25G (considerando anche il caricamento di grossi file da memorizzare, per esempio foto)
aprire con l’editor il file di configurazione di NexCloud
sudo nano /var/www/html/nextcloud/config/config.php
aggiungere la seguente riga prima della chiusura del file
'chunkSize' => '5120MB',
riavviare Apache
sudo systemctl restart apache2
- PHP configuration option output_buffering must be disabled
aprire con l’editor il file php.ini nella versione trovata con il comando find
sudo nano /etc/php/7.4/apache2/php.ini (sostituisci "7.4" col numero corretto);
cercare la riga riga output_buffering = 4096 con ctrl’W’ e sostituire con 0 (zero)
riavviare Apache
sudo systemctl restart apache2
Accesso remoto
Per accedere al nostro server dal web occorre configurare un servizio di DNS dinamico tipo NoIP e configurare alcune porte sul proprio router
Con un account gratuito è possibile creare 3 hostname
Scegliere un hostname, selezionare un dominio e inserire IPv4, il vostro indirizzo IP pubblico (di solito preso in automatico e trovato su WhatsMyIP)
Una volta ottenute le credenziali DDNS apri il browser, digita l’IP del router e accedi al pannello di amministrazione
esempio di configurazione di un router Vodafone
Nella sezione DDNS inserisci le credenziali dell’account no-ip
in associazione porte aprite la porta 443 sia in TCP che in UDP
in dispositivo scegliere il proprio Raspberry Pi
Se si prova ora ad accedere al proprio dominio
xxxxxxx.hopto.org/nextcloud
si riceve il seguente messaggio
occorre quindi modificare l’impostazione “trusted_domains” nel file config.php inserindo il proprio dominio creato su NoIp
Effettua queste due modifiche:
- aprire il file di configurazione generale di Apache
sudo nano /etc/apache2/apache2.conf
Alla fine del file aggiungere
ServerName xxxxx.hopto.org (l'hostname creato su NoIp)
Salvare ed uscire ctrl ‘o’ ctrl ‘x’
Attivare il nuovo dominio in Apache
sudo a2ensite
sudo systemctl reload apache2
Segnalare il nuovo dominio a Nextcloud, aprendo il file /var/www/html/nextcloud/config/config.php
sudo nano /var/www/html/nextcloud/config/config.php
Aggiungere dopo o (zero) i punti 1 e 2 con il proprio hostname
'trusted_domains' =>
array (
0 => '192.168.1.007',
1 => 'xyz.ilmioddns.com',
),
Salvare ed uscire ctrl ‘o’ ctrl ‘x’
Creare nel server web Apache un file corrispondente all’indirizzo “esterno” di Nextcloud
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Inserire queste modifiche
(N.B. Le modifiche saranno effettive solo dopo aver installato il certificato SSL)
DocumentRoot /var/www/html/nextcloud
ServerName xxxx.hopto.org
ErrorLog /var/log/apache2/nextcloud-error.log
CustomLog /var/log/apache2/nextcloud-access.log combined
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /var/www/html/nextcloud>
Options +FollowSymlinks
AllowOverride All
Require all granted
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
Se il sistema riporta ancora il seguente errore:
The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips ↗.
modificare il file come segue:
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
ed eseguire dopo
sudo a2enmod headers
sudo systemctl start apache2
Installare il certificato SSL
Questa procedura spiega come installare il certificato gratuito SSL “Let’s Encrypt”
eseguire il comando
sudo apt install -y certbot python3-certbot-apache
e poi
sudo certbot --apache
Lo script creerà i certificati, chiedendovi email e hostname, poi inserirà i certificati in /etc/apache2/sites-enabled/default-ssl.conf (o file simile)
I certificato hanno una scadenza e bisogna al termine rinnovarli con il comando
sudo certbot renew
si può automatizzare la cosa con cron
Per vedere se tutto funziona basta collegarsi al proprio hostname in un browser digitando solo quello e non /nextcloud
esempio: xxxx.hopto.org (hostname di NoIP)
Per controllare il grado di sicurezza del proprio server Nextcloud andare su: Nextcloud Security Scan e inserire il proprio hostname
Per far puntare direttamente al dominio creato occorre modificare i due file presenti in sites-enabled (/etc/apache2/sites-enabled) con “sudo nano 000-default.conf” e sudo nano 000-default-le-ssl.conf modificando DocumentRoot sia sulla porta 80 che 443
modificare DocumentRoot /var/www/html
in
DocumentRoot /var/www/html/nextcloud
Aggiungere “storage”
Per aggiungere un harddisk esterno/sd card aggiuntiva potete seguire questo tutorial #2 Nextcloud