Since nobody mentioned, I recommend https://desec.io/ as the DNS provider. Has a good REST API to update records, also provides a dedyn.io dynamic domain, and runs as a nonprofit. I think ddclient will also support it natively in the next release as well.
The solution of renting a VPS also works but usually incurs some cost. You might also want to look into Cloudflare Tunnels