Pi-hole dockerizado

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:

http://IP_RASPBERRY:8080/admin

Deja un comentario