Introduction
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).
Installation
See the GitHub README.
Configuration
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:
- General settings
- Routers: where should ddclient find your IP? For example, ipify, or one of 20+ others.
- Protocols: what should ddclient update when your IP changes? For example, DuckDNS, Cloudflare, or one of 30+ others.
Example
A typical configuration file looks like:
# General config
daemon=300
# Router
usev4=webv4,webv4=ipify-ipv4
# Protocol
protocol=dyndns2
login=myUsername
password=myPassword
myhost.dyndns.org
With this config, executing ddclient
would start a daemon that every 300 seconds would:
- Get your IPv4 address from the ipify web service.
- Login to your dyndns account with the given username and password, and update the
myhost.dyndns.org
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.
login_env=DDCLIENT_LOGIN
password_env=DDCLIENT_PASSWORD
myhost.dyndns.org
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 myhost.dyndns.org 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 myhost.dyndns.org
ddclient prioritizes command line arguments, then falls back to ddclient.conf
, then falls back to in-built defaults.
Support
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.