Adoperiamo un Orange Pi Plus 2E, una single-board computer, per realizzare un Web Server con Ubuntu 20.04 su cui ospitare Snipe-IT
Orange Pi è un progetto cinese che cerca di competere con Raspberry. Tra le tante single-board computer prodotte dall’azienda cinese, oggi adopereremo la Orange Pi Plus 2E, recensita qualche anno fa sul nostro canale YouTube [LINK] e rimasta ferma fino ad oggi. Sfrutteremo questo computer in miniatura per installare sulla eMMC il sistema operativo Armbian, basato su Ubuntu 20.04 LTS per architetture ARM, e caricare la piattaforma Open Source Snipe-IT, per realizzare un web server Linux per inventariare il materiale che abbiamo in casa.
Progetto
Per necessità varie avevamo bisogno di catalogare e organizzare il materiale informatico stipato, quindi necessitavamo di un sistema che fosse sempre reperibile e accessibile da tutti i dispositivi connessi alla rete domestica. Avendo a disposizione l’Orange Pi Plus 2E mai adoperato e pronto all’uso, si è deciso di dargli uno scopo. Siamo consci del fatto che un vecchio PC con un OS GNU/Linux o una macchina virtuale sarebbero state soluzioni anche migliori, ma avevo questo dispositivo e volevamo dargli uno scopo di vita. La scelta poi di Armbian è molto ovvia: i sistemi operativi della Orange Pi sono pessimi e mal supportati, anche quando si basano su SO GNU/Linux. Infine, Snipe-IT è una piattaforma davvero ben sviluppata e supportata, che fornisce molte funzionalità utili nel tempo.
Componenti
Le componenti adoperate principalmente sono l’Orange Pi Plus 2E ed il suo alimentatore da 5V e 3A, che acquistammo tempo fa con la single-board computer. Per puro capriccio, anche questo solo perché era stato acquistato ma poi mai adoperato, è un display da 7″ Touch-screen della Longruner, assolutamente ininfluente ai fine del progetto, ma adoperato lo stesso per la sua comodità. Tra le altre cose, questo display è fornito già in una cornice su cui avvitare l’Orange Pi Plus 2E, anche se nativamente è pensato per Raspberry. Per installare Armbian sulla eMMC abbiamo adoperato una MicroSD classe 10 da 16GB. Per le connessioni necessarie è sufficiente un cavo di rete qualsiasi per installare i programmi necessari, aggiornare il sistema operativo e gestire da web browser Snipe-IT.
Lista componenti:
- Orange Pi Plus 2E: https://amzn.to/3tarTar
- Alimentatore 5V 3A: https://amzn.to/2OB0gsi
- Display 7″ Touch-screen HDMI: https://amzn.to/2OfniVP
- MicroSD 16GB: https://amzn.to/2MZyXay
Fase preliminare
Prima di procedere alla vera e propria programmazione del Web Server Linux, dobbiamo predisporre l’Orange Pi, installando il sistema operativo e configurarlo per le successive operazioni. Partiamo dall’immagine del OS da scaricare, accessibile a questo LINK: una volta scaricata, sarà necessario caricarla su MicroSD tramite Rufus [LINK], un tool gratuito e semplice da usare.
Quando il processo sarà terminato, inserite la MicroSD nell’apposito alloggio dell’Orange Pi Plus 2E e accendetelo. Assicuratevi prima di aver collegato il dispositivo ad un monitor o display tramite la porta HDMI, collegando anche una tastiera. Armbian è un OS a riga di comando, implementabile con una GUI, che sarà del tutto inutile nel nostro caso. Quando si sarà avviato, Armbian vi chiederà di inserire di loggarvi come root, la cui password è 1234. Dopo aver fatto l’accesso come root, la procedura guidata vi chiederà di creare un utente e password, cambiare la password di root e altre informazioni utili alla configurazione del sistema. I dati ora inseriti verranno memorizzati in modo definitivo sulla MicroSD e saranno vitali per l’installazione del OS su eMMC. Procediamo ora a memorizzare tutto sulla eMMC. Basterà digitare il comando:
nand-sata-install
Si avvierà la procedura guidata di installazione, molto intuitiva e rapida; in caso di dubbi, consultate la pagina ufficiale di Armbian a questo LINK.
Una volta installato, riavviate l’Orange Pi Plus 2E con il comando reboot e rimuovete la MicroSD, poi al successivo riavvio, collegando il dispositivo con il cavo di rete, entrate come root ed installate, se non presenti:
apt-get install nano apt-get install ssh
Il programma Nano è un editor di testo molto utile per la modifica dei file di configurazione, mentre SSH è un protocollo di gestione remota che ci permetterà di gestire da un computer il nostro Orange Pi Plus 2E. Interroghiamo anche l’Orange Pi Plus 2E per scoprire il suo indirizzo IP. con il comando:
ifconfig
Per adoperare il protocollo SSH, oltre all’indirizzo IP, scarichiamo e installiamo su Windows il programma PuTTy [LINK], client SSH con terminale per la gestione remota. Se non usate Windows, potete scaricare OpenSSH per GNU/Linux o Termius per iOS.
Avviato PuTTY, inseriamo in Host Name l’indirizzo IP e clicchiamo su Open. Si aprirà la finestra di terminale con cui fare login come root e inserendo la password che avevamo scelto prima. Siamo dentro il nostro Orange Pi e possiamo passare alla vera e propria configurazione.
Installazione LEMP
LEMP è una piattaforma di sviluppo per applicazioni web per ambiente Linux. Il nome è un acronimo che sta per Linux Nginx MySQL PHP. Nginx è un web server leggero che adopera meno risorse di sistema di Apache ed è preferibile a quest’ultimo proprio in questi ambiti di applicazione. Procederemo ad installare LEMP partendo da Nginx. Digitiamo quindi:
apt-get update apt-get install nginx
A questo punto apriamo il web browser da PC e digitiamo nella barra degli indirizzi http://xxx.xxx.xxx.xxx dove al poste delle x metteremo l’indirizzo IP ricavato pocanzi. Se tutto è andato bene apparirà una schermata come questa:
Passiamo ora all’installazione e configurazione del MySQL.
apt-get install mysql-server mysql_secure_installation
Ci verrà richiesto di settare una password per il database e altre impostazioni.
Adesso è la volta dell’installazione del PHP, procediamo digitando:
sudo apt-get install php-fpm php-mysql
Terminata l’installazione, configuriamo il file php.ini
nano /etc/php/7.4/fpm/php.ini
Troviamo la segue la seguente riga e impostando il valore da 1 a 0:
cgi.fix_pathinfo=0
Non ci resta che riavviare PHP e abilitare Nginx e MySQL:
systemctl restart php7.4-fpm systemctl enable php7.4-fpm systemctl enable nginx systemctl enable mysql
Il passo successivo è configurare correttamente Nginx per adoperare correttamente il linguaggio PHP 7.4, nativo nella versione di Armbian che stiamo adoperando:
nano /etc/nginx/sites-available/default
Il file che verrà aperto va configurato come qui sotto. Il server_name deve corrispondere all’indirizzo IP dell’Orange Pi Plus 2E:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name 192.168.xxx.xxx; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
Verifichiamo che le modifiche effettuate siano corrette digitando:
nginx -t
Se tutto è stato settato correttamente apparirà su terminale quanto segue, altrimenti rivedete i passaggi precedenti.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ricarichiamo Nginx e passiamo all’installazione di Snipe-IT
systemctl reload nginx
Installazione di Snipe-IT
Una volta installata la piattaforma LEMP, procediamo con l’installazione di Snipe-IT, aggiornando il OS Armbian e installando il gestore di pacchetti Composer.
sapt-get update apt-get upgrade apt-get install composer unzip
Riavviamo il dispositivo con il comando reboot e rilogghiamo sempre come root. Installiamo poi i seguenti pacchetti PHP 7.4:
apt-get install php7.4-mbstring php7.4-xml php7.4-gd php7.4-zip php7.4-curl php7.4-bcmath php7.4-ldap
Agendo sempre come root, configuriamo il database MySQL, creando un’utenza con relativa password, un database e impostandone i privilegi:
mysql -u root -p mysql> create user snipeit@127.0.0.1 identified by 'passworddascegliere' mysql> create database snipeitdb; mysql> grant all on snipeitdb.* to snipeit@127.0.0.1; mysql> flush privileges; mysql> exit;
Se tutto è andato a buon fine avrete una schermata come questa:
Scarichiamo Snipe-IT e copiamolo nella sottocartella www di /var
smkdir -p /var/www/snipeit/ git clone https://github.com/snipe/snipe-it /var/www/snipeit/html cd /var/www/snipeit/html
Assegniamo ora i permetti a file e directory:
chown -R www-data:www-data storage chown -R www-data:www-data public/uploads chown -R www-data:www-data bootstrap/cache chmod -R 755 storage chmod -R 755 public/uploads chmod -R 755 bootstrap/cache
Ora che abbiamo impostato i permessi e abbiamo impostato il database, passiamo alla personalizzazione di Snipe-IT, avviando Composer e impostando il file .env che contiene le configurazioni di Snipe-IT
composer install --no-dev --prefer-source cp .env.example .env nano .env
Composer impiegherà qualche minuto per lavorare; vi apparirà una schermata simile a questa
Una volta aperto il file .env modifichiamo le seguenti righe come riportate in basso, ricordadovi di inserire dopo il protocollo http l’indirizzo IP dell’Orange Pi Plus 2E:
APP_URL=http://192.168.xxx.xxx APP_LOCATE=it
Verifichiamo anche i parametri del database se coincidono a quanto riportato:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_DATABASE=snipeitdb DB_USERNAME=snipeit DB_PASSWORD=passwordsceltaneldatabase
Salviamo tutto e controlliamo se non ci sono migrazioni di database in sospeso:
php artisan migrate
Creiamo e applichiamo una chiave di criptatura al file .env, precedentemente aperto e modificato
php artisan key:generate
Si conclude così la fase di configurazione di Snipe-IT che però ancora non può essere utilizzato. Torniamo su Nginx e configuriamolo per avviare Snipet-IT su protocollo http
nano /etc/nginx/sites-enabled/default
Il file che apriamo deve essere modificato come riportato, ricordandovi che il server_name corrisponde all’Indirizzo IP dell’Orange Pi:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/snipeit/html/public/; index index.php index.html index.htm index.nginx-debian.html; server_name 192.168.xxx.xxx; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri $uri/ =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Salviamo e riavviamo Nginx
service nginx restart
Poi apriamo il Web Browser da PC e digitiamo sulla batta degli indirizzi http://192.168.xxx.xxx e si aprirà la schermata di Setup di Snipe-IT
Andiamo verificare se il database creato in precedenza sia stato trovato
Infine creiamo l’utente Amministratore
Una volta conclusa anche questa parte, si aprirà finalmente Snipe-IT