Contenuti

Come ho risolto il problema del caricamento infinito sulla nas QNAP

Il problema dell’infinita schermata di caricamento blu sul QNAP

Spoiler della soluzione

Nel mio caso sono riuscito a risolvere il problema con i passi che riporto qui sotto (spero funzionino anche per te).

I sintomi

Se sei arrivato su questa pagina immagino che anche tu ti sia ritrovato, come me, a fissare per interi minuti la schermata di caricamento blu dopo aver effettuato il login sulla tua nas Qnap. Il problema è noto e evidente, una volta navigato sulla pagina di gestione della nas (http://ip_nas:8080) ed effettuato il login si rimane in attesa nella mitica schermata blu di caricamento senza poter proseguire.

Attesa infinita in caricamento a seguito del login

Attesa infinita in caricamento a seguito del login

L’analisi

La prima indagine riguardava proprio la schermata di caricamento blu mostrata dal browser. Ho aperto la console sviluppatori (in questo caso di Microsoft Edge) con CTRL+SHIFT+J e sono andato nel tab “Rete”, poi ho immesso nuovamente le credenziali di accesso alla nas ritrovandomi nella schermata di caricamento. A questo punto ho constatato che non c’era nessuna richiesta HTTP effettivamente in corso e non c’era traccia delle richieste di polling che generalmente mi sarei aspettato di trovare. Bene, a quanto pare c’è un qualcosa sul frontend Javascript della pagina web che non sta funzionando.

Cos'è il Polling?
Per chi se lo stesse chiedendo, il polling è una tecnica di programmazione web che consiste nel richiedere periodicamente al server se ci sono nuovi dati da mostrare. È usato per creare applicazioni web in tempo reale che devono aggiornarsi dinamicamente senza che l’utente debba ricaricare la pagina.

Altro indizio che ci siano problemi nel caricamento o nell’esecuzione della logica dietro la pagina web di accesso lo trovo nel tab “console”, in quanto ci sono errori relativi all’utilizzo di oggetti Javascript non correttamente definiti undefined.

L’ipotesi

Cercando di risalire all’origine degli errori del Javascript arrivo nel tab “sources” ai file contenenti le routine necessarie al funzionamento della pagina. Sembra che i file stessi di “libreria” non siano correttamente formati e/o caricati. Dall’estensione degli url caricati mi accordo che le risorse web sono generate utilizzando la tecnologia CGI, quindi magari durante la fasi di compilazione potrebbe essere andato storto qualcosa.

CGI?
I siti in CGI sono siti web che usano dei programmi chiamati script CGI per generare dinamicamente le pagine HTML in base alle richieste dei browser. Il CGI (Common Gateway Interface) è un protocollo standard che permette ai server web di eseguire i programmi e produrre l’output per i browser. Gli script CGI possono essere scritti in vari linguaggi di programmazione, come Perl o Bash, e possono migliorare i siti web rendendoli più interattivi e personalizzati. I siti in CGI funzionano in questo modo: il browser richiede una certa URL al server web; il server web riconosce che l’URL corrisponde a uno script CGI e lo esegue; lo script CGI produce l’output in formato HTML e lo invia al server web; il server web invia l’output al browser che lo visualizza.

Soluzione

Dalla sintomatologia del problema letta sui blog e forum online non sembra ci sia sempre la stessa causa dietro al fenomeno. Per questo i passi della soluzione sono da intendersi come tentativi da eseguire in sequenza per risolvere il problema (quindi una volta risolto il problema non si deve proseguire con i successivi).

Naturalmente, la prima cosa da provare per questo genere di errori è sempre cancellare i dati di navigazione del browser e/o provare un altro browser, magari in modalità in incognito (una volta aperta la console sviluppatore su Microsoft Edge o Google Chrome basta cliccare con il tasto destro sul tasto refresh). Diciamo che è lo “spegni e riaccendi” della programmazione web.

Rigenerazione della cache utente

Se il problema persiste, proviamo a seguire il suggerimento di una pagina di supporto del costruttore. Tramite un client ssh accediamo alla nas ed eseguiamo i comandi:

1
2
mv /etc/config/.qos_config /etc/config/.qos_config_old 
reboot

Ssh per accedere alla Qnap?
Di default le nas Qnap espongono il servizio di SSH per il solo utente admin. In internet è possibile trovare diversi software come putty o secureCRT per poter sfruttare il servizio. In questo caso però basta aprire la bash (se si è su Linux) o il terminale Powershell (se si è su Microsoft Windows) ed eseguire il comando ssh admin@IP_QNAP_NAS.
Se dopo il riavvio il problema persiste o il comando va in errore per mancanza di spazio sulla partizione vai al prossimo passo.

Cambio di indirizzo IP
Può capitare che questa operazione faccia cambiare l’indirizzo IP della nas. Niente paura, per ritrovarla facilmente in rete dopo il riavvio si può utilizzare l'applicazione Qnap Finder.

Liberare spazio sulla partizione piena

Se il problema persiste, proviamo a verificare la disponibilità di spazio nella partizione di sistema in cui risiedono le risorse per la pagina web. Una volta entrati in ssh usare il comando:

1
df -h
df -h

df -h

La riga da osservare è quella in cui nell’ultima colonna “Mounted On” troviamo scritto “/mnt/ext”. Se lo spazio disponibile è di 0 byte (e l’utilizzo è al 100%) c’è qualcosa che non va. Liberiamo dello spazio cancellando le pagine del manuale di apache:

1
rm /mnt/ext/opt/apache/share/man/* -r -f

Adesso possiamo riprovare il comando dello step precedente:

1
2
mv /etc/config/.qos_config /etc/config/.qos_config_old 
reboot

Ripristino del firmware

Attenzione! Assicurati di avere un backup dei dati
Le operazioni eseguite finora non sono invasive e non costituiscono un reale pericolo per i file sulla nas. Il ripristino del firmware invece, in qualche raro caso, potrebbe comportare il mancato avvio della nas e la difficoltà di accedere ai file salvati in essa, nonostante qui sia riportata la procedura ufficiale rilasciata dal costruttore. Per evitare ogni problema assicurati di avere una copia di backup dei file, ad esempio copiandoli tramite un pc in rete.

Se arrivato fin qui continua a non funzionare, non rimane che eseguire un ripristino del firmware. Niente paura, per questo viene in soccorso la guida di Qnap qui riepilogata:

  • Prima di tutto recuperiamo il modello con il comando /sbin/getsysinfo model .
  • Scarichiamo localmente su un pc l’ultimo firmware disponibile dal sito ufficiale in base al modello.
  • Scompattiamo sul pc l’archivio compresso.
  • Carichiamo sulla nas nella cartella Public il file .img contenuto nel pacchetto di firmware. Per farlo senza destreggiarsi con i comandi di scp possiamo utilizzare il web file manager su http://IP_NAS:8080/cgi-bin/filemanager. Una volta caricato il file manager carichiamo il file .img nella cartella Public.
  • Eseguiamo i comandi in ssh (sostituendo con FIRMWARE_FILE_NAME il nome del file .img, eventualmente aiutandosi con gli autocompletamenti con il tasto TAB):
1
2
ln -sf /mnt/HDA_ROOT/update /mnt/update
/etc/init.d/update.sh /share/Public/FIRMWARE_FILE_NAME
  • Attendere che la procedura finisca e infine eseguire:
1
reboot

Conclusione

Con questi passaggi sono riuscito a risolvere il mio problema, avendo di nuovo la possibilità di collegarmi al portale di gestione della nas Qnap. Se la guida ti è stata utile o se vuoi migliorarla lascia un commento qui sotto!