From ffb38bbdaa93bb5d5b1c74bb82710e9f18a8b672 Mon Sep 17 00:00:00 2001 From: John D Date: Tue, 25 May 2021 01:44:32 -0700 Subject: [PATCH] Added Pihole with cloudflared --- dns-common/on_boot.d/10-dns.sh | 2 +- nextdns/README.md | 2 +- run-pihole/10-cloudflared.sh | 15 +++++++++++ run-pihole/Dockerfile | 5 ++++ run-pihole/README.md | 48 +++++++++++++++++++++++----------- 5 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 run-pihole/10-cloudflared.sh create mode 100644 run-pihole/Dockerfile diff --git a/dns-common/on_boot.d/10-dns.sh b/dns-common/on_boot.d/10-dns.sh index 5dc2990..1c4a5a0 100644 --- a/dns-common/on_boot.d/10-dns.sh +++ b/dns-common/on_boot.d/10-dns.sh @@ -29,7 +29,7 @@ IPV6_GW="" FORCED_INTFC="" # container name; e.g. nextdns, pihole, adguardhome, etc. -CONTAINER=nextdns +CONTAINER=pihole if ! test -f /opt/cni/bin/macvlan; then echo "Error: CNI plugins not found. You can install it with the following command:" >&2 diff --git a/nextdns/README.md b/nextdns/README.md index cad9d4e..585acb3 100644 --- a/nextdns/README.md +++ b/nextdns/README.md @@ -1,5 +1,5 @@ # Run NextDNS on your UDM - +# THIS IS NO LONGER MAINTAINED ## Features 1. Run NextDNS on your UDM with a completely isolated network stack. This will not port conflict or be influenced by any changes on by Ubiquiti. diff --git a/run-pihole/10-cloudflared.sh b/run-pihole/10-cloudflared.sh new file mode 100644 index 0000000..389cd79 --- /dev/null +++ b/run-pihole/10-cloudflared.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if ! test -f /opt/cni/bin/macvlan; then + ARCH=$(uname -m) + if [ $ARCH == "x86_64" ] + then + ARCH="amd64" + elif [ $ARCH == "aarch64" ]; then + ARCH="arm64" + fi + curl -fsSLo "/opt/cloudflared" https://github.com/cloudflare/cloudflared/releases/download/2021.5.9/cloudflared-linux-$ARCH + chmod +x /opt/cloudflared +fi +/opt/cloudflared update +/opt/cloudflared proxy-dns $CLOUDFLARED_OPTS & \ No newline at end of file diff --git a/run-pihole/Dockerfile b/run-pihole/Dockerfile new file mode 100644 index 0000000..c0c5ec9 --- /dev/null +++ b/run-pihole/Dockerfile @@ -0,0 +1,5 @@ +# docker buildx build --platform linux/amd64,linux/arm64 . -t docker.io/boostchicken/pihole:latest --push +FROM pihole/pihole:latest + +ENV CLOUDFLARED_OPTS="--port 5053 --address 0.0.0.0" +COPY 10-cloudflared.sh /etc/cont-init.d/ \ No newline at end of file diff --git a/run-pihole/README.md b/run-pihole/README.md index bb7a310..581e9b7 100644 --- a/run-pihole/README.md +++ b/run-pihole/README.md @@ -20,8 +20,8 @@ 1. Copy [05-install-cni-plugins.sh](../cni-plugins/05-install-cni-plugins.sh) to /mnt/data/on_boot.d 1. Execute /mnt/data/on_boot.d/05-install-cni-plugins.sh 1. On your controller, make a Corporate network with no DHCP server and give it a VLAN. For this example we are using VLAN 5. -2. Copy [20-dns.conflist](../cni-plugins/20-dns.conflist) to /mnt/data/podman/cni. This will create your podman macvlan network -3. Copy [10-dns.sh](../dns-common/on_boot.d/10-dns.sh) to /mnt/data/on_boot.d and update its values to reflect your environment +1. Copy [20-dns.conflist](../cni-plugins/20-dns.conflist) to /mnt/data/podman/cni. This will create your podman macvlan network +1. Copy [10-dns.sh](../dns-common/on_boot.d/10-dns.sh) to /mnt/data/on_boot.d and update its values to reflect your environment ``` ... @@ -33,15 +33,15 @@ ... ``` -4. Execute /mnt/data/on_boot.d/10-dns.sh -5. Create directories for persistent Pi-hole configuration +1. Execute /mnt/data/on_boot.d/10-dns.sh +1. Create directories for persistent Pi-hole configuration ``` mkdir -p /mnt/data/etc-pihole mkdir -p /mnt/data/pihole/etc-dnsmasq.d ``` -6. Create and run the Pi-hole docker container. The following command sets the upstream DNS servers to 1.1.1.1 and 8.8.8.8. +1. Create and run the Pi-hole docker container. The following command sets the upstream DNS servers to 1.1.1.1 and 8.8.8.8. ```sh podman run -d --network dns --restart always \ @@ -59,19 +59,37 @@ -e IPv6="False" \ pihole/pihole:latest ``` + The below errors are expected and acceptable + + ```sh + ERRO[0022] unable to get systemd connection to add healthchecks: dial unix /run/systemd/private: connect: no such file or directory + ERRO[0022] unable to get systemd connection to start healthchecks: dial unix /run/systemd/private: connect: no such file or directory + ``` - The below errors are expected and acceptable - - ```sh - ERRO[0022] unable to get systemd connection to add healthchecks: dial unix /run/systemd/private: connect: no such file or directory - ERRO[0022] unable to get systemd connection to start healthchecks: dial unix /run/systemd/private: connect: no such file or directory - ``` - -6. Set pihole password +1. Set pihole password ```sh podman exec -it pihole pihole -a -p YOURNEWPASSHERE ``` -7. Update your DNS Servers to 10.0.5.3 (or your custom ip) for each of your Networks (UDM GUI | Networks | Advanced | DHCP Name Server) -8. Access the pihole like you would normally, e.g. http://10.0.5.3 if using examples above +1. Update your DNS Servers to 10.0.5.3 (or your custom ip) for each of your Networks (UDM GUI | Networks | Advanced | DHCP Name Server) +1. Access the pihole like you would normally, e.g. http://10.0.5.3 if using examples above + +## PiHole with CloudFlareD Command + ```sh + podman run -d --network dns --restart always \ + --name pihole \ + -e TZ="America/Los Angeles" \ + -v "/mnt/data/etc-pihole/:/etc/pihole/" \ + -v "/mnt/data/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/" \ + --dns=127.0.0.1 \ + --dns=1.1.1.1 \ + --hostname pi.hole \ + -e CLOUDFLARED_OPTS="--port 5053 --address 0.0.0.0" \ + -e VIRTUAL_HOST="pi.hole" \ + -e PROXY_LOCATION="pi.hole" \ + -e ServerIP="10.0.5.3" \ + -e PIHOLE_DNS_="127.0.0.1#5053" \ + -e IPv6="False" \ + boostchicken/pihole:latest + ``` \ No newline at end of file