# AdGuard Home - Bloqueador de Anuncios DNS AdGuard Home es un servidor DNS que bloquea anuncios y rastreadores a nivel de red. ## 📋 Descripción Este stack despliega AdGuard Home con: - Bloqueo de anuncios y rastreadores - DNS-over-TLS (DoT) para privacidad - Panel web protegido con Authentik - Integración con Traefik para HTTPS - Configuración persistente ## 🚀 Despliegue ### Prerequisitos 1. **Red Docker**: Asegúrate de que la red `proxy` existe 2. **Registro DNS**: Configura el registro A para tu dominio AdGuard 3. **IP Fija**: AdGuard necesita una IP fija en la red Docker 4. **Certificados DoT**: Necesitarás certificados SSL para DoT ### Configurar IP Fija en la Red Proxy Primero, verifica el rango de IPs de la red `proxy`: ```bash docker network inspect proxy | grep Subnet ``` Luego, elige una IP fija dentro del rango (ej: `172.18.0.10`). ### Generar Certificados para DoT ```bash # Crear directorio para certificados sudo mkdir -p /opt/adguard/certs # Copiar certificados de Let's Encrypt (después de que Traefik los genere) sudo cp /opt/traefik/letsencrypt/certificates/adguard.tudominio.com.crt /opt/adguard/certs/adguard.crt sudo cp /opt/traefik/letsencrypt/certificates/adguard.tudominio.com.key /opt/adguard/certs/adguard.key # O genera certificados autofirmados para pruebas openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /opt/adguard/certs/adguard.key \ -out /opt/adguard/certs/adguard.crt \ -subj "/CN=adguard.tudominio.com" ``` ### Desde Portainer 1. Ve a **Stacks** → **Add stack** 2. Nombre: `adguard` 3. Selecciona **Repository** o **Git repository** 4. Configura: - Repository URL: `` - Repository reference: `main` - Compose path: `adguard/docker-compose.yml` 5. Carga el archivo de variables de entorno: `adguard/stack.env` 6. Haz clic en **Deploy the stack** ### Variables de Entorno Edita el archivo `stack.env`: ```env # Imagen ADGUARD_IMAGE=adguard/adguardhome:latest # Dominio ADGUARD_DOMAIN=adguard.tudominio.com # IP fija en la red proxy ADGUARD_IPV4=172.18.0.10 # Puerto DoT (DNS-over-TLS) ADGUARD_DOT_PORT=853 # Puerto HTTP del panel (interno) ADGUARD_HTTP_PORT=80 # Rutas ADGUARD_WORK_PATH=/opt/adguard/work ADGUARD_CONF_PATH=/opt/adguard/conf ADGUARD_CERT_CRT_PATH=/opt/adguard/certs/adguard.crt ADGUARD_CERT_KEY_PATH=/opt/adguard/certs/adguard.key # Traefik TRAEFIK_DOCKER_NETWORK=proxy TRAEFIK_ENTRYPOINT_SECURE=websecure TRAEFIK_CERTRESOLVER=letsencrypt TRAEFIK_AUTH_MIDDLEWARE=ths-authentik@docker ``` ## ⚙️ Configuración Post-Instalación ### 1. Configuración Inicial La primera vez que accedas a `https://adguard.tudominio.com`, se iniciará el asistente: 1. **Puerto de escucha**: Deja 3000 (se cambiará automáticamente a 80) 2. **Usuario y contraseña**: Crea las credenciales de administrador 3. **Interfaces de red**: Escucha en todas las interfaces 4. **DNS upstream**: Configura servidores DNS (ej: `1.1.1.1`, `8.8.8.8`) > **Nota**: Si el panel escucha en puerto 3000, actualiza `ADGUARD_HTTP_PORT=3000` en el `stack.env` temporalmente. ### 2. Configurar DNS-over-TLS (DoT) 1. En el panel de AdGuard, ve a **Settings** → **Encryption settings** 2. Habilita **DNS-over-TLS** 3. Configura: - **Server name**: `adguard.tudominio.com` - **Certificate**: `/certs/adguard.crt` - **Private key**: `/certs/adguard.key` 4. **Puerto**: 853 5. Haz clic en **Save** ### 3. Configurar Listas de Filtros AdGuard viene con listas por defecto, pero puedes añadir más: 1. Ve a **Filters** → **DNS blocklists** 2. Añade listas populares: - **Steven Black's Hosts**: Bloquea malware y anuncios - **OISD**: Lista curada de dominios maliciosos - **Hagezi**: Listas agresivas de bloqueo 3. Haz clic en **Add blocklist** y pega la URL Ejemplos: ``` https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts https://big.oisd.nl/ https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/domains/pro.txt ``` ### 4. Configurar DNS Upstream Para mejor privacidad, usa DNS cifrados: 1. Ve a **Settings** → **DNS settings** 2. En **Upstream DNS servers**, añade: ``` https://dns.cloudflare.com/dns-query https://dns.google/dns-query tls://1.1.1.1 tls://8.8.8.8 ``` 3. En **Bootstrap DNS servers** (para resolver los DNS cifrados): ``` 1.1.1.1 8.8.8.8 ``` ## 📱 Configurar Clientes ### Android - DNS Privado (DoT) 1. Ve a **Ajustes** → **Conexiones** → **Más ajustes de conexión** 2. Selecciona **DNS privado** 3. Elige **Nombre del host del proveedor de DNS privado** 4. Introduce: `adguard.tudominio.com` 5. Guarda > Todo el tráfico DNS de tu móvil pasará por AdGuard, incluso fuera de casa. ### iOS - DNS-over-HTTPS 1. Descarga un perfil de configuración DoH 2. O usa apps como **AdGuard** o **DNSCloak** ### Windows #### Opción 1: Cambiar DNS del Sistema 1. Panel de Control → Redes → Propiedades del adaptador 2. IPv4 → Propiedades 3. DNS preferido: `IP-de-tu-servidor` 4. DNS alternativo: `8.8.8.8` #### Opción 2: DNS-over-HTTPS (Windows 11) 1. Ajustes → Red e Internet → Ethernet/Wi-Fi 2. Editar DNS 3. Añade servidor DNS-over-HTTPS: `https://adguard.tudominio.com/dns-query` ### Linux Edita `/etc/resolv.conf`: ```bash nameserver IP-de-tu-servidor nameserver 8.8.8.8 ``` O con systemd-resolved: ```bash sudo nano /etc/systemd/resolved.conf ``` ```ini [Resolve] DNS=IP-de-tu-servidor FallbackDNS=8.8.8.8 ``` ```bash sudo systemctl restart systemd-resolved ``` ### Router Configura AdGuard como DNS primario en tu router: 1. Accede al panel de tu router 2. Ve a configuración DHCP/DNS 3. DNS primario: `IP-de-tu-servidor` 4. DNS secundario: `8.8.8.8` > **Ventaja**: Todos los dispositivos de tu red usarán AdGuard automáticamente. ## 🔧 Configuración Avanzada ### Listas Blancas (Whitelist) Para permitir dominios bloqueados por error: 1. Ve a **Filters** → **Custom filtering rules** 2. Añade reglas: ``` @@||ejemplo-permitido.com^ @@||*.ejemplo.com^ ``` ### Bloquear Dominios Específicos ``` ||dominio-bloqueado.com^ ||ads.ejemplo.com^ ``` ### Reglas de Reescritura DNS Para resolver dominios internos: 1. Ve a **Filters** → **DNS rewrites** 2. Añade entradas: - **Domain**: `home.local` - **Answer**: `192.168.1.10` ### Clientes Personalizados Para aplicar configuraciones diferentes por cliente: 1. Ve a **Settings** → **Client settings** 2. Añade cliente por IP o ID 3. Configura filtros específicos, upstream DNS, etc. ### Estadísticas y Logs - **Dashboard**: Ve estadísticas de consultas, clientes, dominios bloqueados - **Query log**: Revisa todas las consultas DNS en tiempo real - **Filtros por cliente**: Ve qué dispositivos hacen más consultas ## 🛠️ Troubleshooting ### No puedo acceder al panel web 1. Verifica que AdGuard está corriendo: ```bash docker ps | grep adguard ``` 2. Verifica los logs: ```bash docker logs adguardhome ``` 3. Si el panel está en puerto 3000, cambia `ADGUARD_HTTP_PORT=3000` temporalmente ### DNS no resuelve dominios 1. Verifica que AdGuard está escuchando: ```bash docker exec adguardhome netstat -tulpn ``` 2. Prueba DNS desde el servidor: ```bash nslookup google.com 172.18.0.10 ``` 3. Verifica que los upstream DNS están configurados ### DoT no funciona en Android 1. Verifica que el puerto 853 está abierto: ```bash sudo netstat -tulpn | grep 853 ``` 2. Verifica los certificados en AdGuard: - Settings → Encryption → Verifica que están cargados correctamente 3. Prueba DoT desde el servidor: ```bash kdig -d @adguard.tudominio.com +tls google.com ``` ### Algunos sitios no cargan 1. Ve a **Query log** en AdGuard 2. Busca el dominio bloqueado 3. Añádelo a la whitelist si es necesario ### IP fija causa conflictos Si la IP configurada está en uso: 1. Elige otra IP del rango de la red `proxy` 2. Actualiza `ADGUARD_IPV4` en `stack.env` 3. Actualiza el stack ## 📚 Recursos Adicionales - [Documentación oficial de AdGuard Home](https://github.com/AdguardTeam/AdGuardHome/wiki) - [Listas de filtros](https://filterlists.com/) - [Comparativa con Pi-hole](https://github.com/AdguardTeam/AdGuardHome#comparison) ## 🔒 Seguridad - **Panel web**: Siempre protegido con Authentik (SSO) - **DoT**: Cifra las consultas DNS entre cliente y servidor - **Upstream DNS**: Usa DNS cifrados (DoH/DoT) para privacidad total - **Logs**: Revisa regularmente los logs para detectar anomalías - **Actualizaciones**: Mantén AdGuard actualizado ## 💾 Backups ```bash # Backup de configuración sudo tar -czf adguard-backup-$(date +%Y%m%d).tar.gz /opt/adguard/ # Restaurar sudo tar -xzf adguard-backup-YYYYMMDD.tar.gz -C / ``` ## 🔄 Actualizaciones 1. Haz backup de la configuración 2. Actualiza en `stack.env`: ```env ADGUARD_IMAGE=adguard/adguardhome:latest ``` 3. Actualiza el stack en Portainer 4. Verifica los logs y el panel web ## 📊 Estadísticas AdGuard ofrece estadísticas detalladas: - **Consultas bloqueadas**: Porcentaje y cantidad - **Top clientes**: Dispositivos que más consultas hacen - **Top dominios**: Sitios más visitados - **Top dominios bloqueados**: Anuncios y rastreadores más frecuentes - **Upstream DNS**: Rendimiento de los servidores DNS configurados Accede a estas estadísticas en el Dashboard de AdGuard.