Snipe-IT

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:



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

Snipe-IT

Andiamo verificare se il database creato in precedenza sia stato trovato

Snipe-IT

Infine creiamo l’utente Amministratore

Snipe-IT

Una volta conclusa anche questa parte, si aprirà finalmente Snipe-IT

Snipe-IT