Kill every ad on your network
Ad blockers live in your browser. That means they protect exactly one app on exactly one device, and they do nothing for your TV, your phone apps, your thermostat, or your mother's laptop when she's on your couch.
There's a better place to do it. Every device on your network has to ask a question before it can load anything: what's the address for this name? If you own the thing that answers, you decide which names get an answer. Ad server asks, ad server gets nothing, page loads without it. One box, whole house, every device, nobody has to install anything.
That's all Pi-hole is. It's a phone book that refuses to look up certain numbers.
What it runs on
Mine started on a small single board computer that had been sitting in a drawer doing nothing for months. That's the right kind of hardware for this. It uses almost no power, it makes no noise, and the job is genuinely tiny. An old laptop works. A spare desktop works. If you already run containers on something that stays on, it works there too, which is where mine ended up.
The two decisions nobody explains
Where does it send the questions it doesn't block? Pi-hole isn't a full phone book, it's a filter in front of one. For the requests it allows, it has to ask somebody for the real answer. Pick a public resolver. I use Cloudflare at 1.1.1.1 and stopped thinking about it.
The one thing that matters: do not point it at your router. Because later you're going to point your router at Pi-hole, and then the two of them will sit there asking each other the same question until the heat death of the universe.
What happens if it dies? Once your whole network asks Pi-hole for everything, Pi-hole is a single point of failure. Nothing browses until it's back.
The obvious fix is to add a second resolver as a backup. Don't. Devices don't politely fall back, they ask whoever answers fastest, so a random slice of your traffic skips Pi-hole entirely and ads leak through. You trade real blocking for resilience you probably don't need.
I run it with no backup. If it goes down I change one field in the router back to 1.1.1.1 and I'm online in thirty seconds. A thirty second manual fix beats a system that half works on purpose.
Wiring it up
Install it, pick your upstream, load the blocklists. Then go into your router's DHCP settings and change the DNS server it hands out to your new box's address. That single field is the whole thing. Every device that reconnects picks it up automatically. No apps, no per device setup, nothing for anyone else in the house to learn.
Give it a day and go look at the dashboard. Watching the count climb is genuinely satisfying, and seeing which of your own devices are the chattiest is educational in a way that will annoy you.
Now the part where I broke it
This is the useful half of the log, so I'm not going to skip it.
I gave that box a fixed address by typing the address into the box itself. Felt right at the time. Then I changed routers, and the whole network moved to a new address range. Then it moved again. The box didn't know, because nobody told it. It booted up, put on an address that no longer existed anywhere, and sat there deaf.
It looked dead for days. Power cycling did nothing, and it took me longer than I want to admit to understand why: rebooting just made it put the same wrong address back on. There was never anything wrong with the hardware. It was shouting into a room that had been demolished.
Getting back in was the fun part. I gave a machine that was still working a second address in the old dead range, so for a minute there were two networks living on one wire. That let me reach the stranded box, and I armed a job to undo my change automatically after three minutes in case the fix didn't take and I locked myself out for good. Then I switched it to pulling its address automatically and it came right back.
The lesson, and it applies to every machine you own: never type a fixed address into the machine. If you need a device to always have the same address, set that in the router instead. The router knows when the network changes. The box in the closet does not, and it will happily wait forever at an address that stopped existing eight months ago.
Built this and hit something I didn't cover? Tell me and I'll fix the log.