Files
Portainer/adguard/README.md
Eduardo David Paredes Vara f29208cfa2 middelware fix
2026-02-17 08:57:58 +00:00

368 lines
9.2 KiB
Markdown

# 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: `<tu-repositorio>`
- 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.