Ns8-ddclient needs testers

Hello something new to test ddclient for ns8, the software to update your dynamic IP to a provider

add-module ghcr.io/stephdl/ddclient:1.0.0-dev.3

you have to read the documentation to find the right protocol and the fqdn server of the api. obviously you need also an account to the provider dynamic dns provider

personally I use dynu.com

we could think to add more control

5 Likes

great new addition, this simplifies even more local hosting, for those without a proper firewall

So far its main task is working but secondary tasks fail (clone, backup…). Few more notes follow.
Didn’t made any field validation tests or forcefully setting wrong values to break things.


DDNS Provider - advice
On the ddns provider side it is reporting what they call “client faults”:

After configuring a new update client, please keep an eye one the Faults column on the overview page. It shows 2 values: C: S:

An increasing number of client faults usually means you (or the software you use) are doing something wrong (e.g. sending updates although your IP address did not change). If you see that, please fix it!

Currently the “client faults” are increasing with every check request. With other ddns names on the same provider using ns7 ddclient module they are shown with no “faults”.


Log Excerpts
Log shows some errors/warnings.
This one about cgroups is probably nothing (services restarting):

2024-08-11T22:11:45+02:00 [1:ddclient1:systemd] Stopping Podman  ddclient-app.service...
2024-08-11T22:11:48+02:00 [1:ddclient1:conmon] conmon 266678d80e517a967b23 <nwarn>: Failed to open cgroups file: /sys/fs/cgroup/user.slice/user-1017.slice/user@1017.service/user.slice/user-libpod_pod_e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c.slice/libpod-266678d80e517a967b23b06e7f237661b6bacb05fc7b3cca52df8e2e2597dc9a.scope/container/memory.events
2024-08-11T22:11:48+02:00 [1:ddclient1:ddclient1] 266678d80e517a967b23b06e7f237661b6bacb05fc7b3cca52df8e2e2597dc9a
2024-08-11T22:11:48+02:00 [1:ddclient1:ddclient1] 266678d80e517a967b23b06e7f237661b6bacb05fc7b3cca52df8e2e2597dc9a
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] Stopped Podman  ddclient-app.service.

Another one with Failed to open /run/user/... and error removing pod, could be nothing:

2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] Removed slice cgroup user-libpod_pod_e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c.slice.
2024-08-11T22:11:48+02:00 [1:ddclient1:podman] e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] user-libpod_pod_e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c.slice: Failed to open /run/user/1017/systemd/transient/user-libpod_pod_e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c.slice: No such file or directory
2024-08-11T22:11:48+02:00 [1:ddclient1:podman] Error: removing pod e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c cgroup: removing pod e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c cgroup: Unit user-libpod_pod_e4c9c4bcbba40f73d1417a656c8b6ee3efaab9a9b907ec545a18e9cae66b506c.slice not loaded.
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] ddclient.service: Control process exited, code=exited, status=125/n/a
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] ddclient.service: Failed with result 'exit-code'.
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] Stopped Podman ddclient.service.
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] Starting Podman ddclient.service...
2024-08-11T22:11:48+02:00 [1:ddclient1:systemd] Created slice cgroup user-libpod_pod_e032f01c3399fd0e49dda464b91d7dd83ad948fc48a54f9001d296eb356c33f6.slice.

CURL error with changeip.com. Don’t know if it comes from upstream source (linuxserver.io) or from the ns8 app code.

2024-08-11T22:11:50+02:00 [1:ddclient1:ddclient-app] [ls.io-init] done.
2024-08-11T22:11:51+02:00 [1:ddclient1:ddclient-app] WARNING:  CURL error (6) Couldn't resolve host. The given remote host was not resolved.
2024-08-11T22:11:51+02:00 [1:ddclient1:ddclient-app] WARNING:  curl cannot connect to https://ip.changeip.com using IPv6
2024-08-11T22:11:51+02:00 [1:ddclient1:ddclient-app] WARNING:  updating ns8test.nsupdate.info: nochg: No update required; unnecessary attempts to change to the current address are considered abusive

Possible features:

  • show public IP (not really necessary)
  • custom check time
  • custom check provider
  • populate list of ddns providers (leaving room for custom ones). Not really required but handy for some users.
  • populate list of protocols (leaving room for custom ones). Not really required and avoidable if it’s more of a hustle.
  • Preset DDNS providers profiles: If ddns providers list is populated, auto-fill in the other fields with known config details.

Also fine for me if stays as is and give less work.

No multiple ddns providers on a single instance (I think the ns7 module had it) but shall be possible to create another instance.


Backup
Failed, related to mariadb which the app is not using (maybe some remnant code of template used to build the app). Tested on unclean machine, so there’s a chance the problem lays on my side.

Task module/ddclient1/run-backup run failed: {'output': '', 'error': 'Job for backup2.service failed because the control process exited with error code.\nSee "systemctl --user status backup2.service" and "journalctl --user -xeu backup2.service" for details.\n', 'exit_code': 1}
1
Job for backup2.service failed because the control process exited with error code.
See "systemctl --user status backup2.service" and "journalctl --user -xeu backup2.service" for details.
2024-08-11T22:36:06+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/064eab3c-8432-460c-a504-c3bd48946a2f: configure-backup/50write_systemd_units is starting
2024-08-11T22:36:07+02:00 [1:ddclient1:agent@ddclient1] Created symlink /home/ddclient1/.config/systemd/user/timers.target.wants/backup1.timer → /home/ddclient1/.config/systemd/user/backup1.timer.
2024-08-11T22:36:07+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:36:07+02:00 [1:ddclient1:systemd] Started Backup to Local storage repo.
2024-08-11T22:36:07+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:36:07+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/064eab3c-8432-460c-a504-c3bd48946a2f: action "configure-backup" status is "completed" (0) at step 50write_systemd_units
2024-08-11T22:36:08+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/b804020d-ef8b-436a-b86a-a95e02b8929f: run-backup/50start_service_unit is starting
2024-08-11T22:36:08+02:00 [1:ddclient1:systemd] Starting Backup to Local storage repo...
2024-08-11T22:36:09+02:00 [1:ddclient1:backup1] Error: no container with name or ID "mariadb-app" found: no such container
2024-08-11T22:36:09+02:00 [1:ddclient1:backup1] [ERROR] module-dump-state failed. Command '['module-dump-state', '1']' returned non-zero exit status 125.
2024-08-11T22:36:09+02:00 [1:ddclient1:backup1] [ERROR] module-backup aborted.
2024-08-11T22:36:09+02:00 [1:ddclient1:systemd] backup1.service: Main process exited, code=exited, status=1/FAILURE
2024-08-11T22:36:09+02:00 [1:ddclient1:systemd] backup1.service: Failed with result 'exit-code'.
2024-08-11T22:36:09+02:00 [1:ddclient1:systemd] Failed to start Backup to Local storage repo.
2024-08-11T22:36:09+02:00 [1:ddclient1:agent@ddclient1] Job for backup1.service failed because the control process exited with error code.
2024-08-11T22:36:09+02:00 [1:ddclient1:agent@ddclient1] See "systemctl --user status backup1.service" and "journalctl --user -xeu backup1.service" for details.
2024-08-11T22:36:09+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/b804020d-ef8b-436a-b86a-a95e02b8929f: action "run-backup" status is "aborted" (1) at step 50start_service_unit
2024-08-11T22:36:56+02:00 [1:ddclient1:ddclient-app] WARNING:  CURL error (6) Couldn't resolve host. The given remote host was not resolved.
2024-08-11T22:36:56+02:00 [1:ddclient1:ddclient-app] WARNING:  curl cannot connect to https://ip.changeip.com using IPv6
2024-08-11T22:36:56+02:00 [1:ddclient1:ddclient-app] WARNING:  updating ns8test.nsupdate.info: nochg: No update required; unnecessary attempts to change to the current address are considered abusive
2024-08-11T22:37:08+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/71702027-e623-49bc-97cb-1c3289bc116e: configure-backup/50write_systemd_units is starting
2024-08-11T22:37:09+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:37:09+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:37:09+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/71702027-e623-49bc-97cb-1c3289bc116e: action "configure-backup" status is "completed" (0) at step 50write_systemd_units
2024-08-11T22:37:10+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/a3c446e8-bd08-43fa-9fae-d11a06df0d5e: run-backup/50start_service_unit is starting
2024-08-11T22:37:10+02:00 [1:ddclient1:systemd] Starting Backup to Local storage repo...
2024-08-11T22:37:10+02:00 [1:ddclient1:backup1] Error: no container with name or ID "mariadb-app" found: no such container
2024-08-11T22:37:10+02:00 [1:ddclient1:backup1] [ERROR] module-dump-state failed. Command '['module-dump-state', '1']' returned non-zero exit status 125.
2024-08-11T22:37:10+02:00 [1:ddclient1:backup1] [ERROR] module-backup aborted.
2024-08-11T22:37:10+02:00 [1:ddclient1:systemd] backup1.service: Main process exited, code=exited, status=1/FAILURE
2024-08-11T22:37:10+02:00 [1:ddclient1:systemd] backup1.service: Failed with result 'exit-code'.
2024-08-11T22:37:10+02:00 [1:ddclient1:systemd] Failed to start Backup to Local storage repo.
2024-08-11T22:37:10+02:00 [1:ddclient1:agent@ddclient1] See "systemctl --user status backup1.service" and "journalctl --user -xeu backup1.service" for details.
2024-08-11T22:37:10+02:00 [1:ddclient1:agent@ddclient1] Job for backup1.service failed because the control process exited with error code.
2024-08-11T22:37:10+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/a3c446e8-bd08-43fa-9fae-d11a06df0d5e: action "run-backup" status is "aborted" (1) at step 50start_service_unit
2024-08-11T22:38:08+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/28ae0195-3bcf-4a59-9cc1-89e5ea804037: configure-backup/50write_systemd_units is starting
2024-08-11T22:38:09+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:38:09+02:00 [1:ddclient1:systemd] backup1.timer: Unit to trigger vanished.
2024-08-11T22:38:09+02:00 [1:ddclient1:systemd] backup1.timer: Failed with result 'resources'.
2024-08-11T22:38:09+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/28ae0195-3bcf-4a59-9cc1-89e5ea804037: action "configure-backup" status is "completed" (0) at step 50write_systemd_units
2024-08-11T22:38:46+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/280b0ff5-401f-4837-90b2-65eebf750380: configure-backup/50write_systemd_units is starting
2024-08-11T22:38:47+02:00 [1:ddclient1:agent@ddclient1] Created symlink /home/ddclient1/.config/systemd/user/timers.target.wants/backup2.timer → /home/ddclient1/.config/systemd/user/backup2.timer.
2024-08-11T22:38:47+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:38:47+02:00 [1:ddclient1:systemd] Started Backup to Local storage destination.
2024-08-11T22:38:47+02:00 [1:ddclient1:systemd] Reloading.
2024-08-11T22:38:47+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/280b0ff5-401f-4837-90b2-65eebf750380: action "configure-backup" status is "completed" (0) at step 50write_systemd_units
2024-08-11T22:38:47+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/b961fb18-7c57-4e0f-adea-62c07e8298b5: run-backup/50start_service_unit is starting
2024-08-11T22:38:47+02:00 [1:ddclient1:systemd] Starting Backup to Local storage destination...
2024-08-11T22:38:48+02:00 [1:ddclient1:backup2] Error: no container with name or ID "mariadb-app" found: no such container
2024-08-11T22:38:48+02:00 [1:ddclient1:backup2] [ERROR] module-dump-state failed. Command '['module-dump-state', '2']' returned non-zero exit status 125.
2024-08-11T22:38:48+02:00 [1:ddclient1:backup2] [ERROR] module-backup aborted.
2024-08-11T22:38:48+02:00 [1:ddclient1:systemd] backup2.service: Main process exited, code=exited, status=1/FAILURE
2024-08-11T22:38:48+02:00 [1:ddclient1:systemd] backup2.service: Failed with result 'exit-code'.
2024-08-11T22:38:48+02:00 [1:ddclient1:systemd] Failed to start Backup to Local storage destination.
2024-08-11T22:38:48+02:00 [1:ddclient1:agent@ddclient1] Job for backup2.service failed because the control process exited with error code.
2024-08-11T22:38:48+02:00 [1:ddclient1:agent@ddclient1] See "systemctl --user status backup2.service" and "journalctl --user -xeu backup2.service" for details.
2024-08-11T22:38:48+02:00 [1:ddclient1:agent@ddclient1] task/module/ddclient1/b961fb18-7c57-4e0f-adea-62c07e8298b5: action "run-backup" status is "aborted" (1) at step 50start_service_unit

Clone
Failed. Error messages but at the end it seems the app is cloned.
(Note the test machine is not using letsencrypt).
imatge

Task module/ddclient2/clone-module run failed: {'output': '', 'error': '<7>podman-pull-missing ghcr.io/nethserver/rsync:2.9.1
Trying to pull ghcr.io/nethserver/rsync:2.9.1...
Getting image source signatures
Copying blob sha256:a1936717a190e999fb5b300602d3f134aaa3ee0fb16ec20c3451b10819ada519
Copying blob sha256:82e94dfc42a5139b349717d0ef16203b01c32a0a5c61b3b3c034e6a329868fbf
Copying config sha256:c3ac09eac61c274e067ab9939a72076897887a628f61c1b595b2d9d95f52bf6f
Writing manifest to image destination
c3ac09eac61c274e067ab9939a72076897887a628f61c1b595b2d9d95f52bf6f
<7>podman run --rm --privileged --network=host --workdir=/srv --env=RSYNCD_NETWORK=10.5.4.0/24 --env=RSYNCD_ADDRESS=cluster-localnode --env=RSYNCD_PORT=20033 --env=RSYNCD_USER=ddclient1 --env=RSYNCD_PASSWORD=1245113ca9e5c-b73e-4db6-bfa8-bb22cdd11e16 --env=RSYNCD_SYSLOG_TAG=ddclient2 --volume=/dev/log:/dev/log --volume=/home/ddclient2/.config/state:/srv/state --volume=config:/srv/volumes/config ghcr.io/nethserver/rsync:2.9.1
Importing DDCLIENT_HOST from source instance
Importing DDCLIENT_LOGIN from source instance
Importing DDCLIENT_PASSWORD from source instance
Importing DDCLIENT_PROTOCOL from source instance
Importing DDCLIENT_SERVER from source instance
Traceback (most recent call last):
  File "/home/ddclient2/.config/actions/clone-module/50Traefik", line 12, in <module>
    "lets_encrypt": os.environ["TRAEFIK_LETS_ENCRYPT"] == "True",
                    ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen os>", line 679, in __getitem__
KeyError: \'TRAEFIK_LETS_ENCRYPT\'
', 'exit_code': 1}
<7>podman-pull-missing ghcr.io/nethserver/rsync:2.9.1
Trying to pull ghcr.io/nethserver/rsync:2.9.1...
Getting image source signatures
Copying blob sha256:a1936717a190e999fb5b300602d3f134aaa3ee0fb16ec20c3451b10819ada519
Copying blob sha256:82e94dfc42a5139b349717d0ef16203b01c32a0a5c61b3b3c034e6a329868fbf
Copying config sha256:c3ac09eac61c274e067ab9939a72076897887a628f61c1b595b2d9d95f52bf6f
Writing manifest to image destination
c3ac09eac61c274e067ab9939a72076897887a628f61c1b595b2d9d95f52bf6f
<7>podman run --rm --privileged --network=host --workdir=/srv --env=RSYNCD_NETWORK=10.5.4.0/24 --env=RSYNCD_ADDRESS=cluster-localnode --env=RSYNCD_PORT=20033 --env=RSYNCD_USER=ddclient1 --env=RSYNCD_PASSWORD=1245113ca9e5c-b73e-4db6-bfa8-bb22cdd11e16 --env=RSYNCD_SYSLOG_TAG=ddclient2 --volume=/dev/log:/dev/log --volume=/home/ddclient2/.config/state:/srv/state --volume=config:/srv/volumes/config ghcr.io/nethserver/rsync:2.9.1
Importing DDCLIENT_HOST from source instance
Importing DDCLIENT_LOGIN from source instance
Importing DDCLIENT_PASSWORD from source instance
Importing DDCLIENT_PROTOCOL from source instance
Importing DDCLIENT_SERVER from source instance
Traceback (most recent call last):
  File "/home/ddclient2/.config/actions/clone-module/50Traefik", line 12, in <module>
    "lets_encrypt": os.environ["TRAEFIK_LETS_ENCRYPT"] == "True",
                    ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen os>", line 679, in __getitem__
KeyError: 'TRAEFIK_LETS_ENCRYPT'
4 Likes

good idea, curl can help me I think

yes this is what I could have in mind, I need to create a template system smarter I think, good idea

yes I could think on it, but honestly you will have always a new guy asking to prefill a new provider every time, this is why I implemented the custom mode :stuck_out_tongue:

well it could be handy like you stated for sure

I was lazy this wk :stuck_out_tongue: but for this yes I need a smart template system like jinja, and also a different way to store the information, probably a json file on the disk we could think, or state, install a new instance, the place on the disk is about 90MB

82M /home/ddclient17/
8.3M /var/lib/nethserver/cluster/ui/apps/ddclient17

oups, I missed this, thank

this is relied on the missing IPV6 on your testing server, I could bring a control to enable or disable the ipv6 update to the provider

thank a lot mark for your inputs

3 Likes

add-module Package ddclient · GitHub

backup and clone should be fixed
json validator for the UI

1 Like

more controls in advanced section
retrieve external ipv6/ipv4 address

add-module ghcr.io/stephdl/ddclient:1.0.0-dev.3

for now still one provider per module :confused:

3 Likes

All working (backup, restore, clone, show ip, check interval, avoid IP change request if IP has not changed…)
:+1:

Minor thing: I think the “ddclient webapp” status card can be removed (no virtual host to set / no related webapp). Otherwise it’ll always state “Not configured” which could be misleading on the meaning.

2 Likes

thank @dnutan, it is released with your last fix