A glorious pi hole

Real-time stats on ad blocking in the pi-hole web UI

I recently heard about an intriguing project called pi-hole. You use a cheap tiny raspberry pi computer that runs on your local network, and it handles all your DNS. It's essentially just a database of ad servers that run as a blocklist after grabbing DNS from popular services (like Google, Cloudflare, etc), so you get all the DNS you need on your network, but without any connections to adservers.

Granted, I used to run an ad-supported series of websites, but I tried my hardest to approach it ethically back then (and I subscribe to half a dozen news sites now). It wasn't until last year that I finally started using adblockers in my browsers, and as the ad blocking wars have escalated, I've gotten a little tired of the nag screens and the small news sites that when I whitelist see they're talking to 77 different servers to serve me up a single page. I understand free content sites have to find ways to make money, but is the answer taking away the privacy of your readers and sharing all their data with dozens of ad companies? Then there are devices I can't disable ads on, like my TV.

A few friends tried out pi-hole and said it worked pretty well, so I gave it a try myself. I ordered up this complete raspberry pi kit from Amazon, then followed this guide to get things set up and configured. You can skip much of the first half of the guide since the Amazon kit ships with a bootable OS on the memory card. You do need to have a HDMI connected monitor (or TV) and USB mouse and keyboard to set up your raspberry pi once, but once you enable the SSH interface, you'll never need that monitor or keyboard/mouse again.

Be sure to install the blocklists and whitelists as described in the guide, and don't forget you can whitelist any future sites using the web front-end to pi-hole, through a simple form.

Getting everything configured

I had to reconfigure my router somewhat, to both give the raspberry pi computer a permanent internal IP address and to divert all my router's internal DNS to the IP address of the raspberry pi. And if the raspberry pi ever goes down, your DNS goes with it, so you'll notice immediately.

Once installed and running, the web felt a little snappier in a browser without an ad blocker installed. Most all ads are gone and according to my pi hole stats, 20% of my internet traffic that was spent on talking to ad server requests is freed up. No more whitelisting nag screens from sites, and finally, no more ads on my TV. About the only ads that remain are in the Instagram client (which I would pay Facebook money to remove if I could).

That big tall rectangle on the side is where ads used to show up

It's not the easiest project to tackle because you have to know your way around your network settings, and it will take about an hour to set up, but once you have it running, it's pretty great.