Progettiamo un Cloud privato con un Orange Pi RV2, basato su Risc-V, installando NextCloud
Negli ultimi anni il concetto di cloud personale ha assunto un ruolo sempre più centrale sia in ambito professionale sia nel contesto domestico avanzato. L’esigenza di mantenere il pieno controllo sui propri dati, unita alla crescente maturità di soluzioni open source, ha reso piattaforme come NextCloud un riferimento solido per la realizzazione di ambienti di storage, collaborazione e sincronizzazione autogestiti. In questo scenario si inserisce l’Orange Pi RV2, una single board computer basata su architettura RISC-V, che rappresenta una scelta particolarmente interessante per chi desidera coniugare sperimentazione hardware, apertura tecnologica e servizi cloud self-hosted. L’uso di un’architettura RISC-V introduce alcune specificità che vanno comprese e gestite con attenzione, soprattutto sul piano software. L’Orange Pi RV2, infatti, per garantire stabilità, compatibilità e supporto ai pacchetti necessari all’esecuzione di NextCloud, richiede l’adozione di una distribuzione Linux adeguata. In questo contesto Ubuntu, nelle sue varianti compatibili con RISC-V, rappresenta la base di sistema più solida e supportata, consentendo di costruire un ambiente affidabile su cui installare e configurare l’intero stack applicativo del cloud privato.
Fase preliminare
NextCloud va installato su ambiente Linux, quindi premuriamoci di scaricare la versione di Ubuntu per il nostro Orange Pi RV2, andando sul sito ufficiale e scaricando a questo LINK.

Una volta scaricata, da PC tramite Rufus [LINK], carichiamola sulla MicroSD che adopereremo per il nostro Orange Pi RV2. L’operazione è semplice, basta selezionare la destinazione (MicroSD), il sistema operativo e lanciare la copia dei file. Appena terminerà il processo, rimuoviamo la MicroSD ed inseriamola nella Orange Pi, mentre è ancora spenta.

Avviamo la single-board computer, collegandola a un monitor e ad una tastiera, e attendiamo il caricamento di Ubuntu. Il sistema operativo vi chiederà di autenticarvi con nome utente orangepi e password orangepi. Una volta completata questa fase, procediamo con l’aggiornamento del sistema operativo.
sudo apt update
sudo apt upgrade -y
Ad aggiornamento concluso, installando SSH per controllare la scheda via terminale da un altro PC.
sudo apt install ssh
Conclusa l’installazione, riavviamo la single-board computer. Al riavvio, loggandoci con l’utente creato in precedenza, apparirà il nostro indirizzo IP, fondamentale e da conservare. A tal riguardo, recatevi sul vostro Modem/Router e impostate questo IP Statico. Successivamente, possiamo staccare il monitor e la tastiera e lavorare comodamente da PC usando PuTTY [LINK].

Avviato PuTTY, inseriamo in Host Name l’indirizzo IP e clicchiamo su Open. Si aprirà la finestra di terminale con cui fare login come utente e inserendo la password che avevamo scelto prima. Siamo dentro il nostro Orange Pi e possiamo passare alla vera e propria configurazione.

Installazione NextCloud
Partiamo con l’installazione di NextCloud, predisponendo il corretto ambiente di esecuzione. La prima cosa da fare è installare Apache2, non solo perché è il più comune webserver, ma anche perché è NextCloud è testato e documentato su Apache2.
sudo apt installa apache2 -y
Nextcloud è un’applicazione web complessa e ha bisogno di molte “funzioni extra” oltre a PHP base. Le estensioni PHP permettono a Nextcloud di parlare con il database, gestire file compressi, scaricare aggiornamenti, gestire lingue, date ed emoji, e cifrare i dati in modo sicuro.
sudo apt install php php-common libapache2-mod-php php-bz2 php-gd php-mysql \
php-curl php-mbstring php-imagick php-zip php-common php-curl php-xml \
php-json php-bcmath php-xml php-intl php-gmp zip unzip wget -y/
Bisogna adesso attivare alcuni moduli di Apache2 che NextCloud richiede per funzionare correttamente. Queste permettono di impostare, leggere e usare variabili d’ambiente, riconoscere i tipi di file, gestire gli header HTTP ed altro ancora.
sudo a2enmod env rewrite dir mime headers setenvif ssl
Ora, riavviamo ed abilitiamo Apache2 all’avvio del sistema.
sudo systemctl restart apache2
sudo systemctl enable apache2
Controlliamo adesso lo stato di Apache2.
sudo systemctl status apache2
Se tutto è stato configurato correttamente avremo questo risultato.

Controlliamo anche lo stato dei moduli di Apache2.
sudo apache2ctl -M
Il risultato sarà simile a questo.

Per memorizzare e gestire tutti i dati strutturali, come account, password, permessi, gruppi e configurazioni, andiamo ad installare MariaDB.
sudo apt install mariadb-server -y
Al termine dell’installazione, andiamo a loggarci con il comando:
sudo mysql
Passo passo creiamo un user e la sua password. Nel nostro esempio l’utente sarà “nextcloud” e la password “1234”.
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '1234';
Creiamo il Database, chiamandolo ncloud. Impostiamo il set di caratteri Unicode per includere anche caratteri speciali.
CREATE DATABASE ncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Diamo ora i permessi necessari all’utente nextcould per poter leggere, scrivere, modificare tabelle, cancellare dati, creare indici; in poche parole è l’admin del database.
GRANT ALL PRIVILEGES ON ncloud.* TO 'nextcloud'@'localhost';
Ricarichiamo le tabelle dei privilegi, visto che abbiamo creato un nuovo utente e ne abbiamo cambiato i permessi.
FLUSH PRIVILEGES;
Usciamo adesso dalla configurare del database.
quit;
Riavviamo ed abilitiamo MariaDB all’avvio.
sudo systemctl restart mariadb
sudo systemctl enable mariadb
Verifichiamo che MariaDB sia funzionante.
sudo systemctl status mariadb
Il risultato che ci verrà mostrato sarà questo.

Muoviamoci all’interno della cartella html
cd /var/www/html
Al suo interno scarichiamo la versione più recente di NextCloud.
sudo wget https://download.nextcloud.com/server/releases/latest.zip
Quello che abbiamo scaricato è un file compresso che dobbiamo decomprimere.
sudo unzip latest.zip
Una volta decompresso, il file zippato può essere eliminato.
sudo rm -rf latest.zip
Cambiamo il proprietario dei file di Nextcloud in modo che Apache (il web server) possa leggerli e scriverli correttamente; applichiamo il cambiamento a tutti i file e le sottocartelle.
sudo chown -R www-data:www-data /var/www/html/nextcloud/
Entriamo all’interno della cartella nextcloud, la quale contiene il necessario per installare NextCloul.
cd /var/www/html/nextcloud
Eseguiamo il seguente comando per avviare l’installazione di NextCloud, usando il database ncloud, l’user nextcloud e la sua password 1234, generando anche un utente (admin) e una password (admin) per NextCloud. Quest’ultima parte è necessaria per effettuare il log in in NextCloud.
sudo -u www-data php occ maintenance:install --database \
"mysql" --database-name "ncloud" --database-user "nextcloud" --database-pass \
'1234' --admin-user "admin" --admin-pass "admin"
Attendiamo il completamento dell’installazione ed il relativo messaggio di installazione avvenuto con successo.
![]()
Con il comando nano modifichiamo il file config.php per impostare l’accesso di NextCloud usando l’indirizzo IP del nostro Orange Pi RV2. Tale operazione è necessaria per accedervi.
sudo nano /var/www/html/nextcloud/config/config.php
Dobbiamo cercare la riga che contiene la truste_domains e cambiare la voce localhost con il nostro IP. Per confermare, CTRL+X e poi Y.
'trusted_domains'
=> array (
0 => '192.168.1.195',
Modifichiamo un altro file di configurazione, questa volta il file 000-default.conf di Apache.
sudo nano /etc/apache2/sites-enabled/000-default.conf
Il blocco che modifichiamo serve a dire al web server come gestire Nextcloud. Salviamo come prima con CTRL+X e poi Y.
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/nextcloud
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Riavviamo a questo punto Apache2.
sudo systemctl restart apache2
Apriamo da PC un browser e digitiamo http://192.168.1.195 per accedere alla pagine web di NextCloud ed effettuare il log in con le credenziali admin/admin.
