Indice

Esporre AdGuard Home (DoH/DoT/DoQ) tramite Nginx Proxy Manager

Questa guida descrive passo-passo come esporre DNS-over-HTTPS (DoH), DNS-over-TLS (DoT) e DNS-over-QUIC (DoQ) di AdGuard Home all'esterno della tua rete usando Nginx Proxy Manager (NPM). È pensata per essere pubblicata su una wiki tecnica e usata come riferimento per chi vuole ottenere lo stesso risultato.


Sommario


Obiettivo

Permettere l'uso del tuo server DNS (AdGuard Home) da qualsiasi posto esterno alla rete locale, usando DoH/DoT/DoQ cifrati, senza aprire la porta HTTPS standard 443 sul router. Al posto di 443 useremo una porta esterna casuale (es. 24677) che sarà inoltrata verso Nginx Proxy Manager, il quale inoltra al servizio AdGuard che ascolta su porte non standard (es. HTTPS su 444, DoT su 853, DoQ su 853).


Panoramica architetturale

Internet
  |
  |----> Router ---> :24677 TCP (port forwarding)
                                      |
                                      v
                             Nginx Proxy Manager 24677 -> 444
                                      |
                     Proxy_pass --> AdGuard Home (IP interno: e.g. 192.168.1.10)
                                      |                (HTTPS:444, DoT:853)
                                 LAN devices

Nota: tutte le richieste DoH esterne risulteranno provenienti dall'IP pubblico del server che esegue Nginx Proxy Manager (e non dall'IP del client). Questo è normale quando si usa un reverse-proxy.


Prerequisiti


1) Configurare AdGuard Home

  1. Apri l'interfaccia web di AdGuard Home (es. http://192.168.1.10:3000).
  2. Vai in Settings → Encryption settings.
  3. Abilita DNS-over-HTTPS, DNS-over-TLS e DNS-over-QUIC.
  4. Per Server name usa il tuo sottodominio.tuodominio (necessario per SNI e validazione cert).
  5. Imposta le porte locali come preferisci:
    • DoH / HTTPS: 444 (esempio non standard così non confligge con GUI/router)
    • DoT: 853
    • DoQ: 853
  6. Salva e verifica che AdGuard stia ascoltando su queste porte e risponda localmente.

2) Installare e configurare Nginx Proxy Manager (NPM)

  1. Installa NPM (docker-compose o package). Segui la documentazione ufficiale.
  2. Crea un nuovo Proxy Host in NPM con i seguenti parametri di esempio:
    • Domain Names: sottodominio.tuodominio
    • Scheme: https
    • Forward Hostname / IP: indirizzo IP interno della macchina con AdGuard (es. 192.168.1.10)
    • Forward Port: 444 (la porta HTTPS configurata in AdGuard)
    • Cache Assets: NO
    • Websockets Support: NO
    • Block Common Exploits: YES
  3. SSL → scegli di usare Let's Encrypt e genera il certificato per sottodominio.tuodominio. Abilita le seguenti opzioni:
    • Force SSL
    • HSTS Enabled
    • HTTP/2 Support
    • HSTS subdomains (opzionale, usare con attenzione)
  4. Nella sezione Advanced incolla la tua configurazione Nginx custom (vedi snippet sotto). Salvare.

Importante: NPM ascolterà sulle porte 80/443 interne del suo container; puoi esporre NPM su una porta pubblica non standard (es. 24677) effettuando il port-forwarding dal router verso la porta 80/443 del container o usando una mappatura Docker differente.


3) Port forwarding sul router


4) Client: come configurare DoH/DoT/DoQ usando la porta esterna

Snippet Nginx da usare nella casella "Advanced" di NPM

Nel blocco Advanced del Proxy Host in Nginx Proxy Manager incolla lo snippet Nginx personalizzato. Se vuoi, nella wiki lascia un link o allega il file di configurazione Nginx completo che userai\

location /dns-query {
    proxy_pass https://ipserverdns:444/dns-query;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    client_max_body_size 10M;
    proxy_connect_timeout 5s;
    proxy_read_timeout 10s;

    # Se usi certificato self-signed su AdGuard, attiva questa riga:
    # proxy_ssl_verify off;
}

Nota: controllare if in Nginx è delicato; testalo bene. In alternativa, usa map o allow/deny su base IP quando applicabile.


Vantaggi

Svantaggi


Conclusione

Questa procedura è un buon compromesso se vuoi fornire DoH pubblico senza usare la porta 443 e senza mettere il servizio DNS direttamente esposto. Tuttavia, valuta i trade-off di privacy e sicurezza e considera l'uso di VPN o autenticazione aggiuntiva per casi sensibili.


Scritto in collaborazione con correttore automatico e llm per fixare la sintassi sulla wiki (: