Fix Pi-hole v6 LAN DNS mode

This commit is contained in:
juvdiaz 2026-06-29 14:10:50 -06:00
parent 727ab402a3
commit 3e23b794e7
4 changed files with 11 additions and 12 deletions

View File

@ -11,9 +11,10 @@ Kubernetes cluster:
Pi-hole also keeps public fallback upstreams in its config, so DNS can continue Pi-hole also keeps public fallback upstreams in its config, so DNS can continue
to resolve through `1.1.1.1` and `9.9.9.9` if the Unbound container stops. to resolve through `1.1.1.1` and `9.9.9.9` if the Unbound container stops.
For Pi-hole v6, the stack sets `FTLCONF_dns_interface=ALL` through For Pi-hole v6, the stack sets `FTLCONF_dns_interface=ALL` and
`PIHOLE_DNS_INTERFACE` so LAN clients such as the Debian control host are not `FTLCONF_dns_listeningMode=ALL` through `PIHOLE_DNS_INTERFACE` and
rejected as non-local networks. `PIHOLE_DNS_LISTENING_MODE` so LAN clients such as the Debian control host are
not rejected as non-local networks.
The bootstrap script prefers Docker data under `/nvme-storage/docker` only when The bootstrap script prefers Docker data under `/nvme-storage/docker` only when
that path is an active mount point and writable. If the NVMe is missing or that path is an active mount point and writable. If the NVMe is missing or
@ -35,7 +36,7 @@ Useful overrides:
```bash ```bash
LAB_RPI_HOST=192.168.100.89 ./jeannie rpi-services LAB_RPI_HOST=192.168.100.89 ./jeannie rpi-services
PIHOLE_WEBPASSWORD='<password>' ./jeannie rpi-services PIHOLE_WEBPASSWORD='<password>' ./jeannie rpi-services
PIHOLE_DNS_INTERFACE=ALL ./jeannie rpi-services PIHOLE_DNS_INTERFACE=ALL PIHOLE_DNS_LISTENING_MODE=ALL ./jeannie rpi-services
PIHOLE_WEB_PORT=8081 UPTIME_KUMA_PORT=3001 ./jeannie rpi-services PIHOLE_WEB_PORT=8081 UPTIME_KUMA_PORT=3001 ./jeannie rpi-services
LAB_RPI_STOP_LEGACY_PIHOLE=false ./jeannie rpi-services LAB_RPI_STOP_LEGACY_PIHOLE=false ./jeannie rpi-services
``` ```

View File

@ -141,6 +141,7 @@ PIHOLE_DNS_BIND_IP=${PIHOLE_DNS_BIND_IP:-0.0.0.0}
PIHOLE_WEB_BIND_IP=${PIHOLE_WEB_BIND_IP:-0.0.0.0} PIHOLE_WEB_BIND_IP=${PIHOLE_WEB_BIND_IP:-0.0.0.0}
PIHOLE_WEBPASSWORD=${PIHOLE_WEBPASSWORD} PIHOLE_WEBPASSWORD=${PIHOLE_WEBPASSWORD}
PIHOLE_DNS_INTERFACE=${PIHOLE_DNS_INTERFACE:-ALL} PIHOLE_DNS_INTERFACE=${PIHOLE_DNS_INTERFACE:-ALL}
PIHOLE_DNS_LISTENING_MODE=${PIHOLE_DNS_LISTENING_MODE:-ALL}
PIHOLE_UPSTREAMS=${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9} PIHOLE_UPSTREAMS=${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9}
PIHOLE_DATA_DIR=${PIHOLE_DATA_DIR:-${DATA_DIR}/pihole/etc-pihole} PIHOLE_DATA_DIR=${PIHOLE_DATA_DIR:-${DATA_DIR}/pihole/etc-pihole}
PIHOLE_DNSMASQ_DIR=${PIHOLE_DNSMASQ_DIR:-${DATA_DIR}/pihole/etc-dnsmasq.d} PIHOLE_DNSMASQ_DIR=${PIHOLE_DNSMASQ_DIR:-${DATA_DIR}/pihole/etc-dnsmasq.d}
@ -254,9 +255,7 @@ for line in useful_lines(static_dhcp_hosts_file):
PY PY
sudo docker cp "${dnsmasq_file}" "${pihole_container}:/etc/dnsmasq.d/02-homelab-managed-dns.conf" sudo docker cp "${dnsmasq_file}" "${pihole_container}:/etc/dnsmasq.d/02-homelab-managed-dns.conf"
rm -f "${dnsmasq_file}" rm -f "${dnsmasq_file}"
if ! sudo docker exec "${pihole_container}" pihole reloaddns; then sudo docker restart "${pihole_container}" >/dev/null
sudo docker restart "${pihole_container}" >/dev/null
fi
} }
seed_uptime_kuma_monitors() { seed_uptime_kuma_monitors() {

View File

@ -23,6 +23,7 @@ services:
WEBPASSWORD: ${PIHOLE_WEBPASSWORD:-homelab-change-me} WEBPASSWORD: ${PIHOLE_WEBPASSWORD:-homelab-change-me}
DNSMASQ_LISTENING: all DNSMASQ_LISTENING: all
FTLCONF_dns_interface: ${PIHOLE_DNS_INTERFACE:-ALL} FTLCONF_dns_interface: ${PIHOLE_DNS_INTERFACE:-ALL}
FTLCONF_dns_listeningMode: ${PIHOLE_DNS_LISTENING_MODE:-ALL}
PIHOLE_DNS_: ${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9} PIHOLE_DNS_: ${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9}
FTLCONF_dns_upstreams: ${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9} FTLCONF_dns_upstreams: ${PIHOLE_UPSTREAMS:-unbound#53;1.1.1.1;9.9.9.9}
REV_SERVER: ${PIHOLE_REV_SERVER:-false} REV_SERVER: ${PIHOLE_REV_SERVER:-false}

View File

@ -4658,12 +4658,10 @@ status_http_reachable() {
esac esac
} }
status_gitea_public_repo_ok() { status_gitea_public_ok() {
local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}" local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
local repo_owner="${LAB_GITEA_REPO_OWNER:-jv}"
local repo_name="${LAB_GITEA_REPO_NAME:-my-homelab-configs}"
status_http_ok "${root_url%/}/${repo_owner}/${repo_name}/" status_http_ok "${root_url%/}/user/login"
} }
status_cascade_check() { status_cascade_check() {
@ -4855,7 +4853,7 @@ status_cascade_report() {
status_cascade_check "OCI edge SSH" check_edge_ssh || failures=$((failures + 1)) status_cascade_check "OCI edge SSH" check_edge_ssh || failures=$((failures + 1))
status_cascade_check "Traefik LoadBalancer HTTP" status_http_reachable "http://${LAB_TRAEFIK_LB_IP:-192.168.100.240}/" || failures=$((failures + 1)) status_cascade_check "Traefik LoadBalancer HTTP" status_http_reachable "http://${LAB_TRAEFIK_LB_IP:-192.168.100.240}/" || failures=$((failures + 1))
status_cascade_check "Website public URL" status_http_ok "${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/" || failures=$((failures + 1)) status_cascade_check "Website public URL" status_http_ok "${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/" || failures=$((failures + 1))
status_cascade_check "Gitea public repo URL" status_gitea_public_repo_ok || failures=$((failures + 1)) status_cascade_check "Gitea public login URL" status_gitea_public_ok || failures=$((failures + 1))
if ((failures > 0)); then if ((failures > 0)); then
printf '\nStatus cascade found %s blocking failure(s).\n' "${failures}" >&2 printf '\nStatus cascade found %s blocking failure(s).\n' "${failures}" >&2