Usando a Torre de Vigia? Veja a Nota sobre a Torre de Vigia no final deste leia-me
A partir de 2023.01
, se você tiver alguma modificação no lighttpd por meio de um arquivo external.conf
, esse arquivo agora precisará ser mapeado para /etc/lighttpd/conf-enabled/whateverfile.conf
Devido a um problema conhecido com Docker e libseccomp <2.5, você pode encontrar problemas executando 2022.04
e posteriores em sistemas host com uma versão mais antiga de libseccomp2
(como Debian/Raspbian buster ou Ubuntu 20.04, e talvez CentOS 7).
A primeira recomendação é atualizar o sistema operacional host, que incluirá uma versão mais atualizada (e corrigida) do libseccomp
.
Se você absolutamente não puder fazer isso, alguns usuários relataram sucesso na atualização libseccomp2
via backports no Debian, ou similar através de atualizações no Ubuntu. Você pode tentar esta solução alternativa por sua própria conta e risco (observe que você também pode descobrir que precisa do docker.io
mais recente (mais detalhes aqui)
Alguns usuários relataram problemas com o uso do sinalizador --privileged
em 2022.04
e superior. DR, não use esse modo e seja explícito com os limites permitidos (se necessário)
# 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 construir e iniciar o pi-hole (a sintaxe pode ser docker-compose
em sistemas mais antigos)bridge
padrão do Docker. (Isso também pode ser conseguido definindo a variável de ambiente DNSMASQ_LISTENING
como all
)Aqui está um script de execução do docker equivalente.
Um projeto Docker para criar um contêiner x86 e ARM leve com funcionalidade Pi-hole.
Este contêiner usa duas portas populares, a porta 53 e a porta 80, portanto pode entrar em conflito com as portas de aplicativos existentes . Se você não tiver outros serviços ou contêineres docker usando a porta 53/80 (se tiver, continue lendo abaixo para obter um exemplo de proxy reverso), os argumentos mínimos necessários para executar este contêiner estão no script docker_run.sh
Se você estiver usando uma distribuição baseada em Red Hat com uma política SELinux Enforcing, adicione :z
para alinhar com volumes como este:
-v "$(pwd)/etc-pihole:/etc/pihole:z"
-v "$(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d:z"
Os volumes são recomendados para persistir dados em recriações de contêineres para atualização de imagens. As variáveis de pesquisa de IP podem não funcionar para todos. Revise seus valores e codifique IP e IPv6, se necessário.
Você pode personalizar onde armazenar dados persistentes definindo a variável de ambiente PIHOLE_BASE
ao invocar docker_run.sh
(por exemplo, PIHOLE_BASE=/opt/pihole-storage ./docker_run.sh
). Se PIHOLE_BASE
não estiver definido, os arquivos serão armazenados em seu diretório atual quando você invocar o script.
Atualizações automáticas da lista de anúncios - desde a versão 3.0+, cron
é incorporado ao contêiner e irá capturar as versões mais recentes de suas listas e liberar seus logs. Defina sua variável de ambiente TZ para garantir que a rotação do log da meia-noite seja sincronizada com a meia-noite do seu fuso horário.
Existem várias maneiras diferentes de executar o DHCP a partir do contêiner Docker Pi-hole, mas é um pouco mais avançado e um tamanho não serve para todos. Os vários modos de rede do DHCP e do Docker são abordados detalhadamente em nosso site de documentos: Docker DHCP e modos de rede
Existem outras variáveis de ambiente se você quiser personalizar várias coisas dentro do contêiner docker:
Variável | Padrão | Valor | Descrição |
---|---|---|---|
TZ | UTC | <Timezone> | Defina seu fuso horário para garantir que os logs girem à meia-noite local em vez de à meia-noite UTC. |
WEBPASSWORD | aleatório | <Admin password> | http://pi.hole/admin senha. Execute docker logs pihole | grep random para encontrar seu passe aleatório. |
FTLCONF_LOCAL_IPV4 | desarmar | <Host's IP> | Defina o IP da LAN do seu servidor, usado pelos modos de bloqueio da web. |
Variável | Padrão | Valor | Descrição |
---|---|---|---|
PIHOLE_DNS_ | 8.8.8.8;8.8.4.4 | IPs delimitados por ; | Servidor(es) DNS upstream para Pi-hole encaminhar consultas, separados por ponto e vírgula (suporta portas não padrão com #[port number] ) por exemplo, 127.0.0.1#5053;8.8.8.8;8.8.4.4 (suporta nomes e links de serviços Docker em vez de IPs), por exemplo, upstream0;upstream1 onde upstream0 e upstream1 são os nomes de serviços ou links para serviços dockerNota: A existência desta variável de ambiente pressupõe que esta seja a única gestão do DNS upstream. O DNS upstream adicionado por meio da interface da web será substituído na reinicialização/recriação do contêiner |
DNSSEC | false | <"true"|"false"> | Habilitar suporte DNSSEC |
DNS_BOGUS_PRIV | true | <"true"|"false"> | Nunca encaminhe pesquisas reversas para intervalos privados |
DNS_FQDN_REQUIRED | true | <"true"|"false"> | Nunca encaminhe não-FQDNs |
REV_SERVER | false | <"true"|"false"> | Habilitar encaminhamento condicional de DNS para resolução de nomes de dispositivos |
REV_SERVER_DOMAIN | desarmar | Domínio de rede | Se o encaminhamento condicional estiver habilitado, defina o domínio do roteador da rede local |
REV_SERVER_TARGET | desarmar | IP do roteador | Se o encaminhamento condicional estiver habilitado, defina o IP do roteador da rede local |
REV_SERVER_CIDR | desarmar | DNS reverso | Se o encaminhamento condicional estiver habilitado, defina a zona DNS reversa (por exemplo, 192.168.0.0/24 ) |
DHCP_ACTIVE | false | <"true"|"false"> | Habilite o servidor DHCP. As concessões de DHCP estático podem ser configuradas com um /etc/dnsmasq.d/04-pihole-static-dhcp.conf personalizado |
DHCP_START | desarmar | <Start IP> | Início da gama de endereços IP a distribuir pelo servidor DHCP (obrigatório se o servidor DHCP estiver habilitado). |
DHCP_END | desarmar | <End IP> | Fim da gama de endereços IP a distribuir pelo servidor DHCP (obrigatório se o servidor DHCP estiver habilitado). |
DHCP_ROUTER | desarmar | <Router's IP> | Endereço IP do roteador (gateway) enviado pelo servidor DHCP (obrigatório se o servidor DHCP estiver habilitado). |
DHCP_LEASETIME | 24 | <hours> | Tempo de concessão de DHCP em horas. |
PIHOLE_DOMAIN | lan | <domain> | Nome de domínio enviado pelo servidor DHCP. |
DHCP_IPv6 | false | <"true"|"false"> | Habilite o suporte IPv6 do servidor DHCP (SLAAC + RA). |
DHCP_rapid_commit | false | <"true"|"false"> | Habilite a confirmação rápida do DHCPv4 (atribuição rápida de endereço). |
VIRTUAL_HOST | ${HOSTNAME} | <Custom Hostname> | Qual é o 'host virtual' do seu servidor web, acessar admin através deste nome de host/IP permite que você faça alterações na lista de permissões/listas negras, além do endereço padrão 'http://pi.hole/admin/' |
IPv6 | true | <"true"|"false"> | Para compatibilidade sem invasão, remova toda a configuração IPv6 dos serviços DNS/Web quando for falso. |
TEMPERATUREUNIT | c | <c|k|f> | Defina a unidade de temperatura preferida para unidades c : Celsius, k : Kelvin ou f Fahrenheit. |
WEBUIBOXEDLAYOUT | boxed | <boxed|traditional> | Use layout em caixa (útil ao trabalhar em telas grandes) |
QUERY_LOGGING | true | <"true"|"false"> | Habilite o log de consultas ou não. |
WEBTHEME | default-light | <"default-dark"|"default-darker"|"default-light"|"default-auto"|"high-contrast"|"high-contrast-dark"|"lcars"> | Tema da interface do usuário a ser usado. |
WEBPASSWORD_FILE | desarmar | <Docker secret path> | Defina uma senha de administrador usando segredos do Docker. Se WEBPASSWORD estiver definido, WEBPASSWORD_FILE será ignorado. Se WEBPASSWORD estiver vazio e WEBPASSWORD_FILE estiver definido como um caminho de arquivo legível válido, então WEBPASSWORD será definido como o conteúdo de WEBPASSWORD_FILE . |
Variável | Padrão | Valor | Descrição |
---|---|---|---|
INTERFACE | desarmar | <NIC> | O padrão funciona bem com nossos exemplos básicos de comandos docker run. Se você estiver tentando usar o DHCP com o modo --net host , talvez seja necessário personalizar isso ou DNSMASQ_LISTENING. |
DNSMASQ_LISTENING | desarmar | <local|all|single> | escuta local em todas as sub-redes locais, all permite escutar em sub-redes de origem da Internet, além de escuta local e single apenas na interface especificada. |
WEB_PORT | desarmar | <PORT> | Isso interromperá a funcionalidade de 'página da web bloqueada' do Pi-hole, no entanto, pode ajudar configurações avançadas, como aquelas que executam a sinologia ou o argumento --net=host docker. Este guia explica como restaurar a funcionalidade bloqueada de uma página da Web usando uma regra DNAT de roteador Linux: Método alternativo de instalação da Synology |
WEB_BIND_ADDR | desarmar | <IP> | Endereço de ligação do Lighttpd. Se não for definido, o lighttpd se ligará a todas as interfaces, exceto quando estiver executando no modo de rede do host, onde usará FTLCONF_LOCAL_IPV4 . |
SKIPGRAVITYONBOOT | desarmar | <unset|1> | Use esta opção para ignorar a atualização do Gravity Database ao inicializar o contêiner. Por padrão, esta variável de ambiente não está definida, portanto o Gravity Database será atualizado quando o contêiner for inicializado. Definir esta variável de ambiente como 1 (ou qualquer coisa) fará com que o Gravity Database não seja atualizado quando o contêiner for inicializado. |
CORS_HOSTS | desarmar | <FQDNs delimited by ,> | Lista de domínios/subdomínios nos quais o CORS é permitido. Curingas não são suportados. Por exemplo: CORS_HOSTS: domain.com,home.domain.com,www.domain.com . |
CUSTOM_CACHE_SIZE | 10000 | Número | Defina o tamanho do cache para dnsmasq. Útil para aumentar o tamanho do cache padrão ou defini-lo como 0. Observe que quando DNSSEC é "true", essa configuração é ignorada. |
FTL_CMD | no-daemon | no-daemon -- <dnsmasq option> | Personalize as opções com as quais o dnsmasq é iniciado. por exemplo, no-daemon -- --dns-forward-max 300 para aumentar o máximo. número de consultas DNS simultâneas em configurações de alta carga. |
FTLCONF_[SETTING] | desarmar | Conforme documentação | Personalize pihole-FTL.conf com as configurações descritas na página Configuração do FTLDNS. Por exemplo, para customizar LOCAL_IPV4, certifique-se de ter a variável de ambiente FTLCONF_LOCAL_IPV4 configurada. |
Variável | Padrão | Valor | Descrição |
---|---|---|---|
DNSMASQ_USER | desarmar | <pihole|root> | Permite alterar o usuário com o qual o FTLDNS é executado. Padrão: pihole , alguns sistemas como Synology NAS podem exigir que você altere para root (consulte #963) |
PIHOLE_UID | 999 | Número | Substitui o ID de usuário pihole padrão da imagem para corresponder a um ID de usuário do host IMPORTANTE : o id ainda não deve estar em uso dentro do container! |
PIHOLE_GID | 999 | Número | Substitui o ID do grupo pihole padrão da imagem para corresponder ao ID do grupo de hosts IMPORTANTE : o id ainda não deve estar em uso dentro do container! |
WEB_UID | 33 | Número | Substitui o ID de usuário www-data padrão da imagem para corresponder a um ID de usuário do host IMPORTANTE : o id ainda não deve estar em uso dentro do container! (Certifique-se de que seja diferente de PIHOLE_UID se você também estiver usando isso) |
WEB_GID | 33 | Número | Substitui o ID do grupo www-data padrão da imagem para corresponder ao ID do grupo de hosts IMPORTANTE : o id ainda não deve estar em uso dentro do container! (Certifique-se de que seja diferente de PIHOLE_GID se você também estiver usando isso) |
WEBLOGS_STDOUT | 0 | 0|1 | 0 logs para arquivos definidos, 1 acesso de redirecionamento e logs de erros para stdout |
Embora ainda possam funcionar, é provável que sejam removidos em uma versão futura. Quando aplicável, são indicados nomes alternativos de variáveis. Por favor, revise a tabela acima para o uso das variáveis alternativas
Ambiente Docker Var. | Descrição | Substituído por |
---|---|---|
CONDITIONAL_FORWARDING | Habilitar encaminhamento condicional de DNS para resolução de nomes de dispositivos | REV_SERVER |
CONDITIONAL_FORWARDING_IP | Se o encaminhamento condicional estiver habilitado, defina o IP do roteador da rede local | REV_SERVER_TARGET |
CONDITIONAL_FORWARDING_DOMAIN | Se o encaminhamento condicional estiver habilitado, defina o domínio do roteador da rede local | REV_SERVER_DOMAIN |
CONDITIONAL_FORWARDING_REVERSE | Se o encaminhamento condicional estiver habilitado, defina o DNS reverso do roteador da rede local (por exemplo, 0.168.192.in-addr.arpa ) | REV_SERVER_CIDR |
DNS1 | Provedor DNS upstream primário, o padrão é Google DNS | PIHOLE_DNS_ |
DNS2 | Provedor de DNS upstream secundário, o padrão é Google DNS, no se apenas um DNS for usado | PIHOLE_DNS_ |
ServerIP | Defina o IP da LAN do seu servidor, usado pelos modos de bloqueio da web e endereço de ligação lighttpd | FTLCONF_LOCAL_IPV4 |
ServerIPv6 | Se você tiver uma rede v6 configurada para a LAN IPv6 do seu servidor para bloquear totalmente anúncios IPv6 | FTLCONF_LOCAL_IPV6 |
FTLCONF_REPLY_ADDR4 | Defina o IP da LAN do seu servidor, usado pelos modos de bloqueio da web e endereço de ligação lighttpd | FTLCONF_LOCAL_IPV4 |
FTLCONF_REPLY_ADDR6 | Se você tiver uma rede v6 configurada para a LAN IPv6 do seu servidor para bloquear totalmente anúncios IPv6 | FTLCONF_LOCAL_IPV6 |
Para usar esses env vars no formato docker run, estilize-os como: -e DNS1=1.1.1.1
Aqui está um resumo de outros argumentos para sua execução docker-compose/docker.
Argumentos do Docker | Descrição |
---|---|
-p <port>:<port> Recomendado | Portas a serem expostas (53, 80, 67), as portas mínimas necessárias para serviços HTTP e DNS Pi-holes |
--restart=unless-stopped Recomendado | (Re)inicialize automaticamente seu Pi-hole na inicialização ou em caso de travamento |
-v $(pwd)/etc-pihole:/etc/pihole Recomendado | Os volumes para suas configurações Pi-hole ajudam a persistir as alterações nas atualizações de imagens do docker |
-v $(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d Recomendado | Os volumes para suas configurações do dnsmasq ajudam a persistir as alterações nas atualizações de imagens do docker |
--net=host Opcional | Alternativa aos argumentos -p <port>:<port> (não pode ser usado ao mesmo tempo que -p) se você não executar nenhum outro aplicativo da web. O DHCP funciona melhor com --net=host, caso contrário, seu roteador deverá suportar configurações de dhcp-relay. |
--cap-add=NET_ADMIN Recomendado | Capacidade comumente adicionada para DHCP, consulte Nota sobre Capacidades abaixo para outras capacidades. |
--dns=127.0.0.1 Opcional | Define as configurações de resolução do seu contêiner para localhost para que ele possa resolver nomes de host DHCP do DNSMasq do Pi-hole, pode corrigir erros de resolução na reinicialização do contêiner. |
--dns=1.1.1.1 Opcional | Define um servidor de backup de sua escolha caso o DNSMasq tenha problemas para iniciar |
--env-file .env Opcional | Arquivo para armazenar variáveis de ambiente para docker substituindo as configurações -e key=value . Aqui por conveniência |
docker exec -it pihole_container_name pihole -a -p
- digite sua senha no prompt-p 8080:80
se estiver usando o modo de bloqueio padrão. Se você estiver usando o modo de bloqueio de IP herdado, não deverá remapear esta porta.DEFAULT_HOST
env em nginxproxy/nginx-proxy e você precisa definir o VIRTUAL_HOST
correspondente para o contêiner do Pi-hole. Por favor, leia o leia-me nginxproxy/nginx-proxy para obter mais informações se tiver problemas.bridge
de modo de rede padrão do Docker isola o contêiner da rede do host. Esta é uma configuração mais segura, mas requer a configuração da opção Pi-hole DNS para comportamento de escuta da interface como "Ouvir em todas as interfaces, permitir todas as origens". As versões modernas do Ubuntu (17.10+) e Fedora (33+) incluem systemd-resolved
, que é configurado por padrão para implementar um resolvedor de stub DNS de cache. Isso impedirá que o pi-hole escute na porta 53. O resolvedor stub deve ser desabilitado com: sudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf
Isso não alterará as configurações do servidor de nomes, que apontam para o resolvedor de stub, impedindo assim a resolução do DNS. Altere o link simbólico /etc/resolv.conf
para apontar para /run/systemd/resolve/resolv.conf
, que é atualizado automaticamente para seguir o netplan
do sistema: sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf'
Depois de fazer essas alterações, você deve reiniciar o systemd-resolved usando systemctl restart systemd-resolved
Depois que o pi-hole estiver instalado, você desejará configurar seus clientes para usá-lo (veja aqui). Se você usou o link simbólico acima, seu host docker usará o que for servido pelo DHCP ou qualquer configuração estática que você configurou. Se você deseja definir explicitamente os servidores de nomes do seu host docker, você pode editar os netplan(s) encontrados em /etc/netplan
e executar sudo netplan apply
. Exemplo de plano de rede:
network :
ethernets :
ens160 :
dhcp4 : true
dhcp4-overrides :
use-dns : false
nameservers :
addresses : [127.0.0.1]
version : 2
Observe que também é possível desabilitar totalmente systemd-resolved
. No entanto, isso pode causar problemas com a resolução de nomes em VPNs (consulte o relatório de bug). Ele também desativa a funcionalidade do netplan, uma vez que systemd-resolved é usado como renderizador padrão (consulte man netplan
). Se você optar por desabilitar o serviço, precisará definir manualmente os servidores de nomes, por exemplo, criando um novo /etc/resolv.conf
.
Usuários de versões mais antigas do Ubuntu (por volta de 17.04) precisarão desabilitar o dnsmasq.
@Rikj000 produziu um guia para ajudar os usuários a instalar o Pi-hole no Dokku
As tags docker primárias são explicadas na tabela a seguir. Clique aqui para ver a lista completa de tags. Consulte as notas de versão do GitHub para ver a versão específica do Pi-hole Core, Web e FTL incluída na versão.
As versões baseadas em data (incluindo versões "Patch" incrementadas) não se relacionam a nenhum tipo de número de versão semântico; em vez disso, uma data é usada para diferenciar entre a nova versão e a versão antiga, nada mais. As notas de lançamento sempre conterão detalhes completos das alterações no contêiner, incluindo alterações nos componentes principais do Pi-hole
marcação | descrição |
---|---|
latest | Sempre o lançamento mais recente |
2022.04.0 | Lançamento baseado em data |
2022.04.1 | Segundo lançamento em um determinado mês |
dev | Semelhante ao latest , mas para o ramo de desenvolvimento (empurrado ocasionalmente) |
*beta | Lançamentos beta iniciais das próximas versões – aqui estão os dragões |
nightly | Como dev , mas empurrado todas as noites e extraindo dos ramos development mais recentes dos principais componentes Pi-hole (Pi-hole, web, FTL) |
As habilidades de personalização padrão do Pi-hole se aplicam a esta janela de encaixe, mas com variações da janela de encaixe, como o uso de montagens de volume da janela de encaixe para mapear configurações de arquivos armazenados no host sobre os padrões do contêiner. Entretanto, a montagem desses arquivos de configuração como somente leitura deve ser evitada. Os volumes também são importantes para persistir a configuração caso você tenha removido o contêiner Pi-hole, que é um padrão típico de atualização do docker.
Não tente atualizar ( pihole -up
) ou reconfigurar ( pihole -r
). Novas imagens serão lançadas para atualizações, atualizar substituindo seu contêiner antigo por uma nova imagem atualizada é o 'método docker'. Os contêineres docker de longa duração não são o caminho do docker, pois pretendem ser portáteis e reproduzíveis. Por que não recriá-los com frequência! Só para provar que você pode.
docker pull pihole/pihole
docker rm -f pihole
docker run <args> pihole/pihole
( <args>
sendo seus volumes de execução e env vars preferidos)Por que esse estilo de atualização é bom? Alguns motivos: todos estão começando com a mesma imagem base que foi testada para saber se funciona. Não é necessário se preocupar com a atualização de A para B, B para C ou A para C ao implementar atualizações, isso reduz a complexidade e simplesmente permite um 'novo começo' sempre, preservando as personalizações com volumes. Basicamente, estou incentivando os princípios do servidor Phoenix para seus contêineres.
Para reconfigurar o Pi-hole, você precisará usar variáveis de ambiente de contêiner existentes ou, se não houver uma variável para o que você precisa, usar a interface da web ou comandos CLI.
Aqui estão algumas páginas wiki relevantes da documentação do Pi-hole. A interface da web ou ferramentas de linha de comando podem ser usadas para implementar alterações no pihole.
Instalamos todos os utilitários pihole para que os comandos pihole integrados funcionem via docker exec <container> <command>
assim:
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
O servidor web e o serviço DNS dentro do contêiner podem ser personalizados, se necessário. Quaisquer arquivos de configuração montados em volume em /etc/dnsmasq.d/
serão carregados pelo dnsmasq quando o contêiner for iniciado ou reiniciado ou se você precisar modificar a configuração do Pi-hole, ela está localizada em /etc/dnsmasq.d/01-pihole.conf
. Os scripts de inicialização do docker executam um teste de configuração antes de iniciar, para informar sobre quaisquer erros no log do docker.
Da mesma forma, para o servidor web, você pode personalizar as configurações em /etc/lighttpd
Contanto que o serviço do sistema docker seja iniciado automaticamente na inicialização e você execute seu contêiner com --restart=unless-stopped
seu contêiner deve sempre iniciar na inicialização e reiniciar em caso de falhas. Se você preferir que seu contêiner docker seja executado como um serviço systemd, adicione o arquivo pihole.service a "/etc/systemd/system"; personalize qualquer que seja o nome do seu contêiner e remova --restart=unless-stopped
da execução do docker. Depois de criar inicialmente o contêiner do docker usando o comando docker run acima, você pode controlá-lo com "systemctl start pihole" ou "systemctl stop pihole" (em vez de docker start
/ docker stop
). Você também pode habilitá-lo para inicialização automática na inicialização com "systemctl enable pihole" (em oposição a --restart=unless-stopped
e garantindo que o serviço docker seja iniciado automaticamente na inicialização).
NOTA: Após a execução inicial, pode ser necessário parar manualmente o contêiner do docker com "docker stop pihole" antes que o systemctl possa começar a controlar o contêiner.
DNSMasq/FTLDNS espera ter os seguintes recursos disponíveis:
CAP_NET_BIND_SERVICE
: Permite ligação FTLDNS a soquetes TCP/UDP abaixo de 1024 (especificamente serviço DNS na porta 53)CAP_NET_RAW
: use soquetes brutos e de pacote (necessários para lidar com solicitações DHCPv6 e verificar se um IP não está em uso antes de alugá-lo)CAP_NET_ADMIN
: modifica tabelas de roteamento e outras operações relacionadas à rede (em particular inserindo uma entrada na tabela vizinha para responder a solicitações DHCP usando pacotes unicast)CAP_SYS_NICE
: FTL se define como um processo importante para obter mais tempo de processamento se este estiver acabandoCAP_CHOWN
: precisamos ser capazes de alterar a propriedade dos arquivos de log e bancos de dados caso o FTL seja iniciado como um usuário diferente do pihole
Esta imagem concede automaticamente esses recursos, se disponíveis, ao processo FTLDNS, mesmo quando executado como não-root.
Por padrão, o docker não inclui o recurso NET_ADMIN
para contêineres não privilegiados e é recomendado adicioná-lo explicitamente ao contêiner usando --cap-add=NET_ADMIN
.
No entanto, se os anúncios de roteadores DHCP e IPv6 não estiverem em uso, deve ser seguro ignorá-los. Para os mais paranóicos, deveria ser possível eliminar explicitamente a capacidade NET_RAW
para evitar que o FTLDNS a obtenha automaticamente.
Percebemos que muitas pessoas usam a Watchtower para manter seus contêineres Pi-hole atualizados. Pela mesma razão que não fornecemos um recurso de atualização automática em uma instalação bare metal, você não deve ter um sistema atualizando automaticamente seu contêiner Pi-hole. Especialmente desacompanhado. Por mais que tentemos garantir que nada dará errado, às vezes as coisas dão errado - e você precisa reservar um tempo para extrair e atualizar manualmente para a versão do contêiner que deseja executar. O processo de atualização deve seguir as seguintes linhas:
O Pi-hole é parte integrante da sua rede, não deixe que ele caia devido a uma atualização autônoma no meio da noite.
Por favor, relate problemas no projeto GitHub quando você suspeitar de algo relacionado ao docker. Perguntas gerais sobre pi-hole ou docker são melhor respondidas em nossos fóruns de usuários.