I currently use a custom filter/rewrite in AdGuard Home (similar to pihole).
An alternative to running a central dns server is to use mDNS. You can install a daemon on each server that you want to access via hostname, and then clients know that ServerName.local domains should be resolved using mdns. They send out a dns query to a local multicast IP, the daemon on the servers receives the query and the appropriate one responds. By design it’s local only.
You can prevent this by adding a credit card to your account. It “upgrades” your status, and then as long as you stay in the free tier allocations you won’t be charged.