

I had issues with that recently, I had a few of my internal services set to resolve internally, but pihole was making a mess of them and returning IPv6 addresses in addition to the IPv4 internal addresses. And then browsers would try use the broken ipv6 address and fail. I just happily rely on hairpinning now, it hardly makes a difference in the scheme of things.
Nginx proxy manager is the easy way. Spin it up and the UI is fairly straight forward. You can also achieve the same thing with nginx or caddy, but you’ll have to set up the configs by hand.