Ddclient: Difference between revisions
Cartwatson (talk | contribs) Created basic page for ddclient |
Cartwatson (talk | contribs) m switch to using templates instead of code blocks |
||
| Line 3: | Line 3: | ||
== Installation & Configuration == | == Installation & Configuration == | ||
Below is an example configuration to dynamically update your records in [https://www.cloudflare.com/application-services/products/dns/ Cloudflare DNS] | Below is an example configuration to dynamically update your records in [https://www.cloudflare.com/application-services/products/dns/ Cloudflare DNS] | ||
{{File|3={ | |||
... | |||
services.ddclient = { | |||
enable = true; | |||
interval = "5min"; | |||
protocol = "cloudflare"; | |||
username = "token"; | |||
passwordFile = "/path/to/api.key"; | |||
domains = [ "example.com" ]; | |||
zone = "example.com"; | |||
ssl = true; | |||
}; | |||
... | |||
}|name=configuration.nix|lang=nix}} | |||
{{Nix:option|Interval}} may be set to a time of your choosing, check your DNS provider's documentation to ensure that you aren't sending requests too often. For formatting run <code>man 7 systemd.time</code> or checkout the [https://man7.org/linux/man-pages/man7/systemd.time.7.html online man pages]. | |||
=== Using Your DNS Provider === | === Using Your DNS Provider === | ||
For more in depth info on using ddclient for a specific DNS provider visit the [https://ddclient.net/protocols.html ddclient documentation]. If your provider isn't listed there try searching the [https://github.com/ddclient/ddclient/blob/main/ddclient.in ddclient source code] for your DNS name, modifying the above configuration with the relevant | For more in depth info on using ddclient for a specific DNS provider visit the [https://ddclient.net/protocols.html ddclient documentation]. If your provider isn't listed there try searching the [https://github.com/ddclient/ddclient/blob/main/ddclient.in ddclient source code] for your DNS name, modifying the above configuration with the relevant {{Nixos:option|services.ddclient.protocol|protocol}}, {{Nixos:option|services.ddclient.username|username}}, {{Nixos:option|services.ddclient.passwordFile|passwordFile}}, {{Nixos:option|services.ddclient.domain|domain}}, and {{Nixos:option|services.ddclient.zone|zone}} | ||
As an example, look for a section like the below for your provider to define the necessary attributes. | |||
{{File|3=Configuration variables applicable to the 'cloudflare' protocol are: | |||
protocol=cloudflare ## | protocol=cloudflare ## | ||
server=fqdn.of.service ## defaults to api.cloudflare.com/client/v4 | server=fqdn.of.service ## defaults to api.cloudflare.com/client/v4 | ||
login=service-login ## login email when using a global API key | login=service-login ## login email when using a global API key | ||
password=service-password ## An API token, it must have the permissions "Zone - DNS - Edit" and "Zone - Zone - Read". The Zone resources must be "Include - All zones". | password=service-password ## An API token, it must have the permissions "Zone - DNS - Edit" and "Zone - Zone - Read". The Zone resources must be "Include - All zones". | ||
fully.qualified.host ## the host registered with the service. | fully.qualified.host ## the host registered with the service.|name=ddclient.in|lang=}} | ||
This will describe | |||
This will describe the specific options needed for your DNS provider. | |||
== Troubleshooting == | == Troubleshooting == | ||
Adding | Adding {{Nixos:option|services.ddclient.verbose|2=verbose = true}} to your ddclient config will enable debug logs on the [[systemd]] unit. The debug logs can help verify that the client is able to reach your DNS provider even if it doesn't need to change the DNS records. | ||
== References == | == References == | ||
Revision as of 21:40, 23 January 2026
Ddclient is a program that can dynamically update your DNS records for a variety of providers. This is helpful if you're hosting a server without a static IP address.
Installation & Configuration
Below is an example configuration to dynamically update your records in Cloudflare DNS
{
...
services.ddclient = {
enable = true;
interval = "5min";
protocol = "cloudflare";
username = "token";
passwordFile = "/path/to/api.key";
domains = [ "example.com" ];
zone = "example.com";
ssl = true;
};
...
}
Interval may be set to a time of your choosing, check your DNS provider's documentation to ensure that you aren't sending requests too often. For formatting run man 7 systemd.time or checkout the online man pages.
Using Your DNS Provider
For more in depth info on using ddclient for a specific DNS provider visit the ddclient documentation. If your provider isn't listed there try searching the ddclient source code for your DNS name, modifying the above configuration with the relevant protocol, username, passwordFile, domain, and zone
As an example, look for a section like the below for your provider to define the necessary attributes.
Configuration variables applicable to the 'cloudflare' protocol are:
protocol=cloudflare ##
server=fqdn.of.service ## defaults to api.cloudflare.com/client/v4
login=service-login ## login email when using a global API key
password=service-password ## An API token, it must have the permissions "Zone - DNS - Edit" and "Zone - Zone - Read". The Zone resources must be "Include - All zones".
fully.qualified.host ## the host registered with the service.This will describe the specific options needed for your DNS provider.
Troubleshooting
Adding verbose = true to your ddclient config will enable debug logs on the systemd unit. The debug logs can help verify that the client is able to reach your DNS provider even if it doesn't need to change the DNS records.