I use porkbun for my domains, cloudflare for dns, ddclient connecting to the cloudflare api for dynamic dns, and traefik as a reverse proxy to send subdomains to their respective service.
The only part I have to pay for is the porkbun domain.
$8 for a year is a good deal, but be ready to switch when that expires.