En esta guía voy a explicar cómo instalar Pi-hole dockerizado en una Raspberry Pi con DietPi y Docker Compose.
NOTA: es probable que estas instrucciones sean válidas para otras distribuciones Linux.
Internet está llena de guías como ésta. En mi caso, para mantener la guía lo más sencilla posible asumo que:
- Ya tenemos la Raspberry Pi con DietPi instalado y funcional.
- La Raspberry Pi tiene IP fija.
- La Raspberry Pi NO es accesible desde Internet. Solo accederemos a ella desde nuestra red local.
- Solo vamos a acceder al entorno gráfico de Pi-hole vía HTTP. Nada de HTTPS.
- No vamos a usar el servidor DHCP de Pi-hole.
Lo primero de todo es crear y acceder a una carpeta para el docker-compose.yaml:
dietpi@miraspberrypi:~$ mkdir -p ~/.docker-compose/pihole
dietpi@miraspberrypi:~$ cd ~/.docker-compose/pihole
dietpi@miraspberrypi:~/.docker-compose/pihole$
Ahí creamos el fichero docker-compose.yaml con el siguiente contenido:
version: "3"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "8080:80/tcp"
environment:
TZ: 'Europe/Madrid'
WEBPASSWORD: 'contraseña'
volumes:
- '/home/dietpi/.docker/pihole/etc-pihole/:/etc/pihole/'
- '/home/dietpi/.docker/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
restart: unless-stopped
Del fichero anterior ajustar:
- Cambiar 8080 por el puerto que queramos usar para conectarnos al entorno gráfico de Pi-hole. O dejarlo así si nos gusta ese 🙂
- Cambiar ‘Europe/Madrid’ por tu zona horaria.
- Cambiar ‘contraseña’ por la contraseña que usaremos para conectarnos al entorno gráfico de Pi-hole.
Una vez nuestro fichero esté listo ya solo tenemos que levantar el contenedor:
dietpi@miraspberrypi:~/.docker-compose/pihole$ docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating network "pihole_default" with the default driver
Pulling pihole (pihole/pihole:latest)...
latest: Pulling from pihole/pihole
9159b6bb9431: Pull complete
9b9b713af3af: Pull complete
8be7a40021ce: Pull complete
55c2b086451c: Pull complete
eb774076c2a1: Pull complete
2bafdf4926be: Pull complete
f09a3462cef2: Pull complete
33df9ce656ad: Pull complete
Digest: sha256:6a633b5b2b4a9f343aa01101c89ebba36aa90003df0e379d2e702e0372ed9712
Status: Downloaded newer image for pihole/pihole:latest
Creating pihole ... done
dietpi@miraspberrypi:~/.docker-compose/pihole$
¡Y listo! Ya tenemos nuestro Pi-hole corriendo:
dietpi@miraspberrypi:~/.docker-compose/pihole$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73244e306142 pihole/pihole:latest "/s6-init" 14 minutes ago Up 14 minutes (healthy) 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, 67/udp, 443/tcp, 0.0.0.0:8080->80/tcp pihole
dietpi@miraspberrypi:~/.docker-compose/pihole$
Ya solo nos quedaría configurar nuestro router para que el use la Raspberry Pi como servidor DNS.
Si queremos acceder al entorno gráfico podemos hacerlo a través de la URL: