Here's a dated but reasonable overview of the process from Digital Ocean: https://www.digitalocean.com/community/tutorials/how-to-bloc...
I use a combination of PiHole, Firefox+uBO, and VPN + FW rules to stay as much away from ads as possible even when browsing mobile. uBO is the single most convenient and effective measure out of all of them.
It doesn't have to be real hardware: you can run pihole in a VM (KVM, Hyper-V, etc) on your local machine. It'll eat a bit of RAM of course, but it doesn't need a huge amount to serve one user.
This doesn't solve the setup time of course, and trouble-shooting time if something goes wrong.
For mobile I run OpenVPN at home: all my traffic when on on my phone provider's network or public/guest wifi goes down that including DNS request going to my pihole instance. This isn't perfect of course: there is still some setup and maintenance involved, and some networks block or significantly throttle VPN traffic (throttling can be worked around by running the VPN on port TCP443 if it is done by simple port based rules but that may mean having a spare IPv4 address to hand).
And in my case the VPN is not just for accessing my ad-/malware- blocking DNS resolver, but also for accessing other local resources and for general paranoia (nothing goes over the mobile network or public/guest WiFi unencrypted). Useful extra feature: because payment processors think I'm at home I'm bothered less by extra identity verification steps than I would be if my source address and therefore derived location changed regularly.
DNS traffic going through the VPN stops the network intercepting and forcing it through their resolver anyway (I'm looking at you, Sky) and means that I don't have to make my DNS resolver visible to the unwashed masses.
So I'm not just being obtuse. IMO, anyway.
dns.adguard.com [1] is decent for a free offering, though offers no custom rules.
- hardware, and I’m lazy (admittedly, that doesn’t really qualify as a good reason);
- I browse on mobile, at work, from cafés, etc.
I like the idea of having a device that handles my connection everywhere and my mobile and laptop are always “on wifi” with that device. I’d love to have a centralised solution to use the dodgy wifi connection at airports, for instance.