Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Guida pratica: proteggere le webapp con un reverse proxy locale ( No IP Pubblico No Porte aperte No Dominio )

Featured Replies

Ciao a tutti,

scrivo una guida su come poter avere l'HTTPS per le proprie app ma accessibili solo in locale o con Tailscale senza però l'utilizzo di un dominio.
Se avete un dominio utilizzate la mia altra guida :) Questa quà :)

Passo 1: Spostare l’interfaccia GUI di Unraid su una nuova porta

Prima di andare troppo avanti, dobbiamo liberare le porte 80 e 443 (HTTP e HTTPS) per il nostro reverse proxy.
Per impostazione predefinita, Unraid utilizza queste porte per la GUI al fine di consentire il monitoraggio/configurazione remota.

La maggior parte della documentazione e delle guide presuppone che tu stia esponendo le porte sul tuo router e che il router possa inoltrare il traffico delle porte 80 e 443 a qualunque porta stia usando Nginx Proxy Manager (NPM).
Con questa guida, invece, tutto il traffico http/https bypassa il router e va direttamente sulle porte 80 e 443, quindi dobbiamo modificarne la configurazione e mettere Nginx Proxy Manager al loro posto.

  1. Accedi alla GUI di Unraid.

  2. Vai su Settings > Management Access.

  3. Assicurati che Use SSH sia abilitato e che la porta sia impostata su 22.

    • Questo sarà il nostro accesso di riserva al server nel caso in cui qualcosa vada storto e non sia più possibile accedere alla GUI.

    • Di solito è già attivo di default.

  4. Cambia la porta HTTP: da 80 a qualcos’altro, ad esempio 90 o 11080.

    • Scrivi da qualche parte questa modifica! Se dimentichi il numero, non potrai più accedere alla web GUI di Unraid.

    • Assicurati che questa porta non sia in conflitto con quelle utilizzate dai tuoi container Docker.

  5. Cambia la porta HTTPS: da 443 a qualcos’altro, ad esempio 453 o 11443.

    • Annota anche questa modifica!

    • Assicurati che non vada in conflitto con quelle utilizzate dai container Docker.

  6. Dopo qualche secondo dovresti essere disconnesso dalla GUI di Unraid.

    • Riconnettiti usando la nuova porta digitando:
      X.X.X.X:[Numero Porta]

      • X.X.X.X = l’indirizzo IP del tuo server Unraid

      • [Numero Porta] = il numero di porta che hai assegnato a HTTP nel passo 4.

Congratulazioni! Ora possiamo installare Nginx Proxy Manager per controllare il traffico in arrivo.

Passo 2: Nginx Proxy Manager in funzione

Ora useremo Nginx Proxy Manager (abbreviato in NPM) per gestire tutto il traffico in entrata e instradarlo dove necessario.
Lo utilizziamo per centralizzare l’instradamento del traffico e ottenere i certificati SSL per abilitare l’HTTPS.

  1. Nella GUI di Unraid, vai su Apps e cerca Nginx Proxy Manager.

  2. Trova quello chiamato "NginxProxyManager" di "Djoss's Repository".

  3. Clicca sull’app, quindi su Install.

  4. Imposta:

    • HTTP Port: su 80

    • HTTPS Port: su 443

    • Controlla bene che la Web UI Port non vada in conflitto con nessuno dei tuoi altri container Docker.
      Puoi cambiarla se vuoi, ma ricordati il numero per poterci accedere in seguito.

    • Se stai usando reti Docker personalizzate, imposta la variabile Network Type di conseguenza.

  5. Clicca su Done e attendi che Docker scarichi tutto e avvii il container.

  6. Avvia l’interfaccia web GUI di NPM.

  7. Accedi a NPM usando le credenziali di default:

  8. Cambia l’email e la password dell’amministratore con qualcosa di nuovo e univoco.

Congratulazioni, Nginx Proxy Manager è ora configurato e in esecuzione sul tuo server Unraid ed è pronto per essere utilizzato.

Passo 3: Installazione di Pi Hole

NOTA: Ho avuto qualche difficoltà nell'installazione di Pi Hole in quanto non è accessibile da Unraid quindi se state eseguendo questi passaggi da un Tunnel di Tailscale non vi funzionerà, non ho trovato ancora una soluzione per questo quindi dovete o essere nella vostra rete locale o dovete installare Tailscale all'interno di PiHole.

Ora useremo Pi Hole per gestire il nostro DNS, questo servirà per far riconoscere a chi usa la nostra rete gli indirizzi locali che creeremo.

  1. Nella GUI di Unraid, vai su Apps e cerca Nginx Proxy Manager.

  2. Trova quello chiamato "binhex-official-pihole" di "Official Container".

  3. Clicca sull’app, quindi su Install.

  4. IMPORTANTISSIMO Imposta il Network Type in br0 -> Questo passaggio è fondamentale in quanto Pi Hole deve avere un suo indirizzo IP dedicato sulla tua rete locale

  5. In Fixed IP address imposta un indirizzo IP che è libero sulla tua rete locale puoi usare un IP Scanner per controllare quelli liberi

  6. Opzionale se usi tailscale:

    • Metti la spunta su "Use tailscale"

    • Imposta un Tailscale Hostname, ad es. pihole

  7. Controlla bene che la Web UI Port non vada in conflitto con nessuno dei tuoi altri container Docker.
    Puoi cambiarla se vuoi, ma ricordati il numero per poterci accedere in seguito.

  8. Clicca su Done e attendi che Docker scarichi tutto e avvii il container.

  9. Opzionale Tailscale:

    • Aprite il log cliccando con il tasto destro sull'iconea di Pi Hole e recuperate il link per fare il login su tailscale con il vostro docker

  10. Ora cliccando con il tasto destro sull'iconea di Pi Hole apriamo la Console:

    • Digitiamo pihole setpassword e impostiamo la password che utilizzeremo per accedere alla Web UI

  11. Una volta terminato dobbiamo andare sull'indirizzo ip che abbiamo assegnato nel passaggio 5 con la porta del passaggio 7.

  12. Accedi a PiHole usando la password che hai creato nel passaggio 10

Congratulazioni, Pi Hole è stato installato correttamente.

Passo 4: Utilizzare Pi Hole come DNS

Questi passaggi saranno indicativi in quanto ogni modem/router ha le sue regole e ogni dispositivo idem.
Quà potete prendere due strade, o assegnare a tutti i dispositivi collegati alla vostra rete Pi Hole come DNS o assegnarlo manualmente solo ad alcuni dispositivi.
Per assegnarlo a tutti i dispositivi:

  1. Andate nella pagina di configurazione del vostro modem/router, ad es. 192.168.1.1

  2. Ora cercate l'impostazione del Server DHCP è quella sezione dove decidete che indirizzi IP assegnerà il modem ad ogni dispositivo.

  3. Quà come Server DNS 1 o Server DNS Preferito dovete mettere l'indirizzo di Pi Hole che avete assegnato al passaggio 5 del passo 3 senza porte, ad es. 192.168.1.200

  4. Per rendere effettiva la modifica dovrete probabilmente disconnettere i vostri dispositivi dalla rete e riconnetterli o riavviare il modem/router

Per assegnarlo ai singoli dispositivi:

  1. Andate nella pagina di configurazione del vostro dispositivo

  2. Nella scheda di rete che state usando cercate le impostazioni del ipv4

  3. Quà come Server DNS 1 o Server DNS Preferito dovete mettere l'indirizzo di Pi Hole che avete assegnato al passaggio 5 del passo 3 senza porte, ad es. 192.168.1.200

Per controllare che tutti i passaggi siano andati a buon fine potete tornare nella Web Ui di Pi Hole e in Tools / Network dovreste vedere tutti i dispositivi a cui avete assegnato il DNS

Non andrò nel dettaglio di come impostare Pi Hole in quanto ci sono molte procedure Online che lo spiegano.


Se State usando una VPN:

Se volete usare Pi Hole anche nella vostra VPN dovrete impostare anche in questa Pi Hole come DNS.

Anche quà la procedura cambia da VPN a VPN scriverò quella di Tailscale perchè è quella che uso io.

  1. Andate nella admin page di tailscale : https://login.tailscale.com/admin/

  2. Ora andate nella tab DNS

  3. Nella parte dei Global nameservers cliccate su Add nameserver -> Custom

    • In Nameserver mettete l'indirizzo ip di Pi Hole quello di Tailscale però, ad es. 100.99.99.99

    • Cliccate su Save

  4. Ora in Global nameservers vi troverete anche il vostro DNS

  5. Potete mettere la spunta su Override DNS Server in modo che quando siete connessi a Tailscale vengano usati questi a prescindere di quelli impostati sul Dispositivo in uso.

  6. N.B. Se avete più di un DNS impostato Tailscale sceglierà a sua discrezione quello più veloce quindi può capitare alle volte che il vostro traffico non venga instradato su Pi Hole, ma sugli altri DNS impostati. Per ovviare lasciate solo Pi Hole

  7. Andate nella Web Ui di Pi Hole

  8. Ora andate in Settings / DNS e in alto a destra cliccate su Basic che diventerà Expert

  9. Ora nella parte a sinistra di Interface Settings flaggate Permit all origins

N.B. questa impostazione è PERICOLOSA se Pi Hole ha diretto accesso ad internet, se avete aperto la porta 53. trovate tutte le info al riguardo quà.

Passo 5: Risoluzione con Dominio Personalizzato

Ora per poter usare un dominio personalizzato dobbiamo dire a Pi Hole come risolvere le nostre richieste, in pratica quando cercheremo
https://unraid.local Pi Hole dovrà convertirlo nell'indirizzo IP del nostro Unraid.

Per farlo:

  1. Apri la GUI di Pi Hole

  2. Vai in Settings -> Local DNS Records

  3. Nella parte di Destra List of local DNS records in basso dovrai compilare:

    • Domain = il dominio che hai scelto di usare, ad es. unraid.local

    • Associated IP = l’IP di Unraid, ad es. 192.168.1.100

    • Clicca sul + verde e hai terminato

    • Se vai all'indirizzo che hai scelto, ad es. http://unraid.local ti trovai la pagina di benvenuto di NPM

  4. Ora nella parte di sinistra List of local CNAME records dobbiamo definire i reindirizzamenti:

    1. Per farlo dobbiamo compilare:

      • Domain = il sottodominio che hai scelto di usare, ad es. kavita.unraid.local

      • Target Domain = il dominio "madre" a cui punta, nel nostro caso unraid.local

      • Clicca sul + verde e hai terminato

      • Se vai all'indirizzo che hai scelto, ad es. http://kavita.unraid.local ti trovai la pagina di benvenuto di NPM

  5. Ripeti il passaggio 4 per ogni servizio che stai ospitando.

Ora possiamo creare i vari reindirizzamenti su NPM per poter accedere alle nostre APP.

  1. Apri la GUI di NPM.

  2. Vai su Hosts > Proxy Hosts.

  3. Clicca su Add Proxy Host (in alto a destra).

  4. Compila la finestra di dialogo con queste informazioni:

    • Domain Names = il dominio completo che vuoi assegnare al servizio

      • Premi Tab o Invio dopo aver scritto: se non lo fai, il testo scomparirà e causerà un errore.

    • Scheme = se il servizio accetta traffico http o https sulla porta indicata

    • Forward Hostname/IP = l’IP Tailscale del servizio (di solito il tuo server Unraid)

    • Forward Port = la porta su cui gira il servizio

      • La trovi nei container Docker della GUI di Unraid

    • Cache Assets = scegli se vuoi che NPM faccia caching degli asset del servizio

    • Block Common Exploits = attivo (a volte può dare problemi, ma di default conviene tenerlo attivo)

    • Websockets Support = attivalo se il servizio richiede websocket

    • Access List = Publicly Accessible

  5. Testa il dominio personalizzato digitandolo nel browser: dovresti essere indirizzato al tuo servizio.

  6. Ripeti i passaggi 3–4 per ogni servizio che stai ospitando.

Passo 5: SSL e HTTPS

Non avendo un Dominio non possiamo usare Let's Encrypt o simili per ottenere un certificato, ma dovremmo per forza usare un certificato
Self-Signed, questo triggererà un warning quando andremo sul nostro sito web, ma la connessione sarà comunque protetta HTTPS.

Per farlo potete usare qualsiasi strumento che preferiate io per comodità uso openssl e creo un certificato wildcars così da farne uno solo e non doverlo mai più toccare.

Il comando che uso è
openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -subj "/C=IT/ST=Some-State/L=City/O=MyCompany/OU=MyDept/CN=*.unraid.local/emailAddress=Random-Email" -addext "subjectAltName=DNS:*.unraid.local,DNS:unraid.local"

I parametri da cambiare sono:

"/C=IT/ST=Some-State/L=City/O=MyCompany/OU=MyDept/CN=*.unraid.local/emailAddress=Random-Email"

  • C = Stato in cui vi trovate, 2 lettere as es. IT.

  • ST = Stato/Provincia in cui vi trovate, ad es. Lombardia

  • L = Città in cui vi trovate, ad es. Milano

  • O = Organizzazione, questo da compilare se è un certificato aziendale se no lasciatelo generico

  • OU = Dipartimento, questo da compilare se è un certificato aziendale se no lasciatelo generico

  • CN = Nome principale del dominio, ad es. *.unraid.local

  • emailAddress = Indirizzo mail del certificato, ad es. [email protected]

Dovete poi sistemare anche
"subjectAltName=DNS:*.unraid.local,DNS:unraid.local"

Questo significa che il certificato sarà valido per:

  • unraid.local

  • qualsiasi sottodominio di unraid.local (grazie a *)

Questo genera un certificato *.unraid.local che sarà valido per qualsiasi sottodominio, potete ovviamente cambiarlo a vostro piacimento.
Una volta ottenuti i certificati dobbiamo caricarli su NPM

Procedura in NPM:

  1. Apri NPM e vai su SSL Certificates.

  2. Clicca su Add SSL Certificate e poi su Custom.

  3. Inserisci le informazioni nei campi:

    • Name = Un nome che ti ricordi che certificato è in quanto dopo non potremmo più vederlo

      • Esempio: *.unraid.local

    • Certificate Key = il key.pem che abbiamo ottenuto/generato

    • Certificate = il cert.pem che abbiamo ottenuto/generato

    • Intermediate Certificate = il certificato intermedio nel caso l'avessimo se no lasciare vuoto.

  4. Clicca su Save.

  5. Attendi che il sistema processi la richiesta.

    • Può richiedere qualche minuto, abbi pazienza.

  6. Il tuo certificato dovrebbe ora comparire nell’elenco.

  7. Vai su Hosts > Proxy Hosts.

  8. Seleziona il dominio associato e clicca sul menu a tre puntini, poi su Edit.

  9. Clicca su SSL in alto nella finestra di dialogo.

  10. Seleziona il certificato SSL creato per quel dominio dal menu a tendina.

  11. Ripeti i passaggi 1–11 per ogni sottodominio che stai usando, se hai utilizzato una wildcard assegna a tutti lo stesso certificato.

A questo punto, i tuoi servizi sono protetti da SSL e raggiungibili tramite HTTPS, una volta confermato la prima volta che il certificato Self-Signed è sicuro non ci uscirà più il warning :)

  • 3 weeks later...
  • Replies 81
  • Views 2.3k
  • Created
  • Last Reply

Top Posters In This Topic

Posted Images

Grazie per la guida utilissimo.

Mi metti in evidenza i campi da modificare nella stringa. Grazie

openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -subj "/C=IT/ST=Some-State/L=City/O=MyCompany/OU=MyDept/CN=*.unraid.local/emailAddress=Random-Email" -addext "subjectAltName=DNS:*.unraid.local,DNS:unraid.local"

  • Author
6 minutes ago, orazi.marco said:

Grazie per la guida utilissimo.

Mi metti in evidenza i campi da modificare nella stringa. Grazie

openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -subj "/C=IT/ST=Some-State/L=City/O=MyCompany/OU=MyDept/CN=*.unraid.local/emailAddress=Random-Email" -addext "subjectAltName=DNS:*.unraid.local,DNS:unraid.local"

Devi modificare questa parte

/C=IT/ST=Some-State/L=City/O=MyCompany/OU=MyDept/CN=*.unraid.local/emailAddress=Random-Email

  • C - Country – codice paese a due lettere IT per Italia

  • ST State / Province metti la tua regione

  • L Locality / City metti la tua città

  • O Organization – metti il tuo nome azienda o personale

  • OU Organizational Unit – reparto o divisione - opzionale

  • CN Common Name – nome principale del dominio *.unraid.local importantissimo, deve corrispondere al dominio del server

  • emailAddress Indirizzo email del certificato

Poi

addext "subjectAltName=DNS:*.unraid.local,DNS:unraid.local"

Significa che il certificato sarà valido per:

unraid.local campo DNS

E

qualsiasi sottodominio di unraid.local (grazie a *)

Le porte 80 e 443 vanno aperte?

E se ho capito bene per la VPN la porta 53 deve rimanere chiusa altrimenti pi hole rischia di diventare un risolutore aperto

Ho capito bene?

Esiste un comando da terminale per vedere quale porte sono aperte.Appena installato avevo impostato upnp perche non riesco a inoltrate le porte sul fritzbox.Le apro ma risultano chiuse impostanto upnp la porta che ho impostato su qbit con upnp si è aperta automaticamente .

Edited by orazi.marco

  • Author
6 minutes ago, orazi.marco said:

Le porte 80 e 443 vanno aperte?

E se ho capito bene per la VPN la porta 53 deve rimanere chiusa altrimenti pi hole rischia di diventare un risolutore aperto

Ho capito bene?

Le Porte 80 e 443 non vanno aperte se ti interessa che i tuoi servizi funzionino solo dalla tua rete domestica o con una VPN.
Per la 53 esatto hai capito bene.

Si esatto l importante che tailscale continui a funzionare da rete esterna

Esiste un comando per testare le porte in ascolto/aperte da terminal. Su google si trova qualcosa ma nn riesco a distinguere quali sono aperte.Vedo solo da fritzos quella aperta automaticamente da upnp

  • Author
1 minute ago, orazi.marco said:

Si esatto l importante che tailscale continui a funzionare da rete esterna

Esiste un comando per testare le porte in ascolto/aperte da terminal. Su google si trova qualcosa ma nn riesco a distinguere quali sono aperte.Vedo solo da fritzos quella aperta automaticamente da upnp

Puoi usare

netstat -ab
netstat -aon

ma ti dicono solo quali porte sono in ascolto, le porte aperte le vedi dal tuo router/modem nelle varie regole se non ne hai allora sono chiuse.

Scusa se ti assillo di domande un dubbio:

  1. Nella parte dei Global nameservers cliccate su Add nameserver -> Custom

    • In Nameserver mettete l'indirizzo ip di Pi Hole quello di Tailscale però, ad es. 100.99.99.99

    • Cliccate su Save

Che intendi indirizzo ip Pihole di tailscale?

Indirizzo che mi da Tailscale del dispositivo scelto

Corretto?

  • Author
4 minutes ago, orazi.marco said:

Scusa se ti assillo di domande un dubbio:

  1. Nella parte dei Global nameservers cliccate su Add nameserver -> Custom

    • In Nameserver mettete l'indirizzo ip di Pi Hole quello di Tailscale però, ad es. 100.99.99.99

    • Cliccate su Save

Che intendi indirizzo ip Pihole di tailscale?

Indirizzo che mi da Tailscale del dispositivo scelto

Corretto?

É l indirizzo ip che Tailscale assegna al container di Pihole quando installi Tailscale dentro Pihole

Per ricominciare? Malauguratamente penso che non ho spuntato SSH. Non riesco più ad accedere alla gui. Come posso rimediare?

  • Author
Just now, orazi.marco said:

Per ricominciare? Malauguratamente penso che non ho spuntato SSH. Non riesco più ad accedere alla gui. Come posso rimediare?

Dalla chiavetta vai in

/boot/config/ident.cfg

E hai le porte che puoi cambiare.

Se hai messo la 10080 questa viene bloccata dai browser ma la puoi sbloccare.

Se no attacchi un monitor al Nas e vai con la gui

Il monitor è acceso ma mi apre firefox dicendo thid address is restricted.Ora vado sulla chiavetta e ricambio le porte.Le porte ho messo 10080-10443

  • Author
Just now, orazi.marco said:

Il monitor è acceso ma mi apre firefox dicendo thid address is restricted.Ora vado sulla chiavetta e ricambio le porte.Le porte ho messo 10080-10443

É Firefox che la blocca, la puoi sbloccare con

https://support.mozilla.org/en-US/questions/1083282

Ok grazie. Riparto ho rimesso le porte std

Ma devo sempre sbloccare le porte su firefox oppure se metto SSH va liscio?

  • Author
2 minutes ago, orazi.marco said:

Ma devo sempre sbloccare le porte su firefox oppure se metto SSH va liscio?

Se vuoi usare la 10080 la devi sbloccare da Firefox, se ne metti un altra non serve.

Ssh sempre meglio abilitato che ti può salvare

Consigliami 2 porte che posso utilizzare non riesco a sbloccarle su firefox ne su chrome

  • Author
6 minutes ago, orazi.marco said:

Consigliami 2 porte che posso utilizzare non riesco a sbloccarle su firefox ne su chrome

Puoi usare quelle che preferisci

8080 e 8443 sono le più famose ma solitamente vengono usate da altri servizi.

Metti se no qualcosa su 8000 o 5000. Ti serve solo fino a che non hai impostato pihole, poi li fai il reverse proxy e lo chiami nas.unraid.local e usi sempre quello

Ok sbloccata la porta 10080 sono riuscito ad accedere.Ma ora al passo 3 quando metto l ip di pihole+porta del docker mi da connessione non riuscita

  • Author
Just now, orazi.marco said:

Ok sbloccata la porta 10080 sono riuscito ad accedere.Ma ora al passo 3 quando metto l ip di pihole+porta del docker mi da connessione non riuscita

Sei nella tua rete interna o sei tramite VPN?

Hai assegnato un ip libero?

Rete interna ip liberissimo

  • Author
Just now, orazi.marco said:

Rete interna ip liberissimo

Pi home si é avviato? Se si collegati con solo l'ip senza la porta, se no hai qualche errore nel log di pihole?

No neanche senza porta si avvia la connessione devo essere br0 giusto?

immagine.png

Edited by orazi.marco

  • Author
Just now, orazi.marco said:

No neanche senza porta si avvia la connessione devo essere br0 giusto?

immagine.png

Si corretto br0.

Se vai nel browser da il tuo PC e punti a http://192.168.178.72/admin non esce niente?

Nulla

immagine.png

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.