ddclient updates dynamic DNS entries for accounts on a wide range of dynamic DNS services.

This is applicable to a wide range of use cases. It’s commonly used when you have an IP address that changes regularly (e.g. on a residential network), that you want to keep service pointing at (e.g. your domain name).


See the GitHub README.


ddclient has two primary means of configuration:

  • (Recommended) The ddclient.conf file, which defaults to /etc/ddclient/ddclient.conf.
  • Passing in arguments via the command line.

There are three key pieces to configuring ddclient:


A typical configuration file looks like:

# General config

# Router

# Protocol

With this config, executing ddclient would start a daemon that every 300 seconds would:

  1. Get your IPv4 address from the ipify web service.
  2. Login to your dyndns account with the given username and password, and update the domain to your current IPv4 address.

You can set up ddclient to run on automatically using other packages on your system, such as systemd, cron, dhclient, dhcpc and others. There are additional sample startup scripts in the GitHub repository.

Using environment variables

As of version 3.11.0_1, ddclient supports using environment variables inside the configuration file. By appending ‘_env’ to a parameter, ddclient will interpret the value of that parameter as the name of an environment variable and use the value of that environment variable as the configuration value. This allows to keep sensitive information such as the login or password outside of the configuration file.


This example config file will use the value of the environment variables DDCLIENT_LOGIN and DDCLIENT_PASSWORD as the login and password for the domain respectively.

Command-line arguments

For simplicity, it’s recommended you use the ddclient.conf file over command line arguments. If you can’t use the default location, you can use the file argument only to read config from a different file, e.g. ddclient -file ddclientCustom.conf

However, any arguments can also be provided via the command line when invoking ddclient. For example:

ddclient -daemon 300 -protocol dyndns2 -login myUsername -password myPassword

ddclient prioritizes command line arguments, then falls back to ddclient.conf, then falls back to in-built defaults.


If you need extra help, want to report a bug, or submit a feature request, create a GitHub issue. Before posting, check it is not a duplicate and the problem is present on the latest version of ddclient.

If you want to contribute code to ddclient, raise a pull request on GitHub.