Come installare un mini server web su un router


In questa pagina descriverà come installare un mini server web su un router (Asus RT-AC56U) - useremo un'installazione Entware, pertanto fate riferimento a questa pagina su come installare Entware su un router.
Useremo un mini server web denominato "minihttpd". Sfortunatamente questo server non è incluso nei pacchetti Entware, era incluso al tempo dei pacchetti Optware.
L'unica maniera per avere questo server è scaricare il codice sorgente e compilarlo usando gli strumenti di compilazione di Entware. Io l'ho già fatto usando il router Asus RT-AC56U, ottenendo i file binari finali.
In ogni modo vi fornirò un file .zip contenente tutti i file richiesti per eseguire questo server, pertanto scaricatelo, estraete i file inclusi nel file .zip ed in seguito copiate tutti i file estratti nelle seguenti cartelle:

FileCartella di destinazione
index.html/opt/share/www/minihttp
mini_httpd/opt/sbin
mini_httpd.conf/opt/etc
mini_httpd-htpasswd/opt/sbin
S80minihttpd/opt/etc/init.d

Tutte le suddette cartelle di destinazione già esistono nell'installazione Entware, tranne "/opt/share/www/minihttp", dobbiamo crearla ed in seguito copiarvi il file "index.html". All'interno della cartella "/opt/share/www/minihttp" dobbiamo anche creare una sottocartella denominata "cgi-bin", poiché questo mini server web supporta anche gli script CGI-BIN.
Innanzitutto dobbiamo impostare il file di configurazione "mini_httpd.conf" posto nella cartella "/opt/etc". Ciò che segue è il contenuto del file di configurazione fornito:

# mini_httpd - small HTTP server config
# a hostname to bind to, for multihoming (set this at bind 0.0.0.0 problem)
#host=setthis

# a directory to chdir() to at startup
dir=/opt/share/www/minihttp

# a directory to chdir() to after chrooting
#data_dir=/opt/share/www

port=8084
user=nobody
nochroot
charset=iso-8859-2
cgipat=**.php|**.cgi|**.sh
logfile=/opt/var/log/mini_httpd.log
pidfile=/opt/var/run/mini_httpd.pid

# P3P server privacy header http://www.w3.org/P3P/
#p3p=
#vhost

Questa è una breve descrizione delle più importanti variabili incluse nel suddetto file di configurazione:

  • "dir" : questa è la cartella radice del server web. Il valore predefinito è "/opt/share/www/minihttp";
  • "port" : questo è un numero di porta del server web su cui effettuare l'operazione di ascolto. Il valore predefinito è "8084";
  • "user" : il server web viene eseguito usando questo nome utente. Il valore predefinito è "nobody" (lo useremo per evitare i pieni privilegi dell'utente "root");

Un altro passo è modificare il proprietario di tutta la cartella "/opt/share/www/minihttp" usando lo stesso valore "user" del file di configurazione, in questo caso "nobody", usando il comando "chown -R nobody:nobody /opt/share/www/minihttp". Ogni qualvolta aggiungeremo un file all'interno della cartella radice "/opt/share/www/minihttp" del server web, dovremo anche modificare il proprietario del file aggiunto.
Dopo aver modificato il proprietario della suddetta cartella, possiamo avviare il server web usando il comando "/opt/etc/init.d/S80minihttpd start".
Possiamo aprire il browser ed andare all'indirizzo "http://[indirizzo router]:[porta]" dove "porta" è uguale al valore "port" usato nel file di configurazione. Il browser dovrebbe visualizzare il contenuto del file "index.html" incluso nella cartella radice del server web.


Come impostare un ID UTENTE ed una password sul server web

Normalmente quando avviamo questo mini server web, noi possiamo navigare all'interno di questo mini server web senza alcun tipo di autenticazione. Invece vorremmo avere una procedura di autenticazione allo scopo di fornire l'accesso a questo server web solo a pochi utenti e non a tutti gli utenti.
Questo può essere fatto usando il comando "mini_httpd-htpasswd" incluso nel suddetto file .zip di installazione.
Ad esempio vogliamo usare un utente "admin" con la password "admin", il comando da eseguire è "mini_httpd-htpasswd -c testpwd admin", dove il parametro dopo "-c" è il file "testpwd" di output, mentre l'ultimo parametro è il nome utente "admin", come da seguente esempio:

mini_httpd-htpasswd -c testpwd admin

Adding password for admin.
New password:
Re-type new password:


cat testpwd

admin:Yqm96b92BYBMw

Il suddetto file "testpwd" contiene una linea "user:password" che include un nome utente e la password cifrata; ovviamente possiamo usare più di un utente all'interno del file di output, ci basta ricordare di evitare l'uso del parametro "-c" nel comando "mini_httpd-htpasswd" se il file di output esiste già.
Notare che la password cifrata viene creata casualmente, pertanto non sarà mai la stessa.
In seguito possiamo aggiungere un altro utente denominato "administrator" con password "admin":

mini_httpd-htpasswd testpwd administrator

Adding user administrator
New password:
Re-type new password:


cat testpwd

admin:Yqm96b92BYBMw
administrator:jloexXcjKyLcI

Il suddetto file "testpwd" deve essere rinominato in ".htpasswd" e deve essere copiato sulla cartella radice del server web (la cartella predefinita è "/opt/share/www/minihttp"). In questo modo ogni qualvolta apriremo il browser ed andremo all'indirizzo internet del server web, il browser chiederà l'autenticazione tramite nome utente e password.