[SOLVED] DynDNS does not update after external IP changed, cannot force it either

What type of hardware are you using: Old laptop or computer
What YunoHost version are you running: 12.0.6
How are you able to access your server: The webadmin
SSH
Direct access via physical keyboard/screen
Are you in a special context or did you perform specific tweaking on your YunoHost instance ?: no

Describe your issue

A power outage caused my modem to change my external IP address
After reboot, server is not accessible from the Web, only from my LAN
I ran the webadmin diagnosis, it gave error about DNS, mismatch between current and expected addresses
I tried to resolve it from the admin domain management and from the cli command: ‘’‘yunohost dyndns update --force’‘’ suggested in diagnosis

both failed with the same error:
RuntimeError: dictionary changed size during iteration

The traceback and error message are posted below.

The server has had the latest system updates applied as of today

Thank you for taking the time to read this and hopefully help me resolve this issue

Share relevant logs or error messages

Traceback (most recent call last):
File “/usr/bin/yunohost”, line 77, in
yunohost.cli(
File “/usr/lib/python3/dist-packages/yunohost/init.py”, line 41, in cli
ret = moulinette.cli(
^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/moulinette/init.py”, line 115, in cli
).run(args, output_as=output_as, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/moulinette/interfaces/cli.py”, line 498, in run
ret = self.actionsmap.process(args, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/moulinette/actionsmap.py”, line 561, in process
return func(**arguments)
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/yunohost/log.py”, line 480, in func_wrapper
result = func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/yunohost/dyndns.py”, line 381, in dyndns_update
dyndns_update(domain, force=force, dry_run=dry_run)
File “/usr/lib/python3/dist-packages/yunohost/log.py”, line 480, in func_wrapper
result = func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/yunohost/dyndns.py”, line 473, in dyndns_update
for category in dns_conf.keys():
RuntimeError: dictionary changed size during iteration

https://paste.yunohost.org/raw/ikofisukoy

1 Like

Does anyone have any idea as to how to fix this or for a workaround?

Where is this dictionary that has changed size? Is there a backup of the dictionary from when I migrated to 12 that could be brought back?

I’m at a loss here, I’m sure the team is quite busy looking into all these recent DynDNS issues, any pointers as to what I can do would be greatly appreciated.

Thank you

1 Like

Same problem here

Problem fixed, I had to delete my domain, and re-activate it to make the updates work for dyndns.

  1. get a .local domain
  2. move all apps to the .local domain
  3. make sure you have your domain recovery password, if not create a new one in the interface
  4. remove the domain and any of it’s sub-domains.
    5.add a new domain with the same name as your old one (as I wanted to keep the name)
    6.renew your let’s encrypt certificate

enjoy your recovered access to your server.

Good luck