
AdGuard Home è un DNS sinkhole self-hosted che blocca pubblicità, tracker e domini malevoli a livello di rete, prima ancora che raggiungano i tuoi dispositivi.
A differenza di un semplice ad-blocker installato nel browser, funziona come server DNS per l’intera rete domestica o aziendale: ogni dispositivo che lo interroga (computer, smartphone, smart TV, console, IoT) beneficia automaticamente della protezione, senza bisogno di installare estensioni o app su ciascun device.
Questa guida spiega come installare e configurare AdGuard Home su Ubuntu Server 26.04 utilizzando Docker Compose, un approccio che semplifica notevolmente la gestione del servizio: l’applicazione gira in un container isolato, con configurazione e dati persistiti su volumi dedicati, aggiornamenti puliti tramite semplice pull dell’immagine e rollback rapido in caso di problemi, senza dover intervenire manualmente sul sistema operativo host.
Nella pratica vedremo come preparare l’ambiente Docker sul server, definire il file docker-compose.yml con le porte e i volumi necessari, avviare il container e completare la configurazione iniziale tramite l’interfaccia web di AdGuard Home impostando il DNS upstream, le liste di blocco (blocklist) e puntando i dispositivi della rete verso il nuovo server DNS.
Al termine avrai un servizio DNS filtrante, centralizzato e facilmente mantenibile, pronto per essere esteso in un secondo momento con funzionalità più avanzate come il filtraggio DNS-over-HTTPS/TLS o regole personalizzate.
PREREQUISITI
- Un’istanza Ubuntu Server 26.04 aggiornata
- Docker Engine e plugin Docker Compose installati
- Accesso root o utente con permessi sudo
- Porta 53 (DNS) libera sull’host
INSTALLAZIONE DI DOCKER
Se Docker non è presente installarlo con i seguenti comandi:
|
0
1
2
|
curl -fsSL https://get.docker.com | sudo shsudo usermod -aG docker $USER
newgrp docker
|
CREAZIONE STRUTTURA DI CARTELLE
Creare la struttura delle cartelle con i comandi:
|
0
1
2
|
sudo mkdir -p /opt/adguardhome/{work,conf}
cd /opt/adguardhome
|
Di seguito le cartelle che verranno create:
work/: conterrà dati, log e query log
conf/: conterrà il file di configurazione AdGuardHome.yaml
LIBERARE LA PORTA 53 DA SYSTEMD-RESOLVED
Su Ubuntu systemd-resolved occupa di default la porta 53 in ascolto su 127.0.0.53, in conflitto con AdGuard Home.
Va disabilitato lo stub listener editando il file resolved.conf con il comando:
|
0 |
sudo nano /etc/systemd/resolved.conf
|
Modificare o aggiungere le seguenti righe:
|
0
1
2
|
[Resolve]
DNS=1.1.1.1
DNSStubListener=no
|
Salvare e chiudere il file di configurazione
Poi eseguire i comandi:
|
0
1
2
|
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
|
Verificare che la porta sia libera con il comando:
|
0 |
sudo ss -tulpn | grep :53
|
Non deve restituire nulla legato a systemd-resolved.
CREAZIONE DEL FILE DOCKER-COMPOSE.YML
Creare il file docker-compose.yml con il comando:
|
0 |
nano /opt/adguardhome/docker-compose.yml
|
All’interno del file inserire il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
services:
adguardhome:
container_name: adguardhome
image: adguard/adguardhome:latest
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "3000:3000/tcp" # setup wizard iniziale
- "80:80/tcp" # dashboard dopo il setup
- "443:443/tcp" # opzionale, HTTPS/DoH
- "853:853/tcp" # opzionale, DNS-over-TLS
- "3053:3053/udp" # opzionale, DNS-over-QUIC
volumes:
- /opt/adguardhome/work:/opt/adguardhome/work
- /opt/adguardhome/conf:/opt/adguardhome/conf
|
Salvare e chiudere il file di configurazione
AVVIO DEL CONTAINER
Avviare il container con i seguenti comandi:
|
0
1
2
|
cd /opt/adguardhome
docker compose up -d
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
|
[+] up 10/10
✔ Image adguard/adguardhome:latest Pulled
✔ Network adguardhome_default Created
✔ Container adguardhome Started
|
Eseguire un controllo rapido con il comando:
|
0 |
docker compose logs -f adguardhome
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
|
adguardhome | 2026/08/25 13:58:07.191706 [info] starting adguard home version="AdGuard Home, version v0.107.79"
adguardhome | 2026/08/25 13:58:07.192729 [info] this is the first time adguard home has been launched
adguardhome | 2026/08/25 13:58:07.192783 [info] checking if adguard home has the necessary permissions
adguardhome | 2026/08/25 13:58:07.193080 [info] adguard home can bind to port 53
adguardhome | 2026/08/25 13:58:07.194789 [info] tls_manager: using default ciphers
adguardhome | 2026/08/25 13:58:07.195988 [info] webapi: initializing
adguardhome | 2026/08/25 13:58:07.196037 [info] webapi: This is the first launch of AdGuard Home, redirecting everything to /install.html
adguardhome | 2026/08/25 13:58:07.196105 [info] permcheck: warning: found unexpected permissions type=directory path=/opt/adguardhome/work perm=0755 want=0700
adguardhome | 2026/08/25 13:58:07.196153 [info] webapi: AdGuard Home is available at the following addresses:
adguardhome | 2026/08/25 13:58:07.196295 [info] webapi: serving url=http://127.0.0.1:3000
adguardhome | 2026/08/25 13:58:07.196327 [info] webapi: serving url=http://[::1]:3000
adguardhome | 2026/08/25 13:58:07.196339 [info] webapi: serving url=http://172.19.0.2:3000
adguardhome | 2026/08/25 13:58:07.196381 [info] starting plain server server=plain addr=0.0.0.0:3000
|
SETUP WIZARD INIZIALE
Aprire il browser su:
http://<IP-DEL-SERVER>:3000
Cliccare Inizia
Il wizard chiede:
Interfaccia web: porta consigliata 80 (o altra se già in uso, es. se hai Nginx Proxy Manager su quella macchina)
Interfaccia DNS: selezionare l’IP dell’host porta 53
Cliccare Prossimo
Inserire l’utenza amministrativa con relativa password quindi cliccare Prossimo
Affinché AdGuard Home inizi a funzionare, è necessario configurare i dispositivi per utilizzarlo.
ATTENZIONE: Questa configurazione copre automaticamente tutti i dispositivi collegati al router di casa, non è necessario configurarli manualmente.
Accedi alle preferenze del tuo router. Di solito, puoi farlo dal tuo browser tramite un URL, come http://192.168.0.1/ o http://192.168.1.1/.
Potrebbe esserti chiesto di inserire una password. Se non dovessi ricordarla, puoi reimpostare la password premendo un pulsante presente sullo stesso router, ma tieni presente che scegliendo questa procedura, probabilmente perderai l’intera configurazione del router.
Se il tuo router necessitasse di un’app per configurarlo, installala sul tuo telefono o PC e utilizzala per accedere alle impostazioni del router.
Trova le impostazioni DHCP / DNS. Cerca le lettere DNS accanto a un campo che consente due o tre serie di numeri, ciascuno suddiviso in quattro gruppi di 1-3 cifre.
Inserisci qui gli indirizzi del tuo server AdGuard Home.
Su alcuni tipi di router, non è possibile configurare un server DNS personalizzato. In tal caso, configurare AdGuard Home come un server DHCP potrebbe aiutare.
In alternativa, dovresti leggere il manuale di istruzioni per capire come personalizzare i server DNS sul tuo specifico modello di router.
Cliccare Prossimo
Al termine del wizard cliccare su Apri pannello di controllo
Verrà aperto il link http://<IP-DEL-SERVER>
Inserire le credenziali create in precedenza e cliccare Accedi
Se è andato tutto a buon fine dovremmo visualizzare la Dashboard di AdGuard
CONFIGURAZIONE DEI CLIENT NELLA RETE
Per far usare AdGuard Home come DNS a tutti i dispositivi, la via più efficiente è impostarlo come DNS server sul router/gateway (DHCP), così ogni client lo riceve automaticamente.
In alternativa può essere configurato manualmente client per client.
CONFIGURAZIONE FILTRI DNS E UPSTREAM
Dal pannello di controllo le sezioni consigliate:
Filters → DNS blocklists: aggiungi liste come AdGuard DNS filter, EasyList, OISD
Settings → DNS settings → Upstream DNS servers: consigliato usare provider con DoH/DoT, es. Cloudflare (https://cloudflare-dns.com/dns-query) o Quad9
Settings → DNS settings → Parental control (opzionale)
Query Log: utile per verificare cosa viene bloccato e diagnosticare falsi positivi
REVERSE PROXY HTTPS (OPZIONALE)
Se il pannello deve essere raggiungibile dall’esterno o con certificato valido, meglio metterlo dietro un reverse proxy (es. Nginx Proxy Manager) piuttosto che esporre direttamente la porta 80/443 del container:
adguard.tuodominio.tld → http://<IP-host>:80
Ricorda di non esporre pubblicamente la porta DNS (53) se non necessario.
AGGIORNAMENTO DEL CONTAINER
Eseguire l’aggiornamento del container con i seguenti comandi:
|
0
1
2
|
cd /opt/adguardhome
docker compose pull
docker compose up -d
|
PRO E CONTRO
Pro
- Blocco pubblicità e tracker a livello di rete, per tutti i dispositivi
- Supporto nativo a DoH/DoT/DoQ per DNS cifrato
- Pannello web chiaro, query log dettagliato
- Leggero, gira bene anche su hardware modesto (es. Raspberry Pi)
- Parental control e regole personalizzate integrate
Contro
- Richiede di liberare la porta 53, che su Ubuntu significa disabilitare lo stub di systemd-resolved
- Punto singolo di fallimento per la risoluzione DNS: se il container si ferma, senza DNS di fallback configurato sul router la rete perde la risoluzione nomi
- Non ha clustering/HA nativo: per ridondanza vera serve una seconda istanza e configurazione manuale sui client/DHCP
CONCLUSIONI
Con questa configurazione hai un servizio DNS filtrante centralizzato, gestibile e aggiornabile in due comandi.
Per un homelab, il passo successivo naturale è mettere in piedi una seconda istanza su un altro host per avere un DNS di backup, così da evitare che un riavvio o un aggiornamento del container lasci la rete senza risoluzione DNS.

0 Commenti