Instalar Pi Hole en docker
Para proceder con la instalación de Pi Hole en docker, primero debe instalar docker en el sistema operativo.
A continuación cree el directorio donde desea alojar el contenido, por ejemplo
mkdir -p /docker/pihole
cd /docker/pihole
Genere un fichero con el nombre docker-compose.yml
e introduzca el siguiente contenido.
version: "3"
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
# Limit resources used
mem_limit: 512m
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
- "8001:80/tcp"
environment:
TZ: 'Europe/Madrid'
WEBPASSWORD: 'LsJXMbG'
# Volumes store your data between container upgrades
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
# Para poder capturar los logs con Filebeat o Elastic Agent mapeamos tambien la carpeta VAR-LOG
- './var-log-pihole:/var/log/pihole'
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
dns:
- 127.0.0.1
- 9.9.9.11
cap_add:
- NET_ADMIN # Recommended but not required (DHCP needs NET_ADMIN)
restart: unless-stopped
Revise la configuración de los puertos, en este ejemplo el puerto 8001 será el puerto accesible de gestión web.
Configure el Timezone (TZ
) con la localización del pais donde va a instalar el sistema PiHole o el Timezone que le sea mas cómodo.
El parámetro WEBPASSWORD es la contraseña de la web de gestión. Modifiquela por una diferente y mayor longitud.
En DNS introduzca los servidor DNS a los que quiere reenviar las peticiones en caso de que el propio sistema PiHole no las conozca.
Finalmente, ejecute el proceso de instalación del sistema docker con el siguiente comando
cd /root/pihole
docker-compose up -d
Podrá ver como se descargan las imágenes del sistema docker necesarias para poner en funcionamiento el contenedor de Pi Hole.
Una vez haya finalizado y aparezca el mensaje Creating pihole ... done
ya podrá acceder a la web de gestión usando un navegador y accediendo a
http://ip_del_equipo_con_docker:8001/admin/
Si al intentar ejecutar el PiHole da el siguiente error
Creating pihole ...
Creating pihole ... error
ERROR: for pihole Cannot start service pihole: driver failed programming external connectivity on endpoint pihole (1748f2f183ed864c94512606f0ffe3b7b006e8d95007677999e1929f1bb47d17): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use
ERROR: for pihole Cannot start service pihole: driver failed programming external connectivity on endpoint pihole (1748f2f183ed864c94512606f0ffe3b7b006e8d95007677999e1929f1bb47d17): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use
ERROR: Encountered errors while bringing up the project.
Seguramente este ejecutandolo en un sistema Ubuntu (o sus variantes), por lo que debe desactivar en el fichero /etc/systemd/resolved.conf
el parámetro DNSStubListener. La linea viene comentada y su configuracón por defecto es activado (yes), por lo que debe descomentar la linea y cambiar el valor a no
[Resolve]
# Some examples of DNS servers which may be used for DNS= and FallbackDNS=:
# Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
# Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
# Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
#CacheFromLocalhost=no
DNSStubListener=no
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no
A continuación, reinicie el servicio para que tenga los nuevos cambios
service systemd-resolved restart
Y pruebe de nuevo con el comando
docker-compose up -d