PiHelper: A Native Companion App for your Pi-hole

Ads are an unfortunate byproduct of the freemium internet that we've collectively chosen through our actions, and worse yet are the trackers they've inspired to follow everyone around our online lives. As someone who values their online privacy, I was elated to stumble upon Pi-hole, a network-wide ad blocker. Sure, we've had browser extension ad blockers for a while now, but these don't help out very much on other devices like tablets and smartphones. Additionally, many sites now detect ad blockers and then deny you access until you whitelist them or pay some ridiculous \$10 a month subscription for just one website.

Side note: I very strongly believe in supporting creators and publications that you like, but the “allow invasive tracking/advertising or pay a subscription” model doesn’t sit well with me.

While Pi-hole is an excellent tool for making usage of the internet much more enjoyable, it isn't without its drawbacks. Sometimes you find yourself unable to open a link because it's blocked or a page doesn't quite load correctly or maybe you just want to temporarily disable the ad blocking to support a site that you really like. Pi-hole comes with a pretty great web interface where you can go in to disable it temporarily or until you decide to turn it back on, but it's not the most user-friendly for non-technical users, as you have to know the IP address for the Pi-hole, or you have to set up some internal domain name that points to it, and you also have to make sure everyone in your family has the password to the admin settings and knows how to enable and disable the Pi-hole. As a believer in simple, native-first interactions, even I find this a bit tedious sometimes, so my less technically-inclined family members certainly wouldn't put up with this.

I'm aware that there are existing Android and iOS apps for this, but I wanted something with a common interface between the two platforms so that I can help my family members regardless of which platform they personally choose to use. If I'm being honest, I also wanted an excuse to play around with doing some iOS development on a relatively simple project. Thus, I found myself motivated to find a better way to allow my family to have control over the Pi-hole. They should be able to access it from any device, with a fast, responsive interface, that's easy to set up and use. Enter Pi-Helper. Below are a series of very early screenshots for the initial build. I intend to publish the app on Android within a couple of weeks and on iOS within a couple of months.

A screenshot of the Android app for Pi Helper where there is a button to scan the network for the pi-hole or the option to enter in the IP address manually. From the first launch, Pi-Helper attempts to simplify the connection process. The simpler solution of just scanning the network for the Pi-hole is offered first, but more advanced/knowledgeable users can just connect directly should they choose.

A screenshot of the Android app for Pi Helper where the app is scanning the network. The scanning functionality scans the 8-bit block that the current device's IP address is currently located in to attempt to find the Pi-hole.

A screenshot of the Android app for Pi Helper where the user is prompted to either authenticate via password or API key. Once a connection has been established with the Pi-hole, the user is presented with a couple of options for authentication. Since the password is likely easier to get/remember, I've included an option to authenticate with that, as the API key is derived from it at the time of writing.

A screenshot of the controls for the Pi-hole after you've authenticated with it. Pi-Helper supports both light and dark modes for all parts of the app.

Upon connecting to and authenticating with the Pi-hole, you're able to enable and disable it, using the standard disable times or a custom time, modeled after the web interface implementation.

Stay tuned for more updates on the project and please don't hesitate to get in touch if you'd like to help me beta test it!