Hi everybody.
I’ve been running Umbrel on a RPi 4 connected to a 1 GB SSD for a while and noticed that Pi-Hole is now available in the store so I gave it a shot.
I installed it, disabled DHCP on my router, enabled it in the Pi-Hole Interface, but it’s telling me that the DNS service is not running.
The diagnosis tab shows the error “FTL failed to start due to process is missing required capability NET_ADMIN” over and over again.
I found this related Issue on Github but it seems like something that Umbrel might need to update for Pi-Hole to work out-of-the-box.
Same issue on my site. Deleting and reinstalling the app over the Umbrel App Store doesn’t help.
For me it seems that Umbrel doesn’t add net_admin capability on starting the Pihole docker container.
I already tried to manual start a Pihole container with parameters, but I messed more up… .
Just a follow up that DHCP doesn’t appear to work but DNS still works (and it worked before I modified docker-compose.yml ). Will continue to look further into why DHCP doesn’t work (I suspect somethigng BOOTP related.
Also saw that BB Code works here. Going to try to post the file to get right format below.
Thanks for the heads up. I’ll probably end up needing to do that. I figured out that DHCP isn’t working because it’s still in the docker “internal network” container. I believe I’ll need to run network_mode: host and then redirect a bunch of ports since it’ll be use the Umbrel IP. Basically this:
You have to set it up to run a different docker network and assign it an IP. The reason being that there’s no way to forward broadcasts to the internal docker network.
Here’s my docker-compose.yml .
version: "3.7"
services:
server:
image: pihole/pihole
# Pi-hole doesn't currently support running as non-root
# https://github.com/pi-hole/docker-pi-hole/issues/685
# user: "1000:1000"
restart: on-failure
cap_add:
- NET_ADMIN
volumes:
- ${APP_DATA_DIR}/data/pihole:/etc/pihole/
- ${APP_DATA_DIR}/data/dnsmasq:/etc/dnsmasq.d/
environment:
- VIRTUAL_HOST=${APP_DOMAIN}
- WEBPASSWORD=${APP_PASSWORD}
networks:
default:
ipv4_address: 192.168.1.253 #available IP to assign statically to Pi-Hole. Note, this isn't actually assigned to an interface. Just an IP for the docker container really
networks:
default:
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
ip_range: 192.168.1.248/29 #network address of range
Basically the macvlan network will be assigned the .253 IP address and a virtual MAC to receive BOOTP broadcasts. Also note, since it has an ‘external’ IP, no need for port forwarding anymore.