linux cron

if your linux install is running a crontab, then you can use a cron job to keep updated
we can see this with

ps -ef | grep cr[o]n

if this returns nothing - then go and read up how to install cron for your distribution of linux.
also confirm that you have curl installed, test this by attempting to run curl

curl

if this returns a command not found like error - then find out how to install curl for your distribution.
otherwise lets get started and make a directory to put your files in, move into it and make our main script

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

now save the file (in vi hit ESC then :wq! then ENTER)
this script will make a https request and log the output in the file duck.log
now make the duck.sh file executeable

chmod 700 duck.sh

next we will be using the cron process to make the script get run every 5 minutes

crontab -e

copy this text and paste it at the bottom of the crontab

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

now save the file (CTRL+o then CTRL+x)
lets test the script

./duck.sh

this should simply return to a prompt
we can also see if the last attempt was successful (OK or bad KO)

cat duck.log

if it is KO check your Token and Domain are correct in the duck.sh script

linux GUI

the linux GUI version requires zenity, curl & cron to be installed.
install zenity, curl & cron if it is not installed already.
on debian based linux systems open a terminal and enter

sudo apt-get install zenity cron curl

download the linux GUI version to your users home folder
to run the script open a terminal window and enter:

chmod +x duck-setup-gui.sh
./duck-setup-gui.sh

enter your domain
enter your token
There will now be a log file and shell script (which you can test manually) installed at something like

~/duckdns/duck.log
~/duckdns/duck.sh

The shell script will have been added to a cron that is called every 5 minutes as your user, you can view this with

crontab -l

DotNet Core Script

the DotNew Core Script should work on any system that can run DotNet: Windows, OSX, Linux systems
the Project includes a full set of instructions linux Shell version

windows gui

this is an Open Source tray based service that was created by Joe Jaro.
you can either use the EXE to install the software and it will deal with starting on login, or you can use the JAR file directly, but you will have to make it start-up when you want it to be running .

Step 1 - download & install the software from www.etx.ca

download the software from http://www.etx.ca/
install the client and start it, you should see a new Tray Icon appear (in Windows 7 you may need to make it always visible, by right clicking on your tray and changing the settings)

Step 2 - configure the software for your chosen domain

right click on the tray and choose DuckDNS Settings you should now see the settings screen
on this screen you must change your token and domain to be the one you want to update
then click OK to apply the new settings

Step 3 - check it works

you should now see the new tray icon, when you hover the mouse over it you will see some details of its current status.

windows script

these instructions are for Windows 7, the vbs script should work in Vista, Windows 8 and even XP
however you will have to work out the differences in the Task Scheduler between different versions of Windows.

Step 1 - Choose your Domain

you must change your token and domain to be the one you want to update

Step 2 - Creating the script

2.1 Go to 'Start' and select Computer (Windows XP select My Computer)2.2 Go into C:\users\YOUR-USERNAME (Windows XP: C:\Documents and Settings\YOUR-USERNAME)2.3 Right click in an empty spot and go to NEW > Text Document. Name the file Duckdns and open the file.2.4 Highlight all of the green text below and RIGHT CLICK > COPY

2.5 Go back to the text document and select Paste. Save the document and close it.2.6 Replace the .TXT at the end of the text document file with .VBS and press enter. Select Yes to the extension popup.NOTE: If you can't see the .TXT at the end of the file you will need to turn on 'File Name Extensions'. This can be done by:Windows 8: Open an explorer window such as Computer or Documents folder by pressing CTRL + E keyâs on your keyboard. Along the top bar there is an option called VIEW, select it and to the right hand side place a tick in the box that reads "File Name Extensions". Go back to your file and perform step 2.6.Windows 7 / XP: Go to Start and select Computer (My Computer for XP) then along the top of the window find and select Tools > Folder Options and go to the View tab. Find and de-select the "Hide extensions for known file types". Click OK, go back to your file and perform step 2.6.

Step 3 - Creating a Task

This task is to automatically run the script file you have just created. Please follow the instructions based on your edition of Windows.Windows 7 and 8:
To open Task Scheduler on Windows 8 and 8.1: Click on the Start menu (Windows 8.1) or press your Windows key on your keyboard. Start typing the words CONTROL PANEL and select Control Panel from the right hand side when the option appears. Go in to Administrative Tools and open Task Scheduler.
To open Task Scheduler on Windows 7: Click Start and select Control Panel. Go in to Administrative Tools and open Task Scheduler.
Select Create Task from the right column. Enter "DuckDns Updater" in the Name field then select the Triggers tab and click New.
Set the Trigger to be Daily, starting at 12:00:01AM and tick the box to 'Repeat task every:' and set it to 5 minutes. (Refer to image below). Click OK when done.
Next go to the Actions tab and select New. In the ']Program/script' field select the Browse button. In the new window that opened, click on âThis PCâ on the left column and then go to C:\Users\YOUR-USERNAME and click once on the script you created before. Click OPEN on the bottom of the window then click OK and OK again on the Create Task window.Windows XP:
Click Start, go to Control Panel and open 'Schedule Tasks'. Select Add a new Task from the top of the window.
Click Next on the new window that opens then select Browse when presented with the window shown below.
Click on My Computer on the left column and go to C:\Documents and Settings\YOUR-USERNAME
Click once on your script file and select Open from the bottom right.
On the next window select 'When I Log On' and click Next. Leave the username and password boxes as they are and select Next, then Select Finish.

or

osx

if you are not familiar with using the terminal on OSX consider using the JAR file (from the windows-gui) from http://www.etx.ca/

osx (10.8 or older) by default does have cron installed,
when you open the crontab, a new crontab will be setup for your user
lets get started and make a directory to put your files in, move into it and make our main script
these instructions are for the user administrator change the paths to match your user
open a new terminal, it will be in your home directory

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

raspberrypi

then lets make a directory to put your files in, move into it and make our main script

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

now save the file (in vi hit ESC then :wq! then ENTER)
this script will make a https request and log the output in the file duck.log
now make the duck.sh file executeable

chmod 700 duck.sh

next we wil be using the cron process to make the script get run every 5 minutes

crontab -e

copy this text and paste it at the bottom of the crontab

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

now save the file (CTRL+o then CTRL+x)
lets test the script

./duck.sh

this should simply return to a prompt
we can also see if the last attempt was successful (OK or bad KO)

cat duck.log

if it is KO check your Token and Domain are correct in the duck.sh script
The final task for Raspbmc is to make the cron autostart on reboot for Raspbian you don't need to do this
first we simply manualy start the crontab

sudo service cron start

Then to automatically start cron on reboot, in Raspmbc you check the option in the Programs Raspbmc menu in XBMC

raspbmc - raspberrypi

if you are using the XMBC build for raspberrypi (http://www.raspbmc.com/) then you need additional changes
the Raspbmc has a slightly more hardened SSH server, this would prevent you from SSHing onto your pi from the internet.
the changes below will allow you to connect via SSH from an external network
before we modify the access, we must change the password for user pi

lets make a directory to put your files in, move into it and make our main script

cd ~
mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

now save the file (in vi hit ESC then :wq! then ENTER)
this script will make a https request and log the output in the file duck.log
now make the duck.sh file executeable

chmod 700 duck.sh

next we will be using the cron process to make the script get run every 5 minutes

crontab -e

copy this text and paste it at the bottom of the crontab

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

now save the file (CTRL+o then CTRL+x)
lets test the script

./duck.sh

this should simply return to a prompt
we can also see if the last attempt was successful (OK or bad KO)

cat duck.log

if it is KO check your Token and Domain are correct in the duck.sh script
The final task for Raspbmc is to make the cron autostart on reboot for Raspbian you don't need to do this
first we simply manually start the crontab

sudo service cron start

Then to automatically start cron on reboot, in Raspmbc you check the option in the Programs Raspbmc menu in XBMC

ec2 (linux)

on ec2 the current ip can be found using the command ec2-metadata --public-ipv4
this means that we only need to update your record when it does change
because ec2 instances get assigned an ip on boot we need to force the ip in the curl command
so first lets login to your ubuntu ec2 instance over ssh as ubuntu user

then lets make a directory to put your files in, move into it and make our main script

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

if it is KO check your Token and Domain is correct in the duck.sh script
finally we make the duck daemon auto start on boot up

sudo ln -s ~/duckdns/duck_daemon.sh /etc/rc2.d/S10duckdns

as you can see the script is all set to start as the instance boots

ls -la /etc/rc2.d/

the final test is to kill the process running and start it as the bootup would

pkill duck
sudo /etc/rc2.d/S10duckdns

we can now see if its running

ps -ef | grep duck

OpenWrt

the first part of the instructions are for people who want an easier install, but will accept http
if you want to use https, then you need to follow the further instructions
the wiki at http://wiki.openwrt.org/doc/howto/ddns.client may be helpful if you have issues
you must change your token and domain to be the one you want to update
we install the ddns packages

tomatoUSB

these instructions are for tomatoUSB
log into the webpanel and visit the Basic then DDNS section
complete the Dynamic DNS 2 section with the URL
you must change your token and domain to be the one you want to update

add permissions for: read, write, policy, test
don't forget to change interface name, domains and token according to your configuration!
don't forget to set scheduler!
don't forget to enable IP Cloud (if you can't enable IP Cloud or are using an earlier version than RouterOS v6.14, use "newIP [/ip address get [find interface="ether1-gateway"];" instead of "newIP [/ip cloud get public-address];" in your script.

fritzbox

these instructions are for fritzbox router
you must change your token and domain to be the one you want to update
some firmwares (Fritz!Box 7170) don't support HTTPS and do not like the &ip=<ipaddr> part of the URL - use the alternative URL if the HTTPS one does not work
on the web frontend of your fritzbox go to the page where you setup dyndns services and select custom service.
enter the following update Url

zte h108n

these instructions are for the zte h108n router
you must change your token and domain to be the one you want to update

the zteh108n has a DDNS panel in the Applications section of the web interface.
the actual DDNS scheme it uses is not supported by us, however we can use it to make plain http(s) requests.

you must add the ? at the end of the URL so that the extra text that is added by the router is ignored.
use the following URL (the pattern https://duckdns.org/update/exampledomain/yourtoken?)
you can add an additional ipaddress if you want to force a value (https://duckdns.org/update/exampledomain/yourtoken/ipaddress?)

freenas

these instructions are for any installation of freenas
you must change your token and domain to be the one you want to update
Login to your Freenas server GUI
Go to System->Cron Jobs->Add New Cron Job
Set up the new cron job.
Set it run as 'nobody'
You can have it at 1 minute past the hour, every 12 hours (or less), every day of the week.
The command to run is

you must change your token and domain to be the one you want to update
The configuration you will need is

domain : exampledomain
token : a7c4d0ad-114e-40ef-ba1d-d217904a50f2

android

these instructions are for people wanting to use an Android based OS to keep their duckdns record up-to date

you could simply have an old android device - connected to your home network keeping your DuckDNS record up-to date, or you may run some service on your android device on a mobile network and want to reach it by a duckdns domain.

the client is provided by http://www.etx.ca/ and is download-able from the Play Market as you would expect.

pfSense

these instructions are for pfSense open source firewall
on the web frontend of pfSense go to the page where you setup dyndns services and select custom service.
enter the following Update Url

GnuDIP.http

these instructions are for GnuDIP.http
many provided ADSL routers have this protocol as an option, such as the Huawei HG533.
on the web frontend of the router (usually http://192.168.1.1 with username and password - admin) go to the Advanced Settings and select DDNS.
now complete the configuration form and submit the configuration.

allied telesis

these instructions are for allied telesis AT-AR450S
you must change your token and domain to be the one you want to update
the AT-AR450S and some of the other models allow you to make plain http(s) requests.
use the following URL (the pattern https://duckdns.org/update/exampledomain/yourtoken)
you can add an additional ipaddress if you want to force a value (https://duckdns.org/update/exampledomain/yourtoken/ipaddress)

Windows C# - Visual Studio 2013

linux bsd cron

if your linux install is running a crontab, then you can use a cron job to keep updated
we can see this with

ps -ef | grep cr[o]n

if this returns nothing - then go and read up how to install cron for your distribution of linux.
also confirm that you have curl installed, test this by attempting to run curl

curl

if this returns a command not found like error - then find out how to install curl for your distribution.
otherwise lets get started and make a directory to put your files in, move into it and make our main script

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode

linux netcat cron

this netcat version is for systems that do not have wget or curl available

THIS VERSION IS OVER HTTP : USE THIS ONLY IF YOU HAVE NO WAY TO USE A SECURE METHOD

if your linux install is running a crontab, then you can use a cron job to keep updated
we can see this with

ps -ef | grep cr[o]n

if this returns nothing - then go and read up how to install cron for your distribution of linux.
also confirm that you have curl installed, test this by attempting to run curl

curl

if this returns a command not found like error - then find out how to install curl for your distribution.
otherwise lets get started and make a directory to put your files in, move into it and make our main script

mkdir duckdns
cd duckdns
vi duck.sh

now copy this text and put it into the file (in vi you hit the i key to insert, ESC then u to undo)
you must change your token and domain to be the one you want to update
you can pass a comma separated (no spaces) list of domains
you can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)
hit ESC then use use arrow keys to move the cursor x deletes, i puts you back into insert mode