DuckDNS? Issues Oct 10, 2023 and intemittently (on Oct 11) but now back up

Edit: Let me say first and foremost, the DuckDNS service is OUTSTANDING and the original post below was not meant to imply anything different… I have been using it for about a year and a half now and the below was the first time I have ever had any issues with it. Below I thought would be useful just to hear people’s thoughts. (BTW, it is back up and running perfectly now…)

I use the DuckDns service and noticed as of yesterday afternoon I am unable to access my duckdns url to reach HA. I thought it was something I had done to mess up my configuration but saw online that DuckDNS was down for several hours yesterday. Then this morning before I even had a chance to investigate - the URL was working - bu only iontermittently - so it still is an issue on their end. Anyone else run into this issue? What would be a better free ddns provider that is free and works with HA and can be updated as often as every 5 minutes?

Which router do you use? If you own a Fritzbox then you could use the myFritz DDNS service.

I use Cloudflare, the DNS is free, but you need a domain.

If you have an ASUS router, it offers a free DDNS service hosted by ASUS.

TP-lInk ER7206. They do not offer very good options built in -

I am using dynv6 (dynv6.com) as i also wanted a ipv6 adress. You can use it with your own domain but also use one from their service (the service is free and you have to pay nothing for it).
The best thing is that you can use and update it directly from home assistant, no client you would have to use, only a few sensors and automations for checking if the ip changed.

For example two sensors of your ip and the one of your dynv6 adress (i left the most of the stuff for ipv6 out here but it should work this way for both):

command_line sensors:

- sensor:
      name: ipify_myipv4
      command: curl 'https://api.ipify.org?format=json'
      value_template: >
        {% if value_json is defined %}
          {{ value_json.ip }}
        {% endif %}
      scan_interval: 60
      command_timeout: 55
- sensor:
      name: YOUR_DYNV6_NAME_ipv4
      command: dig @ns1.dynv6.com YOUR_DYNV6_NAME A +short
      value_template: "{{ value }}"
      scan_interval: 30
- sensor:
      name: ipify_myipv6
      command: curl 'https://api6.ipify.org?format=json'
      value_template: >
        {% if value_json is defined %}
          {{ value_json.ip }}
        {% endif %}
      scan_interval: 60
      command_timeout: 55

Now you can easily check by an automation if these adresses are not the same. If not the same, you need a rest_command to update it:

rest_command:

YOUR_DYNV6_HOSTNAME_update:
    url: https://dynv6.com/api/v2/zones/YOUR_ZONE
    method: PATCH
    headers:
      authorization: "Bearer YOUR_HTTP_TOKEN"
      accept: "application/json"
    payload: '{ "ipv4address": "{{ipv4adress}}" , "ipv6prefix": "{{ipv6adress}}" }'
    content_type:  'application/json'
    verify_ssl: true

You have to look in your DYNV6 Account für the HTTP-TOKEN (https://dynv6.com/keys#token) and your ZONE.
To call this from your automation you need the following action:

 action:
    - service: rest_command.YOUR_REST_COMMAND_UPDATE
      data: 
        ipv4adress: "{{ states('sensor.ipify_myipv4') }}"
        ipv6adress: "{{ states('sensor.ipify_myipv6') }}"
...

Maybe you have to adapt this a little bit, but if there are questions i would help where its possible;)

2 Likes