Coolify does not expand ${VAR} in label values. All loadbalancer port
labels must use hardcoded values:
- trilium: ${TRILIUM_HTTP_PORT} → 8080
- adguard: ${ADGUARD_HTTP_PORT} → 80
- authentik: ${AUTHENTIK_HTTP_PORT} → 9000
- gitea: ${GITEA_HTTP_PORT} → 3000
- wireguard: ${WG_UI_PORT} → 51821
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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
- Red Docker: Asegúrate de que la red
proxyexiste - Registro DNS: Configura el registro A para tu dominio AdGuard
- IP Fija: AdGuard necesita una IP fija en la red Docker
- 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:
docker network inspect proxy | grep Subnet
Luego, elige una IP fija dentro del rango (ej: 172.18.0.10).
Generar Certificados para DoT
# 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
- Ve a Stacks → Add stack
- Nombre:
adguard - Selecciona Repository o Git repository
- Configura:
- Repository URL:
<tu-repositorio> - Repository reference:
main - Compose path:
adguard/docker-compose.yml
- Repository URL:
- Carga el archivo de variables de entorno:
adguard/stack.env - Haz clic en Deploy the stack
Variables de Entorno
Edita el archivo stack.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:
- Puerto de escucha: Deja 3000 (se cambiará automáticamente a 80)
- Usuario y contraseña: Crea las credenciales de administrador
- Interfaces de red: Escucha en todas las interfaces
- 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=3000en elstack.envtemporalmente.
2. Configurar DNS-over-TLS (DoT)
- En el panel de AdGuard, ve a Settings → Encryption settings
- Habilita DNS-over-TLS
- Configura:
- Server name:
adguard.tudominio.com - Certificate:
/certs/adguard.crt - Private key:
/certs/adguard.key
- Server name:
- Puerto: 853
- Haz clic en Save
3. Configurar Listas de Filtros
AdGuard viene con listas por defecto, pero puedes añadir más:
- Ve a Filters → DNS blocklists
- Añade listas populares:
- Steven Black's Hosts: Bloquea malware y anuncios
- OISD: Lista curada de dominios maliciosos
- Hagezi: Listas agresivas de bloqueo
- 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:
- Ve a Settings → DNS settings
- 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 - En Bootstrap DNS servers (para resolver los DNS cifrados):
1.1.1.1 8.8.8.8
📱 Configurar Clientes
Android - DNS Privado (DoT)
- Ve a Ajustes → Conexiones → Más ajustes de conexión
- Selecciona DNS privado
- Elige Nombre del host del proveedor de DNS privado
- Introduce:
adguard.tudominio.com - Guarda
Todo el tráfico DNS de tu móvil pasará por AdGuard, incluso fuera de casa.
iOS - DNS-over-HTTPS
- Descarga un perfil de configuración DoH
- O usa apps como AdGuard o DNSCloak
Windows
Opción 1: Cambiar DNS del Sistema
- Panel de Control → Redes → Propiedades del adaptador
- IPv4 → Propiedades
- DNS preferido:
IP-de-tu-servidor - DNS alternativo:
8.8.8.8
Opción 2: DNS-over-HTTPS (Windows 11)
- Ajustes → Red e Internet → Ethernet/Wi-Fi
- Editar DNS
- Añade servidor DNS-over-HTTPS:
https://adguard.tudominio.com/dns-query
Linux
Edita /etc/resolv.conf:
nameserver IP-de-tu-servidor
nameserver 8.8.8.8
O con systemd-resolved:
sudo nano /etc/systemd/resolved.conf
[Resolve]
DNS=IP-de-tu-servidor
FallbackDNS=8.8.8.8
sudo systemctl restart systemd-resolved
Router
Configura AdGuard como DNS primario en tu router:
- Accede al panel de tu router
- Ve a configuración DHCP/DNS
- DNS primario:
IP-de-tu-servidor - 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:
- Ve a Filters → Custom filtering rules
- 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:
- Ve a Filters → DNS rewrites
- Añade entradas:
- Domain:
home.local - Answer:
192.168.1.10
- Domain:
Clientes Personalizados
Para aplicar configuraciones diferentes por cliente:
- Ve a Settings → Client settings
- Añade cliente por IP o ID
- 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
-
Verifica que AdGuard está corriendo:
docker ps | grep adguard -
Verifica los logs:
docker logs adguardhome -
Si el panel está en puerto 3000, cambia
ADGUARD_HTTP_PORT=3000temporalmente
DNS no resuelve dominios
-
Verifica que AdGuard está escuchando:
docker exec adguardhome netstat -tulpn -
Prueba DNS desde el servidor:
nslookup google.com 172.18.0.10 -
Verifica que los upstream DNS están configurados
DoT no funciona en Android
-
Verifica que el puerto 853 está abierto:
sudo netstat -tulpn | grep 853 -
Verifica los certificados en AdGuard:
- Settings → Encryption → Verifica que están cargados correctamente
-
Prueba DoT desde el servidor:
kdig -d @adguard.tudominio.com +tls google.com
Algunos sitios no cargan
- Ve a Query log en AdGuard
- Busca el dominio bloqueado
- Añádelo a la whitelist si es necesario
IP fija causa conflictos
Si la IP configurada está en uso:
- Elige otra IP del rango de la red
proxy - Actualiza
ADGUARD_IPV4enstack.env - Actualiza el stack
📚 Recursos Adicionales
🔒 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
# 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
- Haz backup de la configuración
- Actualiza en
stack.env:ADGUARD_IMAGE=adguard/adguardhome:latest - Actualiza el stack en Portainer
- 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.