I was redirected here from your Twitter account maintainer to post my experience installing pi-hole on a BBB with a freshly-flashed IoT image (version information below). Hopefully this will help someone else in the future.
What I’m using
-
element14 BeagleBone Black rev. C, connected via ethernet to router
-
Asus NT-66R router
-
Debian 8.6 (“Jessie”) IoT image, retrieved from here.
What happened
After flashing the IoT image to onboard eMMC and installing pi-hole successfully, I had no DNS connectivity: could ping IPs, but not visit websites by URL from any machine on the LAN. What’s more, dnsmasq was not running. I determined that connman was binding to port 53 rather than dnsmasq, thereby preventing dnsmasq from resolving DNS requests for pi-hole (confirm using command lsof +M -nPi :53 to see the services bound to that port). Uninstalling connman and restarting the network service allowed dnsmasq to run, fixing the DNS problem. Web browsing was immediately restored across the LAN.
Upon installation, the web interface was inaccessible via browser. Running the same lsof command, but now for port 80, indicated node.js was sitting on it. This is problematic because pi-hole uses lighttpd to serve the content of the web interface–which of course requires port 80. Node.js is installed with this IoT image to facilitate BoneScript, among other things, and because we’re using this BBB for a different purpose we don’t really need it. Uninstalling and purging nodejs will also uninstall bonescript, as well as some software needed for the Cloud9 IDE (again, not needed if using your BBB for this type of project). Restarting lighttpd immediately restored the web interface.
As a note, remember you can always reboot the BBB if restarting these sevices for some reason doesn’t bring them back up.
Additional information
If you would like to see a more detailed walkthrough, please see my blog post here that discusses my method and some reasoning behind it. Feedback would be greatly appreciated, especially if I got anything wrong.