A few of my friends experienced the glory of PiHole in my home network and asked, if I could install such a thing in their networks as well.
Which I obviously could, but none of them are interested in updating/maintaining such a device. So I would like to collect some suggestions on how to deploy such a box with (ideally) zero interaction from my side until the end of times.
My hardware platform of choice would be a cheap thin client (Futro s920 or something like that) running Ubuntu with unattended updates enabled.
Pihole itself seem to offer an auto-updater, but I’m not sure how stable that runs in the long run - maybe Docker would be better suited here?
If they do not want to maintain and update a pihole, it is better to just use public dns, like adguard.
Rent a cheap VPS, ask your friends to gobble up the 1-2 units of local currency per month. Run a DNS over HTTPS server on the VPS (Adguard Home can do it, I’m not sure about PiHole), then just use browsers that can use a custom DoH resolver.
Don’t open port 53 to the public, that’s just asking for trouble. The bonus with this is the adblocking is in use on the go as well, and you can use the same server yourself.
I’d personally recommend AdGuard Home over PiHole, as it supports DNS-over-HTTPS and DNS-over-TLS out-of-the-box.
Honestly, if I was doing this, I’d probably run it on a VPS or my home server. I’d run at least two instances and configure their router to use them. You’d lose encrypted DNS, but it means they don’t need a device on their local network.
I would like to collect some suggestions on how to deploy such a box
Someone will have to do maintenance eventually. Configure SSH securely (Ed25519 key, password authentication disabled), and SSH in and update it once per month? Charge them a small fee, or do it for free in exchange for them doing something nice for you.
Auto-upgrades are scary since there can be breaking changes between versions.
My hardware platform of choice would be a cheap thin client
Why not a Raspberry Pi? The supply chain issues are clearing up.
You may want two so that there’s redundancy and they don’t lose DNS in case one dies. You can use something like https://github.com/bakito/adguardhome-sync (or the PiHole equivalent) to keep configs in sync across both.
Why not a Raspberry Pi? The supply chain issues are clearing up.
In the US it seems the supply chain issues are alive as ever. Most of the official resellers are sold out on anything but the Pico and Zero boards. Some do have 4B boards for sale if you buy their starter kit with them, increasing the price by $65 on canakit. The supply issues are definitely not resolved for home users no matter what the CEO wants to say.
Ah, interesting. Thanks for the info. I had heard that the supply chain issues were clearing up, but admittedly haven’t checked the stock levels myself.
You can get something similar, like an ODROID.
I run pihole dockerized on Armbian for Rock64, those should be available.
How about to set up a device that works locally at your friends’ house as DNS server, but don’t forget to install something like zerotier, so you can access it without setting up a port forward. With that, you can help them with the maintenance of their DNS server.
I would go a step further and use ansible to manage the devices. Set it up to auto update and you’ll have basically no maintenance.
This is the correct answer. Takes a little bit of tinkering to setup but it’s free and works. Just make sure to change the default DNS endpoints from Cloudflare and Google to something more private.
You could charge a small maintenance contract to keep it up to date!
Spitballing ideas:
- Run PiHole on a public facing server/port. You’ll probably need to plan out the security aspects of it, but then your friends could then just set their devices to use the PiHole DNS (much like how people can set their devices to use 1.1.1.1 or 8.8.8.8).
- Drop a Pi with PiHole in their network that is managed with some fleet/IOT management platform like Balena. That’ll in theory get you PiHole running in a container, and you’ll have a management platform to actually remotely connect to the Pi to manage it.
You may be already aware, but be mindful of the danger associated with having an ounce of responsibility for their DNS uptime. The bonus of option #1 is that you could also empower your friends to “bypass” PiHole should it go belly up.
DO NOT run a public DNS resolver. It’ll get used as part of a DNS amplification attack, and your system will be used to DDOS somebody else.
The only viable solutions here are to either have OPs friends VPN all traffic through OPs network (there might be a way to use split tunneling to reduce total traffic used, though I’m just spitballing here), to deploy hardware locally on their network, or to use a public solution. Everything else is going to be a security risk.
Thanks for the explicit mention, I should have been less vague with my “planning the security aspects” comment. I was thinking firewall rules would mitigate that, but could moot if the friends are on a dynamic lease.
VPN is a bit of a non starter since that would require installing and running a VPN client 24/7 on all devices, else you’re dropping in a site to site VPN device on the network… At that point you might as well cut out the extra complication and just run PiHole on that point.
I actually learned about public AdGuard servers in this thread! I’d definitely lean that way if I were OP (because I personally do not want to field “the internet is not working” calls in the middle of the night).
No worries, I just wanted to make very sure that the risks for #1 were properly understood.
VPN might be able to work with split tunneling, but I haven’t tried it myself. It’d probably be more complicated than it’s worth!
I’d also lean towards the public AdGuard servers in this case, for the same reason! I’m happy to field certain calls from friends and family, but I don’t want to get the “my internet isn’t working!” calls at 2am-- I get enough of those from work! 😁