No description
Find a file
Ryan Harg 7e5dca5ebd
Some checks failed
ci/woodpecker/push/build Pipeline failed
ci/woodpecker/tag/push-image Pipeline was successful
[maven-release-plugin] prepare release v1.0.7
2024-11-29 14:38:22 +01:00
.mvn/wrapper Initial 2024-11-26 14:54:30 +01:00
.woodpecker Fix tag name 2024-11-29 09:25:13 +01:00
src Update tests 2024-11-29 14:32:33 +01:00
.dockerignore Fix dns resolver property 2024-11-29 09:53:09 +01:00
.gitignore Initial 2024-11-26 14:54:30 +01:00
mvnw Initial 2024-11-26 14:54:30 +01:00
mvnw.cmd Initial 2024-11-26 14:54:30 +01:00
pom.xml [maven-release-plugin] prepare release v1.0.7 2024-11-29 14:38:22 +01:00
README.md Implement updating of DuckDNS 2024-11-29 13:54:55 +01:00

ddnsclient

This application can be use to update dynamic hostnames. Currently it implements the following DynDNS providers:

  • ddnss.de
  • duckdns.org

This project uses Quarkus.

Configuration

ddnsclient requires a configuration in json format. It expects to find a file config.json in its working directory. The configuration can contain a list of update targets:

[
  {
    "provider": "<dyndns-provider>",
    "username" : "<username>",
    "password" : "<password>",
    "token": "<update-token>",
    "hostname": "<dynamic-hostname>"
  }
]

Depending on your dyndns provider you can either use username/password or token in a configuration.

ddnssclient can also be configured using some properties or environment variables

Property Environment variable Value Default
ddnsclient.interval DDNSCLIENT_INTERVAL e.g. "3600s", "60m", "1h" "5m"
ddnsclient.ip-provider DDNSCLIENT_IP_PROVIDER an ip lookup provider (see below) null (random)
ddnsclient.dns.resolver DDNSCLIENT_DNS_RESOLVER e.g. "9.9.9.9", "1.1.1.1" "9.9.9.9"
ddnsclient.backoff-duration DDNSCLIENT_BACKOFF_DURATION e.g. "60s", "1m" "300s"
ddnssclient.config-file DDNSCLIENT_CONFIG_FILE e.g. "/path/to/your/config.json" "config.json"

IP lookup

In order to update a hostname, ddnsclient needs to know about the current public ip addresses of the machine it runs on. For this, it uses one of the following ip lookup providers:

  • ifconfig.me
  • ipify.org
  • ident.me
  • nnev.de
  • icanhazip.com

If no specific provider has been configured (see above), each request chooses a random provider from this list.