We recently started self hosting our own DDNS service.

You can check it out at https://ddns.bcsddns.com.

Once you submit your hostname, be sure to save the curl command that’s generated, you will need it to update your hostname.
This service will assign a yourhost.d.bcsddns.com address that you can update via Curl using CRON or Task Scheduler.

I am using pfSense and their ddns client will work with the following configuration:

Login to your pfSense web config.
Navigate to Services then Dynamic DNS.
Add a  “Custom” type client.
Add the curl url to “Update URL” (remove the curl command and the quotes, leaving just the url)
Enter the following for “Result Match“:

{"current_ip":"%IP%","status":"Successfuly updated"}

Note: Be sure to set the Max Cache Age to < 10 days so it will update to keep your hostname even if your IP doesn’t change.

As long as you update every 10 days, you will keep your hostname as long as you want.

Hostnames not updated within 10 days will be automatically removed but can be reclaimed on a first come first serve basis.

We reserve the right to remove any hostname at any time.