Instalación de Pi-hole
Introducción
Fai un tempo falamos da instalación de SearXNG e Invidious.
No caso de SearXNG, deixei finalmente a configuración para
funcionar como dominio/path en lugar de subdominio.dominio.
Isto fíxeno así porque ía funcionar só en local e non quería
complicarme con outras configuracións. O problema chegou con
Invidious, xa que non aceptaba ese tipo de ruta.
Según eles hoxe en día os subdominios non teñen custo,
polo que non contemplan usar unha ruta. Que tamén lles suporía
grandes e compricados cambios no proxecto.
Nese momento, xa ca mosca detrás da orella, non lle din importancia.
No caso de Invidious, o que faría sería entrar directamente
polo dominio. Pero claro, se me pasaba iso con outro servizo,
dependería de andar usando distintos portos.
Pois ben, estaba preparando un artigo para instalar Nextcloud
e xa comezaron os inconvintes. De entrada pode funcionar cunha ruta,
pero non de entrada. Hai que modificar os arquivos de configuración,
que nalgúns casos non se xeran ata que xa entrache na web. Polo que,
neste caso tiven que parar Invidious para poder entrar e xerar esa
configuración inicial.
Con isto xa tiña o primer aviso de que me ía atopar con máis
servizos co mesmo problema. Así que me puxen a buscar unha solución.
Con isto cheguei a Pi-hole. É curioso, ata o de agora sempre pensei
que Pi-hole era un servizo para filtrar anuncios e pouco máis.
Pero nada máis lonxe, resulta que tamén ten a opción de funcionar
como DNS, permite analizar o tráfico de rede, permite facer listas
brancas e negras por dominios, crear grupos de usuarios para asignar
regras, etc. Pero tampouco hai que pensar que manter un DNS é tan compricado.
No caso de Pi-hole, o que me permite é configurar os dominios que preciso
mentres que aqueles que non estén cubertos serán buscados noutros DNS,
nos que queiramos, os do noso provedor, os de Cloudflare, etc.
Así que imos ver como instalar Pi-hole e imos ver algunhas das súas, características.
Instalando Pi-hole con Docker
Como xa ven sendo habitual volverei instalar o servizo con Docker.
Así no caso de ter que movelo a outro equipo ou o que fose,
será máis sinxelo.
Pi-hole ao igual que ocorre con Traefik ou SearXNG, non depende
de nada máis, polo que podo utilizar a versión latest e telo
sempre actualizado. Así que imos ver como queda o docker-compose.yaml
e o .env.
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
environment:
TZ: "Europe/Madrid"
WEBPASSWORD: $PI_HOLE_WEBPASSWORD
PIHOLE_DOMAIN: $PI_HOLE_DOMAIN_NAME
WEB_PORT: $PI_HOLE_HTTP_PORT
volumes:
- "$PIHOLE_PATH/etc-pihole:/etc/pihole"
- "$PIHOLE_PATH/etc-dnsmasq.d:/etc/dnsmasq.d"
ports:
- "${PI_HOLE_DNS_PORT:-53}:53/tcp"
- "${PI_HOLE_DNS_PORT:-53}:53/udp"
restart: unless-stopped
labels:
# http
- "traefik.enable=true"
- "traefik.http.routers.pihole.entrypoints=http"
- "traefik.http.routers.pihole.rule=Host(`${PI_HOLE_DOMAIN_NAME:-localhost}`)"
- "traefik.http.services.pihole.loadbalancer.server.port=${PI_HOLE_HTTP_PORT:-8081}"
networks:
- proxy
networks:
proxy:
name: proxy
external: true
A primeira cousa que pode chamar a atención é a falta da versión.
Como comentei no artigo anterior hoxe en día xa non é necesaria.
Despois son as configuracións habituais. Definimos o servizo de
Pi-hole a partir da imaxe latest e dámoslle o nome ao contenedor.
Nas variables de entorno definimos a zona horaria, o contrasinal
de administrador, o dominio e o porto da web de administración.
Nos volumes dámoslle as rutas que imos usar en local e a equivalencia.
Nos portos é onde ven a parte interesante. Ata o de agora,
correndo docker en modo rootless, usei portos maiores de 1024.
Xa que ao estar en rootless non admite por defecto o uso de
portos máis baixos, así que no caso das webs redirixía ao
8080 ou o 4043 según fose HTTP ou HTTPS. Pero se quero usar
a función de DNS preciso do porto 53. Así que tiven que facer
unha pequena configuración para poder usar estes portos.
Nada compricado, realmente dúas ordes de terminal.
As seguintes:
sudo setcap cap_net_bind_service=ep $(which rootlesskit)
systemctl --user restart docker
Agora xa podo usar portos como o 53, 80 ou 443.
Tamén podemos ver que noutros contenedores non teño
os portos expostos, pero neste caso Traefik non vai direccionar
o porto 53, se non que os equipos alcanzarano directamente.
Sen embargo no caso da web, si que quero que vaia a través de
Traefik, que é o que temos configurado a continuación.
Activamos Traefik, indicamos que usaremos o protocolo HTTP e
indicamos tanto o dominio como o porto.
Xa para rematar dicímoslle a Pi-hole que vai estar na rede proxy que é a do Traefik, e que non ten que creala, que xa estará configurada.
Este sería o .env
PIHOLE_PATH=../../pihole
PI_HOLE_DOMAIN_NAME=localhost
PI_HOLE_WEBPASSWORD=password_to_change
PI_HOLE_HTTP_PORT=81
PI_HOLE_DNS_PORT=53
PI_HOLE_HTTPS_PORT=443
Como podemos ver non ten mota leria.
Pi-hole: administración
Se non puxemos ningún contrasinal no ficheiro de configuración,
quedará en branco por defecto, se houbésemos configurado algún,
será o que usaremos para entrar.
Unha vez dentro o primeiro que veremos será un taboleiro con
gráficas con información de bloqueos e outras cousas.
Entre os menús que aparecen á esquerda, temos algúns interesantes:
- Query log: neste menú veremos as peticións que pasaron polo servizo e daranos a opción de mandar esa petición á lista negra.
- Groups: ao parecer pódense crear grupos de usuarios, para asignar permisos a grupos e non ter que ir de usuario en usuario.
- Clients: temos tamén a opción de agregar clientes, seleccionando a súa MAC nun despregable.
- Domains: para engadir dominios directamente a unha lista, branca ou negra, según desexemos.
- Disable blocking: podemos deixar a porta aberta, indefinidamente, por un tempo predeterminado ou personalizado.
- Local DNS: esta é a opción que me interesaba, aquí podo definir a que IP apunta unha dirección. Así podo configurar, por exemplo searxng.local para que apunte á IP da Raspberry. E xa despois o Traefik se encarga do resto.
Quedan máis opcións, pero estas son as que vin de entrada, según leve algún tempo a utilizar Pi-hole, se vexo algo que valga a pena lembrar, farei outra entrada.
Esta sería a pantalla para engadir os dominios locais:
Agora por exemplo, que era o punto principal para usar Pi-hole, podo acceder ao meu buscador como http://searxng.raspberry.local. Isto ademais ábreme a porta para poder engadir o buscador aos motores de busca en Firefox. Xa que cando estaba coma http://raspberry.local:8081/searxng, isto non era posible.
Conclusión
Este é un artigo curto, xa que é un servizo doado de instalar. Unha vez feito, pódese por nos equipos que utilicen este DNS, simplemente engadindo a dirección da Raspberry como DNS, ou directamente polo no router, para que todo-los equipos da rede o collan directamente.
O único inconvinte que atopei, é que no caso de estar conectado a unha VPN que teña os seus propios DNS, obteríamos un erro por non alcanzar o noso DNS. No meu caso como traballo en local, non me preocupa, xa que se estou na casa podo prescindir da VPN e cando estou fora, de todas todas, non podería consultala. Xa que non quero expor a Raspberry ao exterior. Se chega o día, no que me decida a ter estes servizos dispoñibles en calquer parte, fareino cun VPS para ter máis dispoñibilidade.
Así que parece ser unha aplicación doada de usar, que tamén evita que teñamos que ter filtros en cada equipo, reducindo este procesamento en cada un deles, xa que o tráfico será filtrado todo con Pi-hole.
Como xa dixen recén instalei Pi-hole, así que é posible que no futuro engada algún novo artigo cas cousas que vaia descubrindo, que me poidan ser útiles. Por exemplo, parece que se lle poden engadir listas de filtros, a maiores da que xa trae por defecto.
Artigos Relacionados:
- Actualizar Invidious despois de que me dese erro bastante tempo
- Instalación de News en Nextcloud
- Instalación de GPodder Sync en Nextcloud
- Actualizar Nextcloud en Docker
- Configuración de Calibre web auto aloxado con Traefik
- Configuración de Jellyfin auto aloxado con Traefik
- Copias de seguridade con Borgbackup
- Controlar la temperatura del equipo con bash y telegram
- Instalación de Nextcloud
- Configuración de Invidious auto aloxado con Traefik
- Configuración de SearXNG auto aloxado con Traefik
- Cómo instalar Traefik con docker
- Instalando docker en modo rootless en Debian
- Instalando Jekyll con Docker
- Instalar Fedora con BTRFS, cifrado e Snapshots activos
- Ciberseguridad de tú a tú
- Copias de seguridade con Borgbackup
- Crear un usuario con permisos restrinxidos para backups
- error: gpg failed to sign the data