ddns - Dynamic DNS
A self-hosted Dynamic DNS solution similar to DynDNS or NO-IP based on the PowerDNS Remote Backend.
⚠️ ⚠️ ⚠️ Note regarding hosted version at
ddns service with custom hosts under the
d.pboehm.de domain (e.g
test.d.pboehm.de) is not available
anymore! I did not use this service for quite some time and recently there were some issues which resulted in downtime
and expiration of all registered hosts.
There is at least one other hosted version of
can be found via Google
or you can host it yourself as described below.
How can I update my IP if it changes?
ddns is built around a small webservice, so that you can update your IP address simply by calling
an URL periodically through
curl. Hosts that haven't been updated for 10 days will
be automatically removed. This can be configured in your own instance.
An API similar to DynDNS/NO-IP has not been implemented yet.
- A custom domain where the registrar allows setting
NSrecords for subdomains. This is important because not all DNS providers support this.
- A server with docker and docker-compose installed
- The following ports should be opened in the firewall:
For the domain you want to use with
example.net in the following sections, please adjust this to your domain)
you have to create the following two DNS records:
AAAArecord pointing to the server
ddnswill be running on. This record will be used for accessing the
ddnsfrontend in your browser or via
curl. It is also the target for the corresponding
NSrecord pointing to the previously created
ddns.example.netrecord. This will delegate all subdomains under
d.example.netto the PowerDNS server running on
Configuring the Setup
The setup included in this repository contains all the components described above and uses caddy as a web server, because it provides automatic HTTPS using Lets Encrypt.
git clone firstname.lastname@example.org:pboehm/ddns.git cd ddns/docker cp docker-compose.override.yml.sample docker-compose.override.yml
Please adjust the settings in
docker-compose.override.yml marked with the
#<<< .... comments as follows:
- adjust the domain part in lines marked with
# <<< ADJUST DOMAINaccording to your DNS-Setup
- insert your email address in lines marked with
# <<< INSERT EMAILwhich is required for getting certificates from Lets Encrypt
Finally execute the following
docker-compose command, which creates 4 containers in detached mode which are also
started automatically after reboot. For updating an existing installation use the same command because it automatically
rebuilds the containers.
docker-compose --project-name ddns up -d --build