ddclient #3

Supports: precise
Add to new model


This package provides a client to update dynamic IP addresses with
several dynamic DNS service providers, such as DynDNS.com. This makes
it possible to use a fixed hostname (such as myhost.dyndns.org) to
access a machine with a dynamic IP address. This client supports both
dynamic and (near) static services, as well as MX record and
alternative name management. It caches the address, and only attempts
the update when it has changed.

Tired of cutting and pasting instance ip addresses or hostnames?
Hate having to manually update DNS entries or client applications?

Setup dynamic DNS to point to your services in four easy steps!

  1. Set configuration options for your Dynamic DNS provider, username, password and zone name.
  2. Use a hostname as your servicename
  3. Add a relation to ddclient (dynamic DNS client)
  4. Profit, you just updated your dynamic DNS hostname!


First, specify what ddclient dynamic DNS provider you want to use.
You can find out which providers ddclient supports from the ddclient help: ddclient -h
Set your authentication information and zone information (defaults to zoneedit), then deploy.

juju set ddclient "login=dduffey"
juju set ddclient "password=fakepassword"
juju set ddclient "zone=davidduffey.com"
juju deploy ddclient

To override the defaults and use a different supported dynamic DNS provider, e.g. no-ip.com:

juju set ddclient "protocol=noip"
juju set ddclient "server=dynupdate.no-ip.com"

Second, deploy any services as you normally would:

juju deploy wordpress blog
juju deploy mediawiki wiki
juju expose blog
juju expose wiki

Finally, add relationships that you want to update w/ dynamic dns.
This will use the service name and the zone name to register to the provider.

juju add-relation ddclient blog
juju add-relation ddclient wiki

This will update your dynamic dns provider's entries to point to those
services' publicly accessible address. You can verify (depending on
your DNS services' TTL) with:

dig +trace +answer blog.davidduffey.com


Instead of setting the username and password at the command line
you can create a yaml file and pass it to juju. For example,
create ddclient.yaml with the following,

login: dduffey
password: fakepassword
zone: davidduffey.com
protocol: zoneedit
server: www.zoneedit.com

and then execute

juju deploy --config ddclient.yaml ddclient


Original ddclient charm by David Duffey, Canonical.
Updated charm by Darryl Weaver, Canonical.

Known Limitations

This charm currently will only register the first service unit's public address with the Dynamic DNS provider.
Scaling to multiple units is not supported.


(string) Specifies how often the daemon checks for an ip change. The daemon interval can be specified as seconds (600s), minutes (5m), hours (1h) or days (1d). Defaults to 300 seconds. A value of zero means it not daemonize and only check on relation changes
(string) user login name
(string) user password
(string) update protocol used
(string) dynamic dns server to update on
(string) do updates over encrypted SSL connection
(string) how the ip address is obtained
(string) obtain IP address from this IP checking page or provider
(string) skip any IP addreses before this pattern on the page
IP Address
(string) Zone to add dynamic service names to