2020-12-24 22:24:32 +00:00
# Run Pi-hole on your UDM
2020-05-31 13:40:04 +00:00
2020-07-13 05:37:04 +00:00
## Features
2020-12-24 22:24:32 +00:00
1. Run Pi-hole on your UDM with a completely isolated network stack. This will not port conflict or be influenced by any changes on by Ubiquiti
2020-05-31 17:05:24 +00:00
2. Persists through reboots and firmware updates.
2020-05-31 13:40:04 +00:00
2020-07-13 05:37:04 +00:00
## Requirements
2020-06-28 13:02:50 +00:00
1. You have successfully setup the on boot script described [here ](https://github.com/boostchicken/udm-utilities/tree/master/on-boot-script )
2020-05-31 13:40:04 +00:00
2020-07-13 05:37:04 +00:00
## Customization
2020-12-24 22:59:52 +00:00
* Feel free to change [20-dns.conflist ](../cni-plugins/20-dns.conflist ) to change the IP address and MAC address of the container.
2020-06-28 13:02:50 +00:00
* Update [10-dns.sh ](../dns-common/on_boot.d/10-dns.sh ) with your own values
* If you want IPv6 support use [20-dnsipv6.conflist ](../cni-plugins/20-dnsipv6.conflist ) and update [10-dns.sh ](../dns-common/on_boot.d/10-dns.sh ) with the IPv6 addresses. Also, please provide IPv6 servers to podman using --dns arguments.
2020-05-31 16:57:38 +00:00
2020-07-13 05:37:04 +00:00
## Steps
2021-05-16 20:43:05 +00:00
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
2020-06-05 05:37:51 +00:00
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.
2021-05-25 08:44:32 +00:00
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
2020-12-24 22:24:32 +00:00
```
...
VLAN=5
IPV4_IP="10.0.5.3"
IPV4_GW="10.0.5.1/24"
...
CONTAINER=pihole
...
```
2021-05-25 08:44:32 +00:00
1. Execute /mnt/data/on_boot.d/10-dns.sh
1. Create directories for persistent Pi-hole configuration
2020-12-24 22:24:32 +00:00
```
mkdir -p /mnt/data/etc-pihole
mkdir -p /mnt/data/pihole/etc-dnsmasq.d
```
2021-05-25 08:44:32 +00:00
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.
2020-05-31 13:40:04 +00:00
2020-07-13 05:37:04 +00:00
```sh
2020-06-28 13:02:50 +00:00
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/" \
2020-12-24 22:24:32 +00:00
--dns=127.0.0.1 \
--dns=1.1.1.1 \
--dns=8.8.8.8 \
2020-06-28 13:02:50 +00:00
--hostname pi.hole \
-e VIRTUAL_HOST="pi.hole" \
-e PROXY_LOCATION="pi.hole" \
-e ServerIP="10.0.5.3" \
-e IPv6="False" \
pihole/pihole:latest
```
2021-05-25 08:44:32 +00:00
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
```
2020-07-13 05:37:04 +00:00
2021-05-25 08:44:32 +00:00
1. Set pihole password
2020-07-13 05:37:04 +00:00
```sh
2021-05-25 08:44:32 +00:00
podman exec -it pihole pihole -a -p YOURNEWPASSHERE
2020-06-28 13:02:50 +00:00
```
2020-07-13 05:37:04 +00:00
2021-05-25 08:44:32 +00:00
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
2020-07-13 05:37:04 +00:00
2021-05-25 08:44:32 +00:00
## PiHole with CloudFlareD Command
2020-07-13 05:37:04 +00:00
```sh
2021-05-25 08:44:32 +00:00
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
```