¿Usando la Atalaya? Consulte la nota sobre Watchtower al final de este archivo Léame.
A partir de 2023.01
, si tiene alguna modificación para lighttpd a través de un archivo external.conf
, este archivo ahora debe asignarse a /etc/lighttpd/conf-enabled/whateverfile.conf
.
Debido a un problema conocido con Docker y libseccomp <2.5, es posible que tenga problemas al ejecutar 2022.04
y versiones posteriores en sistemas host con una versión anterior de libseccomp2
(como Debian/Raspbian buster o Ubuntu 20.04, y tal vez CentOS 7).
La primera recomendación es actualizar su sistema operativo host, que incluirá una versión más actualizada (y fija) de libseccomp
.
Si no puede hacer esto en absoluto, algunos usuarios han informado que han logrado actualizar libseccomp2
a través de backports en Debian o similares a través de actualizaciones en Ubuntu. Puede probar esta solución bajo su propia responsabilidad (tenga en cuenta que también puede necesitar la última versión docker.io
(más detalles aquí).
Algunos usuarios han informado problemas con el uso del indicador --privileged
en 2022.04
y versiones posteriores. TL;DR, no use ese modo y sea explícito con las mayúsculas permitidas (si es necesario)
# 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
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports :
- " 53:53/tcp "
- " 53:53/udp "
- " 67:67/udp " # Only required if you are using Pi-hole as your DHCP server
- " 80:80/tcp "
environment :
TZ : ' America/Chicago '
# WEBPASSWORD: 'set a secure password here or it will be random'
# Volumes store your data between container upgrades
volumes :
- ' ./etc-pihole:/etc/pihole '
- ' ./etc-dnsmasq.d:/etc/dnsmasq.d '
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add :
- NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
restart : unless-stopped
docker compose up -d
para compilar e iniciar pi-hole (la sintaxis puede ser docker-compose
en sistemas más antiguos)bridge
predeterminada de Docker. (Esto también se puede lograr configurando la variable de entorno DNSMASQ_LISTENING
en all
)Aquí hay un script de ejecución de Docker equivalente.
Un proyecto de Docker para crear un contenedor x86 y ARM liviano con funcionalidad Pi-hole.
Este contenedor utiliza dos puertos populares, el puerto 53 y el puerto 80, por lo que puede entrar en conflicto con los puertos de aplicaciones existentes . Si no tiene otros servicios o contenedores Docker que utilicen el puerto 53/80 (si los tiene, siga leyendo a continuación para ver un ejemplo de proxy inverso), los argumentos mínimos necesarios para ejecutar este contenedor se encuentran en el script docker_run.sh.
Si está utilizando una distribución basada en Red Hat con una política SELinux Enforcing, agregue :z
para alinearlo con volúmenes como este:
-v "$(pwd)/etc-pihole:/etc/pihole:z"
-v "$(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d:z"
Se recomiendan volúmenes para conservar datos en recreaciones de contenedores para actualizar imágenes. Es posible que las variables de búsqueda de IP no funcionen para todos; revise sus valores y codifique IP e IPv6 si es necesario.
Puede personalizar dónde almacenar datos persistentes configurando la variable de entorno PIHOLE_BASE
al invocar docker_run.sh
(por ejemplo, PIHOLE_BASE=/opt/pihole-storage ./docker_run.sh
). Si PIHOLE_BASE
no está configurado, los archivos se almacenan en su directorio actual cuando invoca el script.
Actualizaciones automáticas de la lista de anuncios : desde la versión 3.0+, cron
está integrado en el contenedor y capturará las versiones más recientes de sus listas y eliminará sus registros. Configure su variable de entorno TZ para asegurarse de que la rotación del registro de medianoche se sincronice con la medianoche de su zona horaria.
Hay varias formas diferentes de ejecutar DHCP desde su contenedor Docker Pi-hole, pero es un poco más avanzado y no hay una solución única para todos. Los múltiples modos de red de DHCP y Docker se tratan en detalle en nuestro sitio de documentos: Docker DHCP y modos de red.
Hay otras variables de entorno si desea personalizar varias cosas dentro del contenedor de la ventana acoplable:
Variable | Por defecto | Valor | Descripción |
---|---|---|---|
TZ | UTC | <Timezone> | Configure su zona horaria para asegurarse de que los registros giren a la medianoche local en lugar de a la medianoche UTC. |
WEBPASSWORD | aleatorio | <Admin password> | http://pi.hole/contraseña de administrador. Ejecute docker logs pihole | grep random para encontrar tu pase aleatorio. |
FTLCONF_LOCAL_IPV4 | desarmado | <Host's IP> | Configure la IP LAN de su servidor, utilizada por los modos de bloqueo web. |
Variable | Por defecto | Valor | Descripción |
---|---|---|---|
PIHOLE_DNS_ | 8.8.8.8;8.8.4.4 | IP delimitadas por ; | Servidores DNS ascendentes a los que Pi-hole reenvía consultas, separados por un punto y coma (admite puertos no estándar con #[port number] ), por ejemplo, 127.0.0.1#5053;8.8.8.8;8.8.4.4 (admite nombres de servicios Docker y enlaces en lugar de IP), por ejemplo, upstream0;upstream1 donde upstream0 y upstream1 son los nombres de servicios o enlaces a los servicios de Docker.Nota: La existencia de esta variable de entorno supone que es la única gestión del DNS ascendente. El DNS ascendente agregado a través de la interfaz web se sobrescribirá al reiniciar/recrear el contenedor |
DNSSEC | false | <"true"|"false"> | Habilitar soporte DNSSEC |
DNS_BOGUS_PRIV | true | <"true"|"false"> | Nunca reenvíe búsquedas inversas para rangos privados |
DNS_FQDN_REQUIRED | true | <"true"|"false"> | Nunca reenvíe archivos que no sean FQDN |
REV_SERVER | false | <"true"|"false"> | Habilite el reenvío condicional de DNS para la resolución de nombres de dispositivos |
REV_SERVER_DOMAIN | desarmado | Dominio de red | Si el reenvío condicional está habilitado, configure el dominio del enrutador de la red local |
REV_SERVER_TARGET | desarmado | IP del enrutador | Si el reenvío condicional está habilitado, configure la IP del enrutador de la red local |
REV_SERVER_CIDR | desarmado | DNS inverso | Si el reenvío condicional está habilitado, configure la zona DNS inversa (por ejemplo, 192.168.0.0/24 ). |
DHCP_ACTIVE | false | <"true"|"false"> | Habilite el servidor DHCP. Las concesiones de DHCP estático se pueden configurar con un /etc/dnsmasq.d/04-pihole-static-dhcp.conf personalizado |
DHCP_START | desarmado | <Start IP> | Inicio del rango de direcciones IP a entregar por el servidor DHCP (obligatorio si el servidor DHCP está habilitado). |
DHCP_END | desarmado | <End IP> | Fin del rango de direcciones IP a entregar por el servidor DHCP (obligatorio si el servidor DHCP está habilitado). |
DHCP_ROUTER | desarmado | <Router's IP> | Dirección IP del enrutador (puerta de enlace) enviada por el servidor DHCP (obligatorio si el servidor DHCP está habilitado). |
DHCP_LEASETIME | 24 | <hours> | Tiempo de concesión de DHCP en horas. |
PIHOLE_DOMAIN | lan | <domain> | Nombre de dominio enviado por el servidor DHCP. |
DHCP_IPv6 | false | <"true"|"false"> | Habilite la compatibilidad con IPv6 del servidor DHCP (SLAAC + RA). |
DHCP_rapid_commit | false | <"true"|"false"> | Habilite la confirmación rápida de DHCPv4 (asignación rápida de direcciones). |
VIRTUAL_HOST | ${HOSTNAME} | <Custom Hostname> | Cuál es el 'host virtual' de su servidor web, acceder al administrador a través de este nombre de host/IP le permite realizar cambios en la lista blanca/lista negra además de la dirección predeterminada 'http://pi.hole/admin/' |
IPv6 | true | <"true"|"false"> | Para compatibilidad no raid, elimina toda la configuración de IPv6 de los servicios DNS/Web cuando sea falso. |
TEMPERATUREUNIT | c | <c|k|f> | Establezca la unidad de temperatura preferida en c : Celsius, k : Kelvin o f unidades Fahrenheit. |
WEBUIBOXEDLAYOUT | boxed | <boxed|traditional> | Utilice un diseño en cuadro (útil cuando se trabaja en pantallas grandes) |
QUERY_LOGGING | true | <"true"|"false"> | Habilite el registro de consultas o no. |
WEBTHEME | default-light | <"default-dark"|"default-darker"|"default-light"|"default-auto"|"high-contrast"|"high-contrast-dark"|"lcars"> | Tema de interfaz de usuario a utilizar. |
WEBPASSWORD_FILE | desarmado | <Docker secret path> | Establezca una contraseña de administrador utilizando los secretos de Docker. Si se establece WEBPASSWORD , se ignora WEBPASSWORD_FILE . Si WEBPASSWORD está vacío y WEBPASSWORD_FILE está configurado en una ruta de archivo legible válida, entonces WEBPASSWORD se configurará en el contenido de WEBPASSWORD_FILE . |
Variable | Por defecto | Valor | Descripción |
---|---|---|---|
INTERFACE | desarmado | <NIC> | El valor predeterminado funciona bien con nuestros comandos básicos de ejecución de ventana acoplable de ejemplo. Si está intentando utilizar DHCP con el modo --net host , es posible que deba personalizar esto o DNSMASQ_LISTENING. |
DNSMASQ_LISTENING | desarmado | <local|all|single> | escucha local en todas las subredes locales, all permite escuchar en subredes de origen de Internet además de escuchas locales single solo en la interfaz especificada. |
WEB_PORT | desarmado | <PORT> | Esto interrumpirá la funcionalidad de 'página web bloqueada' de Pi-hole; sin embargo, puede ayudar a configuraciones avanzadas como aquellas que ejecutan synology o el argumento --net=host docker. Esta guía explica cómo restaurar la funcionalidad bloqueada de una página web utilizando una regla DNAT de enrutador Linux: método de instalación alternativo de Synology |
WEB_BIND_ADDR | desarmado | <IP> | Dirección de enlace de Lighttpd. Si no se configura, lighttpd se vinculará a todas las interfaces, excepto cuando se ejecute en modo de red de host, donde usará FTLCONF_LOCAL_IPV4 en su lugar. |
SKIPGRAVITYONBOOT | desarmado | <unset|1> | Utilice esta opción para omitir la actualización de la base de datos de Gravity al iniciar el contenedor. De forma predeterminada, esta variable de entorno no está configurada, por lo que Gravity Database se actualizará cuando se inicie el contenedor. Establecer esta variable de entorno en 1 (o cualquier cosa) hará que Gravity Database no se actualice cuando se inicie el contenedor. |
CORS_HOSTS | desarmado | <FQDNs delimited by ,> | Lista de dominios/subdominios en los que se permite CORS. No se admiten comodines. Por ejemplo: CORS_HOSTS: domain.com,home.domain.com,www.domain.com . |
CUSTOM_CACHE_SIZE | 10000 | Número | Establezca el tamaño de caché para dnsmasq. Útil para aumentar el tamaño de caché predeterminado o establecerlo en 0. Tenga en cuenta que cuando DNSSEC es "verdadero", esta configuración se ignora. |
FTL_CMD | no-daemon | no-daemon -- <dnsmasq option> | Personalice las opciones con las que comienza dnsmasq. por ejemplo, no-daemon -- --dns-forward-max 300 para aumentar el máximo. Número de consultas DNS simultáneas en configuraciones de carga alta. |
FTLCONF_[SETTING] | desarmado | Según documentación | Personalice pihole-FTL.conf con las configuraciones descritas en la página de configuración de FTLDNS. Por ejemplo, para personalizar LOCAL_IPV4, asegúrese de tener configurada la variable de entorno FTLCONF_LOCAL_IPV4 . |
Variable | Por defecto | Valor | Descripción |
---|---|---|---|
DNSMASQ_USER | desarmado | <pihole|root> | Permite cambiar el usuario con el que se ejecuta FTLDNS. Valor predeterminado: pihole , algunos sistemas como Synology NAS pueden requerir que cambie esto a root (consulte el n.º 963) |
PIHOLE_UID | 999 | Número | Anula la identificación de usuario predeterminada de la imagen para que coincida con una identificación de usuario del host IMPORTANTE : ¡la identificación no debe estar ya en uso dentro del contenedor! |
PIHOLE_GID | 999 | Número | Anula la identificación del grupo pihole predeterminado de la imagen para que coincida con la identificación del grupo de host IMPORTANTE : ¡la identificación no debe estar ya en uso dentro del contenedor! |
WEB_UID | 33 | Número | Anula la identificación de usuario www-data predeterminada de la imagen para que coincida con una identificación de usuario del host IMPORTANTE : ¡la identificación no debe estar ya en uso dentro del contenedor! (Asegúrese de que sea diferente a PIHOLE_UID si también lo está usando) |
WEB_GID | 33 | Número | Anula la identificación del grupo de datos www predeterminada de la imagen para que coincida con la identificación del grupo de host IMPORTANTE : ¡la identificación no debe estar ya en uso dentro del contenedor! (Asegúrese de que sea diferente a PIHOLE_GID si también lo está usando) |
WEBLOGS_STDOUT | 0 | 0|1 | 0 registros a archivos definidos, 1 acceso redireccionado y registros de errores a la salida estándar |
Si bien es posible que aún funcionen, es probable que se eliminen en una versión futura. Cuando corresponda, se indican nombres de variables alternativos. Revise la tabla anterior para conocer el uso de variables alternativas.
Var. de entorno Docker. | Descripción | Reemplazado por |
---|---|---|
CONDITIONAL_FORWARDING | Habilite el reenvío condicional de DNS para la resolución de nombres de dispositivos | REV_SERVER |
CONDITIONAL_FORWARDING_IP | Si el reenvío condicional está habilitado, configure la IP del enrutador de la red local | REV_SERVER_TARGET |
CONDITIONAL_FORWARDING_DOMAIN | Si el reenvío condicional está habilitado, configure el dominio del enrutador de la red local | REV_SERVER_DOMAIN |
CONDITIONAL_FORWARDING_REVERSE | Si el reenvío condicional está habilitado, configure el DNS inverso del enrutador de la red local (por ejemplo, 0.168.192.in-addr.arpa ). | REV_SERVER_CIDR |
DNS1 | Proveedor de DNS ascendente principal, el predeterminado es Google DNS | PIHOLE_DNS_ |
DNS2 | Proveedor de DNS ascendente secundario, el valor predeterminado es Google DNS, no , si solo se debe usar un DNS | PIHOLE_DNS_ |
ServerIP | Configure la IP LAN de su servidor, utilizada por los modos de bloqueo web y la dirección de enlace lighttpd | FTLCONF_LOCAL_IPV4 |
ServerIPv6 | Si tiene una red v6 configurada en la LAN IPv6 de su servidor para bloquear completamente los anuncios IPv6 | FTLCONF_LOCAL_IPV6 |
FTLCONF_REPLY_ADDR4 | Configure la IP LAN de su servidor, utilizada por los modos de bloqueo web y la dirección de enlace lighttpd | FTLCONF_LOCAL_IPV4 |
FTLCONF_REPLY_ADDR6 | Si tiene una red v6 configurada en la LAN IPv6 de su servidor para bloquear completamente los anuncios IPv6 | FTLCONF_LOCAL_IPV6 |
Para usar estas variables de entorno en el formato de ejecución de Docker, estílelas como: -e DNS1=1.1.1.1
Aquí hay un resumen de otros argumentos para su ejecución de docker-compose/docker.
Argumentos de Docker | Descripción |
---|---|
-p <port>:<port> Recomendado | Puertos para exponer (53, 80, 67), los puertos mínimos necesarios para los servicios HTTP y DNS de Pi-holes |
--restart=unless-stopped Recomendado | (Re)inicie automáticamente su Pi-hole al arrancar o en caso de falla |
-v $(pwd)/etc-pihole:/etc/pihole Recomendado | Los volúmenes para sus configuraciones de Pi-hole ayudan a conservar los cambios en las actualizaciones de imágenes de la ventana acoplable |
-v $(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d Recomendado | Los volúmenes para sus configuraciones de dnsmasq ayudan a conservar los cambios en las actualizaciones de imágenes de Docker |
--net=host Opcional | Alternativa a -p <port>:<port> (no se puede usar al mismo tiempo que -p) si no ejecuta ninguna otra aplicación web. DHCP funciona mejor con --net=host; de lo contrario, su enrutador debe admitir la configuración de dhcp-relay. |
--cap-add=NET_ADMIN Recomendado | Capacidad comúnmente agregada para DHCP; consulte la Nota sobre capacidades a continuación para conocer otras capacidades. |
--dns=127.0.0.1 Opcional | Establece la configuración de resolución de su contenedor en localhost para que pueda resolver nombres de host DHCP desde DNSMasq de Pi-hole, puede corregir errores de resolución al reiniciar el contenedor. |
--dns=1.1.1.1 Opcional | Establece un servidor de respaldo de su elección en caso de que DNSMasq tenga problemas para iniciar |
--env-file .env Opcional | Archivo para almacenar variables de entorno para Docker reemplazando la configuración -e key=value . Aquí por conveniencia |
docker exec -it pihole_container_name pihole -a -p
- luego ingresa tu contraseña en el mensaje-p 8080:80
si está utilizando el modo de bloqueo predeterminado. Si está utilizando el modo de bloqueo de IP heredado, no debe reasignar este puerto.DEFAULT_HOST
en nginxproxy/nginx-proxy y debe configurar el VIRTUAL_HOST
correspondiente para el contenedor de Pi-hole. Lea el archivo Léame de nginxproxy/nginx-proxy para obtener más información si tiene problemas.bridge
de modo de red predeterminado de Docker aísla el contenedor de la red del host. Esta es una configuración más segura, pero requiere configurar la opción DNS Pi-hole para el comportamiento de escucha de la interfaz en "Escuchar en todas las interfaces, permitir todos los orígenes". Las versiones modernas de Ubuntu (17.10+) y Fedora (33+) incluyen systemd-resolved
, que está configurado de forma predeterminada para implementar un solucionador de código auxiliar DNS de almacenamiento en caché. Esto evitará que pi-hole escuche en el puerto 53. El solucionador de código auxiliar debe desactivarse con: sudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf
Esto no cambiará la configuración del servidor de nombres, que apunta al solucionador auxiliar evitando así la resolución de DNS. Cambie el enlace simbólico /etc/resolv.conf
para que apunte a /run/systemd/resolve/resolv.conf
, que se actualiza automáticamente para seguir el netplan
del sistema: sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf'
Después de realizar estos cambios, debe reiniciar systemd-resolved usando systemctl restart systemd-resolved
Una vez instalado pi-hole, querrás configurar tus clientes para que lo utilicen (ver aquí). Si usó el enlace simbólico anterior, su host de Docker usará lo que sea servido por DHCP o cualquier configuración estática que haya configurado. Si desea configurar explícitamente los servidores de nombres de su host Docker, puede editar los netplan que se encuentran en /etc/netplan
y luego ejecutar sudo netplan apply
. Ejemplo de plan de red:
network :
ethernets :
ens160 :
dhcp4 : true
dhcp4-overrides :
use-dns : false
nameservers :
addresses : [127.0.0.1]
version : 2
Tenga en cuenta que también es posible desactivar systemd-resolved
por completo. Sin embargo, esto puede causar problemas con la resolución de nombres en VPN (consulte el informe de error). También deshabilita la funcionalidad de netplan ya que systemd-resolved se usa como renderizador predeterminado (consulte man netplan
). Si elige deshabilitar el servicio, deberá configurar manualmente los servidores de nombres, por ejemplo creando un nuevo /etc/resolv.conf
.
Los usuarios de versiones anteriores de Ubuntu (alrededor de 17.04) deberán desactivar dnsmasq.
@ Rikj000 ha elaborado una guía para ayudar a los usuarios a instalar Pi-hole en Dokku
Las etiquetas principales de la ventana acoplable se explican en la siguiente tabla. Haga clic aquí para ver la lista completa de etiquetas. Consulte las notas de la versión de GitHub para ver la versión específica de Pi-hole Core, Web y FTL incluida en la versión.
Las versiones basadas en fechas (incluidas las versiones incrementadas de "Parche") no se relacionan con ningún tipo de número de versión semántica, sino que se usa una fecha para diferenciar entre la versión nueva y la versión anterior, nada más. Las notas de la versión siempre contendrán detalles completos de los cambios en el contenedor, incluidos los cambios en los componentes principales de Pi-hole.
etiqueta | descripción |
---|---|
latest | Siempre la última versión |
2022.04.0 | Lanzamiento basado en fecha |
2022.04.1 | Segundo lanzamiento en un mes determinado |
dev | Similar a latest , pero para la rama de desarrollo (impulsada ocasionalmente) |
*beta | Lanzamientos beta anticipados de las próximas versiones: aquí hay dragones |
nightly | Como dev pero impulsado todas las noches y extraído de las últimas ramas development de los componentes principales de Pi-hole (Pi-hole, web, FTL) |
Las capacidades de personalización estándar de Pi-hole se aplican a esta ventana acoplable, pero con giros de la ventana acoplable, como el uso de montajes de volumen de la ventana acoplable para asignar configuraciones de archivos almacenados en el host sobre los valores predeterminados del contenedor. Sin embargo, se debe evitar montar estos archivos de configuración como de solo lectura. Los volúmenes también son importantes para conservar la configuración en caso de que haya eliminado el contenedor Pi-hole, que es un patrón típico de actualización de Docker.
No intente actualizar ( pihole -up
) ni reconfigurar ( pihole -r
). Se publicarán nuevas imágenes para actualizaciones; la actualización reemplazando su contenedor antiguo con una imagen nueva y actualizada es la "forma acoplable". Los contenedores Docker de larga duración no son el estilo Docker, ya que su objetivo es ser portátiles y reproducibles. ¿Por qué no recrearlos con frecuencia? Sólo para demostrar que puedes.
docker pull pihole/pihole
docker rm -f pihole
docker run <args> pihole/pihole
(siendo <args>
sus volúmenes de ejecución y vars de entorno preferidos)¿Por qué es bueno este estilo de actualización? Un par de razones: todos parten de la misma imagen base que ha sido probada para saber si funciona. No es necesario preocuparse por actualizar de A a B, de B a C o de A a C al implementar actualizaciones, reduce la complejidad y simplemente permite un "nuevo comienzo" cada vez, preservando las personalizaciones con los volúmenes. Básicamente, estoy fomentando los principios del servidor Phoenix para sus contenedores.
Para reconfigurar Pi-hole, necesitará usar variables de entorno de contenedor existentes o, si no hay una variable para lo que necesita, use la interfaz de usuario web o los comandos CLI.
Aquí hay algunas páginas wiki relevantes de la documentación de Pi-hole. La interfaz web o las herramientas de línea de comandos se pueden utilizar para implementar cambios en pihole.
Instalamos todas las utilidades de pihole para que los comandos integrados de pihole funcionen a través de docker exec <container> <command>
así:
docker exec pihole_container_name pihole updateGravity
docker exec pihole_container_name pihole -w spclient.wg.spotify.com
docker exec pihole_container_name pihole -wild example.com
El servidor web y el servicio DNS dentro del contenedor se pueden personalizar si es necesario. Cualquier archivo de configuración que monte en volumen en /etc/dnsmasq.d/
será cargado por dnsmasq cuando el contenedor se inicie o reinicie o si necesita modificar la configuración de Pi-hole, que se encuentra en /etc/dnsmasq.d/01-pihole.conf
. Los scripts de inicio de la ventana acoplable ejecutan una prueba de configuración antes de comenzar, por lo que le informarán sobre cualquier error en el registro de la ventana acoplable.
De manera similar, para el servidor web, puede personalizar las configuraciones en /etc/lighttpd
Siempre que el servicio de su sistema Docker se inicie automáticamente al arrancar y ejecute su contenedor con --restart=unless-stopped
su contenedor siempre debe iniciarse al arrancar y reiniciarse en caso de falla. Si prefiere que su contenedor acoplable se ejecute como un servicio systemd, agregue el archivo pihole.service a "/etc/systemd/system"; personalice el nombre de su contenedor y elimine --restart=unless-stopped
de la ejecución de la ventana acoplable. Luego, después de haber creado inicialmente el contenedor de la ventana acoplable usando el comando docker run anterior, puede controlarlo con "systemctl start pihole" o "systemctl stop pihole" (en lugar de docker start
/ docker stop
). También puede habilitarlo para que se inicie automáticamente al arrancar con "systemctl enable pihole" (a diferencia de --restart=unless-stopped
y asegurarse de que el servicio Docker se inicie automáticamente al arrancar).
NOTA: Después de la ejecución inicial, es posible que necesite detener manualmente el contenedor acoplable con "docker stop pihole" antes de que systemctl pueda comenzar a controlar el contenedor.
DNSMasq/FTLDNS espera tener disponibles las siguientes capacidades:
CAP_NET_BIND_SERVICE
: permite el enlace FTLDNS a sockets TCP/UDP por debajo de 1024 (específicamente el servicio DNS en el puerto 53)CAP_NET_RAW
: utiliza sockets sin formato y de paquetes (necesarios para manejar solicitudes DHCPv6 y verificar que una IP no esté en uso antes de arrendarla)CAP_NET_ADMIN
: modifica las tablas de enrutamiento y otras operaciones relacionadas con la red (en particular, inserta una entrada en la tabla vecina para responder solicitudes DHCP utilizando paquetes de unidifusión)CAP_SYS_NICE
: FTL se establece como un proceso importante para obtener más tiempo de procesamiento si este último se está agotando.CAP_CHOWN
: necesitamos poder cambiar la propiedad de los archivos de registro y las bases de datos en caso de que FTL se inicie como un usuario diferente al de pihole
Esta imagen otorga automáticamente esas capacidades, si están disponibles, al proceso FTLDNS, incluso cuando se ejecuta como no root.
De forma predeterminada, Docker no incluye la capacidad NET_ADMIN
para contenedores sin privilegios y se recomienda agregarla explícitamente al contenedor usando --cap-add=NET_ADMIN
.
Sin embargo, si los anuncios de enrutadores DHCP e IPv6 no están en uso, debería ser seguro omitirlos. Para los más paranoicos, incluso debería ser posible eliminar explícitamente la capacidad NET_RAW
para evitar que FTLDNS la obtenga automáticamente.
Hemos notado que mucha gente usa Watchtower para mantener actualizados sus contenedores Pi-hole. Por la misma razón que no proporcionamos una función de actualización automática en una instalación básica, no debería tener un sistema que actualice automáticamente su contenedor Pi-hole. Especialmente desatendido. Por mucho que intentemos asegurarnos de que nada salga mal, a veces las cosas salen mal y es necesario reservar tiempo para extraer y actualizar manualmente a la versión del contenedor que desea ejecutar. El proceso de actualización debe ser similar a lo siguiente:
Pi-hole es una parte integral de su red, no permita que se caiga debido a una actualización desatendida en medio de la noche.
Informe problemas en el proyecto GitHub cuando sospeche que algo está relacionado con Docker. Las preguntas generales sobre Pi-hole o Docker se responden mejor en nuestros foros de usuarios.