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 echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K - 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 if your linux install is running a crontab, then you can use a cron job to keep updatedwe can see this withif this returns nothing - then go and read up how to install cron for your distribution of linux.also confirm that you haveinstalled, test this by attempting to run curlif 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 scriptnow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainsyou can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)hitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthenthis script will make a https request and log the output in the file duck.lognow make the duck.sh file executeablenext we will be using the cron process to make the script get run every 5 minutescopy this text and paste it at the bottom of the crontabnow save the file (thenlets test the scriptthis should simply return to a promptwe can also see if the last attempt was successful (or badif it is KO check your Token and Domain are correct in thescript

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

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 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 enterdownload the linux GUI version to your users home folderto run the script open a terminal window and enter:enter your domainenter your tokenThere will now be a log file and shell script (which you can test manually) installed at something likeThe shell script will have been added to a cron that is called every 5 minutes as your user, you can view this with

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

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

windows gui this is an

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

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.



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 .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)right click on the tray and chooseyou should now see the settings screenon this screen youchange yourandto be the one you want to updatethen clickto apply the new settingsyou 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

Call LogEntry() Sub LogEntry() On Error Resume Next Dim objRequest Dim URL URL = "https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" Set objRequest = CreateObject("Microsoft.XMLHTTP") objRequest.open "GET", URL , false objRequest.Send Set objRequest = Nothing End Sub 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. these instructions are for, the vbs script should work in Vista, Windows 8 and even XPhowever you will have to work out the differences in thebetween different versions of Windows.youchange yourandto be the one you want to updateGo to 'Start' and select Computer (Windows XP select My Computer)Go into C:\users\YOUR-USERNAME (Windows XP: C:\Documents and Settings\YOUR-USERNAME)Right click in an empty spot and go to NEW > Text Document. Name the file Duckdns and open the file.Highlight all of the green text below and RIGHT CLICK > COPYGo back to the text document and select Paste. Save the document and close it.Replace the .TXT at the end of the text document file with .VBS and press enter. Select Yes to the extension popup.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: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.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.This task is to automatically run the script file you have just created. Please follow the instructions based on your edition of Windows.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.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-USERNAMEClick 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.

windows powershell these scripts are for Windows Powershell

Step 1 - Choose a Script Tested in Windows 8 - Powershell 4 - script by - Bryan Childs

https://github.com/godeater/Enable-DuckDns or Tested in Windows Vista - Powershell 2 - script by - Adam Taylor

https://github.com/ataylor32/duckdns-powershell these scripts are forTested in Windows 8 - Powershell 4 - script by - Bryan ChildsTested in Windows Vista - Powershell 2 - script by - Adam Taylor

osx if you are not familiar with using the terminal on OSX consider using the JAR file (from the windows-gui) from



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 echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o /Users/administrator/duckdns/duck.log -K - 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 * * * * /Users/administrator/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 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 userlets get started and make a directory to put your files in, move into it and make our main scriptthese instructions are for the userchange the paths to match your useropen a new terminal, it will be in your home directorynow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainsyou can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)hitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthenthis script will make a https request and log the output in the file duck.lognow make the duck.sh file executeablenext we will be using the cron process to make the script get run every 5 minutescopy this text and paste it at the bottom of the crontabnow save the file (thenlets test the scriptthis should simply return to a promptwe can also see if the last attempt was successful (or badif it is KO check your Token and Domain are correct in thescript

osx homebrew open a new terminal, it will be in your home directory

brew tap jzelinskie/duckdns brew install duckdns ln -sfv /usr/local/opt/duckdns/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.duckdns.plist create a new text file at

$HOME/.duckdns you must change your token and domain to be the one you want to update

paste these contents into the file

DOMAIN="exampledomain" TOKEN="a7c4d0ad-114e-40ef-ba1d-d217904a50f2" open a new terminal, it will be in your home directorycreate a new text file atyouchange yourandto be the one you want to updatepaste these contents into the file

IP Monitor for OS X

It supports DuckDNS and other dynamic DNS providers.

IP Monitor v2.0 update introduced IPv6 support.



IP Monitor is available from





IP Monitor is an easy to use dynamic DNS update client for OS X.It supports DuckDNS and other dynamic DNS providers.IP Monitor v2.0 update introduced IPv6 support.IP Monitor is available from Apple Mac App Store around the world.

RealDNS for iOS and OSX



they support DuckDNS, have a look on the



RealDNS is a client for iOS andthey support DuckDNS, have a look on the iTunes Store

raspberrypi if you are running

first lets login to your raspberrypi over ssh ssh pi@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 echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K - 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

if you are running http://www.raspbmc.com/ then you must follow the raspbmc instructionsfirst lets login to your raspberrypi over sshthen lets make a directory to put your files in, move into it and make our main scriptnow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainsyou can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)hitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthenthis script will make a https request and log the output in the file duck.lognow make the duck.sh file executeablenext we wil be using the cron process to make the script get run every 5 minutescopy this text and paste it at the bottom of the crontabnow save the file (thenlets test the scriptthis should simply return to a promptwe can also see if the last attempt was successful (or badif it is KO check your Token and Domain are correct in thescriptThe final task for Raspbmc is to make the cron autostart on reboot for Raspbian you don't need to do thisfirst we simply manualy start the crontabThen 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 (

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 ssh pi@192.168.1.160 (password is raspberry) passwd (password is raspberry) smbpasswd good, ok the next change is to adjust the iptables config these are the rules preventing access for port 22 sudo su vi /etc/network/if-up.d/secure-rmc now move to the botom of the file (SHIFT + G) and change the 2 lines to look like the 4 lines below

(in vi you hit the i key to insert, ESC then u to undo) iptables -A INPUT -s $NETMASK -i $IFACE -j ACCEPT iptables -A INPUT -p tcp --dport 22 -i $IFACE -j ACCEPT iptables -A INPUT -p udp --dport 22 -i $IFACE -j ACCEPT iptables -A INPUT -i $IFACE -j DROP last 2 jobs - install curl and reboot your pi sudo apt-get update sudo apt-get install curl sudo reboot now 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 echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K - 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

if you are using the XMBC build for raspberrypi ( http://www.raspbmc.com/ ) then you need additional changesthe 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 networkbefore we modify the access,good, ok the next change is to adjust thethese are the rules preventing access for port 22now move to the botom of the file (SHIFT + G) and change the 2 lines to look like the 4 lines below(in vi you hit thekey to insert,thento undo)last 2 jobs - install curl and reboot your pilets make a directory to put your files in, move into it and make our main scriptnow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainsyou can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)hitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthenthis script will make a https request and log the output in the file duck.lognow make the duck.sh file executeablenext we will be using the cron process to make the script get run every 5 minutescopy this text and paste it at the bottom of the crontabnow save the file (thenlets test the scriptthis should simply return to a promptwe can also see if the last attempt was successful (or badif it is KO check your Token and Domain are correct in thescriptThe final task for Raspbmc is to make the cron autostart on reboot for Raspbian you don't need to do thisfirst we simply manually start the crontabThen 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 ssh -i <YOUR PEM KEY> user@ec2-00-00-00-00.us-west-2.compute.amazonaws.com 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 #!/bin/bash current="" while true; do latest=`ec2-metadata --public-ipv4` echo "public-ipv4=$latest" if [ "$current" == "$latest" ] then echo "ip not changed" else echo "ip has changed - updating" current=$latest echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K - fi sleep 5m done now save the file (in vi hit ESC then :wq! then ENTER)

now make the duck.sh file executeable and then create the next script file chmod 700 duck.sh vi duck_daemon.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) #!/bin/bash su - ubuntu -c "nohup ~/duckdns/duck.sh > ~/duckdns/duck.log 2>&1&" now save the file (in vi hit ESC then :wq! then ENTER)

now make the duck_daemon.sh file executeable and change its permissions chmod +x duck_daemon.sh sudo chown root duck_daemon.sh sudo chmod 744 duck_daemon.sh to test this we must run it as root sudo ./duck_daemon.sh this should simply return to a prompt

we can see it is running with ps -ef | grep duck 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 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 on ec2 the current ip can be found using the commandthis means that we only need to update your record when it does changebecause 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 userthen lets make a directory to put your files in, move into it and make our main scriptnow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainshitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthennow make the duck.sh file executeable and then create the next script filenow copy this text and put it into the file (in vi you hit thekey to insert,thento undo)now save the file (in vi hitthenthennow make the duck_daemon.sh file executeable and change its permissionsto test this we must run it as rootthis should simply return to a promptwe can see it is running withwe can also see if the last attempt was successful (or badif it is KO check your Token and Domain is correct in thescriptfinally we make the duck daemon auto start on boot upas you can see the script is all set to start as the instance bootsthe final test is to kill the process running and start it as the bootup wouldwe can now see if its running

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

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

we install the ddns packages opkg update opkg install ddns-scripts then setup the ddns-scripts ddns-scripts edit the config at /etc/config/ddns

config service "duckdns" option enabled "1" option domain "exampledomain.duckdns.org" option username "exampledomain" option password "a7c4d0ad-114e-40ef-ba1d-d217904a50f2" option ip_source "network" option ip_network "wan" option force_interval "72" option force_unit "hours" option check_interval "10" option check_unit "minutes" #option ip_source "interface" #option ip_interface "eth0.1" #option ip_source "web" #option ip_url "http://ipv4.wtfismyip.com/text" option update_url "http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]" #option use_https "1" #option cacert "/etc/ssl/certs/cacert.pem" now start it up sh . /usr/lib/ddns/dynamic_dns_functions.sh # note the leading period start_daemon_for_all_ddns_sections "wan" exit we can now test the script by running the command /usr/lib/ddns/dynamic_dns_updater.sh duckdns if you want to use https - you will need to download Start SSL's ca bundle and install it

first we install curl and download the PEM file opkg update opkg install curl mkdir -p /etc/ssl/certs curl -k https://certs.secureserver.net/repository/sf_bundle-g2.crt > /etc/ssl/certs/ca-bundle.pem then you need to re-alter the config at /etc/config/ddns (uncomment these 2 lines)

option use_https "1" option cacert "/etc/ssl/certs/ca-bundle.pem" refer to the wiki on debugging etc the first part of the instructions are for people who want an easier install, but will accept httpif you want to use https, then you need to follow the further instructionsthe wiki at http://wiki.openwrt.org/doc/howto/ddns.client may be helpful if you have issuesyouchange yourandto be the one you want to updatewe install thepackagesthen setup theedit the config atnow start it upwe can now test the script by running the commandif you want to use https - you will need to download Start SSL's ca bundle and install itfirst we install curl and download the PEM filethen you need to re-alter the config at(uncomment these 2 lines)refer to the wiki on debugging etc http://wiki.openwrt.org/doc/howto/ddns.client

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

https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2 You can have either HTTP or HTTPS as your choosen protocol



these instructions are forlog into the webpanel and visit thethensectioncomplete thesection with the URLyouchange yourandto be the one you want to updateYou can have either HTTP or HTTPS as your choosen protocol

mikrotik recent forum posts



these instructions are for

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



Newer update to the script

:global actualIP value=[/ip address get [find where interface=MATRIX] value-name=address]; :global actualIP value=[:pick $actualIP -1 [:find $actualIP "/" -1] ]; :if ([:len [/file find where name=ipstore.txt]] < 1 ) do={ /file print file=ipstore.txt where name=ipstore.txt; /delay delay-time=2; /file set ipstore.txt contents="0.0.0.0"; }; :global previousIP value=[/file get [find where name=ipstore.txt ] value-name=contents]; :if ($previousIP != $actualIP) do={ :log info message=("Try to Update DuckDNS with actual IP ".$actualIP." - Previous IP are ".$previousIP); /tool fetch mode=https keep-result=yes dst-path=duckdns-result.txt address=[:resolve www.duckdns.org] port=443 host=www.duckdns.org src-path=("/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=".$actualIP); /delay delay-time=5; :global lastChange value=[/file get [find where name=duckdns-result.txt ] value-name=contents]; :global previousIP value=$actualIP; /file set ipstore.txt contents=$actualIP; :if ($lastChange = "OK") do={:log warning message=("DuckDNS update successfull with IP ".$actualIP);}; :if ($lastChange = "KO") do={:log error message=("Fail to update DuckDNS with new IP ".$actualIP);}; }; Older version of the script

:global currentIP; :local newIP [/ip address get [find interface="INTERFACENAMEHERE"] address]; :if ($newIP != $currentIP) do={ :log info "IP address $currentIP changed to $newIP"; :set currentIP $newIP; /tool fetch mode=https url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=$newIP" dst-path=duckdns.txt; :local result [/file get duckdns.txt contents]; :log info "Duck DNS update result: $result"; } 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.

recent forum posts https://forum.mikrotik.com/viewtopic.php?f=9&t=84140# these instructions are for mikrotik routers youchange yourandto be the one you want to updateNewer update to the scriptOlder version of the scriptadd permissions for: read, write, policy, testdon't forget to changeandaccording 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

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 https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=<ipaddr>&ipv6=<ip6addr> the domain is your subdomain on DuckDNS.

the password is your token.

the username should be set to "none".



use this alternative url (confirmed to work on Fritz!Box 7170) if your IP does not auto update http://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip= these instructions are for fritzbox router youchange yourandto be the one you want to updatesome firmwares (Fritz!Box 7170) don't support HTTPS and do not like the &ip= part of the URL - use the alternative URL if the HTTPS one does not workon theof your fritzbox go to the page where you setupand selectenter the following update Urlthe domain is your subdomain on DuckDNS.the password is your token.the username should be set to "none".use this(confirmed to work on Fritz!Box 7170) if your IP does not auto update

zte h108n these instructions are for the

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?)



Enable : Checked Service Name : dyndns Custom Server : www.duckdns.org Custom URL : /update/exampledomain/a7c4d0ad-114e-40ef-ba1d-d217904a50f2? Hostname : exampledomain Provider : NA Password : NA here is what the section looks like in the web interface (make sure you follow the steps above)



these instructions are for the zte h108n routeryouchange yourandto be the one you want to updatethe 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?)here is what the section looks like in the web interface (make sure you follow the steps above)

freenas there is a good online guide at :



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 /usr/local/bin/curl http://www.duckdns.org/update/exampledomain/a7c4d0ad-114e-40ef-ba1d-d217904a50f2 there is a good online guide at : https://forums.freenas.org/index.php?threads/how-to-install-duckdns-org-a-how-to-guide.24170/ these instructions are for any installation of freenasyouchange yourandto be the one you want to updateLogin to your Freenas server GUIGo toSet 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

hardware If you fancy making an Arduino solution based on the ESP8266 core, then best of luck someone has done this!







The instructions are



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 If you fancy making an Arduino solution based on the ESP8266 core, then best of luck someone has done this! Davide Gironi has created a Hardware board with custom firmware to use DuckdDns and provide a web interfaceThe instructions are covered in detail on his blog youchange yourandto be the one you want to updateThe configuration you will need is

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

these instructions are for people wanting to use an Android based OS to keep their duckdns record up-to dateyou 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

on the web frontend of pfSense go to the page where you setup dyndns services and select custom service.

enter the following Update Url https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=%IP% change the Result Match to OK the username can be empty

the password can be empty



these instructions are for pfSense open source firewall on theof pfSense go to the page where you setupand selectenter the followingchange thetothecan be emptythecan be empty

GnuDIP.http these instructions are for

many provided ADSL routers have this protocol as an option, such as the Huawei HG533.

on the web frontend of the router (usually Advanced Settings and select DDNS.

now complete the configuration form and submit the configuration. Service provider:Others Host:exampledomain User name:NA Server address:duckdns.org/gnudip/ Protocol:GNUDip.http WAN connection:nas_0_38 Domain:duckdns.org Password:a7c4d0ad-114e-40ef-ba1d-d217904a50f2 Server port:80 Service name:DuckDNS now check that your IP, has updated in our domains screen.

if this has not happened, then check you configuration (make sure you entered the correct host [your domain] and password [your token])



these instructions are for GnuDIP.http many provided ADSL routers have this protocol as an option, such as the Huawei HG533.on the(usually http://192.168.1.1 with username and password - admin) go to theand selectnow complete the configuration form and submit the configuration.now check that your IP, has updated in our domains screen.if this has not happened, then check you configuration (make sure you entered the correct host [your domain] and password [your token])

dd-wrt these instructions are for

on the web frontend of the router find the DDNS section in the Setup area.

You can or HTTP or HTTPS for the URL DDNS Service:Custom DYNSND Server:duckdns.org Username:NA Password:NA Hostname:a7c4d0ad-114e-40ef-ba1d-d217904a50f2 URL:http://www.duckdns.org/update?domains=exampledomain&token= Additional DDNS Options:--verbose 5 Do no use External IP Check:Yes Force Update Interval:10 these instructions are for dd-wrt routers on thefind the DDNS section in the Setup area.You can ororfor the URL now click Save and Apply Settings and see the logs get produced

now clickandand see the logs get produced

allied telesis these instructions are for

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)



modify/create the file pppupipc.scp add these lines (to make the http request work for your domain) del file=ddnsipup.txt load method=http destination=flash destfile=ddnsipup.txt fi=update/exampledomain/a7c4d0ad-114e-40ef-ba1d-d217904a50f2 server=www.duckdns.org then enable the trigger on the ppp up event # TRIGGER Configuration enable trigger create trigger=1 interface=ppp1 event=up cp=ipcp script=pppupipc.scp these instructions are for allied telesis AT-AR450S youchange yourandto be the one you want to updatethe 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)modify/create the fileadd these lines (to make the http request work for your domain)then enable the trigger on theevent

technicolor TG582n these instructions are for the Technicolor TG582n other models may work with these instructions



use telnet to connect to the router

telnet 192.168.1.1 once logged in type the following commands and press enter after each line

dyndns service modify name = custom [server] = www.duckdns.org [port] = www-http (leave as default) [request] = /update/exampledomain/a7c4d0ad-114e-40ef-ba1d-d217904a50f2 [updateinterval] = 10800 (in seconds - this 3 hours) [retryinterval] = 30 (left as default) [max_retry] = 3 (left as default) saveall now open the gui interface for the router in your web browser and go to the dyndns settings.

user: NA password: anything as long as its not blank service: custom host: www.duckdns.org the routers dyndns settings page looks like the one below



these instructions are for the Technicolor TG582n other models may work with these instructionsuse telnet to connect to the routeronce logged in type the following commands and press enter after each linenow open the gui interface for the router in your web browser and go to thesettings.the routers dyndns settings page looks like the one below

DynDns we host a DynDns compatible endpoint

any Client that can use this - should be-able to use this. e,g,



Note we support both the new v3 endpoint as well



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

any client will be making requests with the following format (the IP is optional - if not present or empty it will be detected)



https://nouser:a7c4d0ad-114e-40ef-ba1d-d217904a50f2@www.duckdns.org/nic/update?hostname=exampledomain&myip=1.1.1.1&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG v3 version http://nouser:a7c4d0ad-114e-40ef-ba1d-d217904a50f2@www.duckdns.org/v3/update?hostname=exampledomain&myip=1.1.1.1 the responses from this service are good, bad, nochg

we host a DynDns compatible endpoint https://help.dyn.com/remote-access-api/perform-update/ any Client that can use this - should be-able to use this. e,g, inadyn we support both the new v3 endpoint as wellyouchange yourandto be the one you want to updateany client will be making requests with the following format (the IP is optional - if not present or empty it will be detected)v3 versionthe responses from this service are

inadyn

the client uses the



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

terminal example you can test the endpoint with the indyn command with inadyn --dyndns_server_name www.duckdns.org --username nouser --password a7c4d0ad-114e-40ef-ba1d-d217904a50f2 --update_period 60000 --alias exampledomain --verbose 5 --dyndns_server_url /nic/? ubuntu example this example is



install inadyn sudo apt-get install inadyn curl create configuration file of inadyn (/etc/inadyn.conf) sudo gedit /etc/inadyn.conf and save this content --dyndns_server_name www.duckdns.org --username nouser --password a7c4d0ad-114e-40ef-ba1d-d217904a50f2 --update_period 60000 --forced_update_period 320000 --alias exampledomain --verbose 0 --dyndns_server_url /nic/? --syslog --background add inadyn to crontab export EDITOR=gedit && sudo crontab -e edit the file to add the following line @reboot /usr/sbin/inadyn reboot your PC

wait 3 minutes

check if inadyn is running ps -A | grep inadyn check inadyn behaviour more /var/log/messages | grep INADYN check if your domain name resolves nslookup exampledomain.duckdns.org http://troglobit.com/inadyn.html have a small open source client that is in most Linux package reposthe client uses the dyndns endpoint youchange yourandto be the one you want to updateyou can test the endpoint with thecommand withthis example is taken off someone setting up inadyn in Ubuntuinstall inadyncreate configuration file of inadyn (/etc/inadyn.conf)and save this contentadd inadyn to crontabedit the file to add the following linereboot your PCwait 3 minutescheck if inadyn is runningcheck inadyn behaviourcheck if your domain name resolves

Windows C# - Visual Studio 2013 XWolfOverride has produced a C# updater

XWolfOverride has produced a C# updater https://github.com/XWolfOverride/DuckDNS

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 #!/bin/sh DOMAINS="example" TOKEN="feedface-dead-c0ed-babe-c0ffeec0de99" curl_out=$( echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2" | /usr/local/bin/curl --insecure --silent --config - ) if [ == "OK" ]; then logger -p daemon.info "duckdns update ok" else logger -p daemon.err "duckdns update failed" fi 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 by checking the daemon status. if your linux install is running a crontab, then you can use a cron job to keep updatedwe can see this withif this returns nothing - then go and read up how to install cron for your distribution of linux.also confirm that you haveinstalled, test this by attempting to run curlif 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 scriptnow copy this text and put it into the file (in vi you hit thekey to insert,thento undo) youchange yourandto be the one you want to updateyou can pass a comma separated (no spaces) list of domainsyou can if you need to hard code an IP (best not to - leave it blank and we detect your remote ip)hitthen use use arrow keys to move the cursordeletes,puts you back into insert modenow save the file (in vi hitthenthenthis script will make a https request and log the output in the file duck.lognow make the duck.sh file executeablenext we will be using the cron process to make the script get run every 5 minutescopy this text and paste it at the bottom of the crontabnow save the file (thenlets test the scriptthis should simply return to a promptwe can also see if the last attempt was successful by checking the daemon status.

EdgeRouter Instructions to setup on an EdgeRouter

Instructions to setup on an EdgeRouter https://loganmarchione.com/2017/04/duckdns-on-edgerouter/

Mono A Mono client for Windows or Linux

A Mono client for Windows or Linux https://bitbucket.org/Jaxmetalmax/duckdns.net/wiki/Home

smoothwall smoothwall has WGET to use by default - this script is for basic smooothwall installs

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

#!/bin/sh wget --no-check-certificate -O - -o ./duck-mydns.log "https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" don't forget to change domains and token according to your configuration!

smoothwall has WGET to use by default - this script is for basic smooothwall installsyouchange yourandto be the one you want to updatedon't forget to changeandaccording to your configuration!

synology these instructions are for the synology dsm 6.1 setup

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



In the webpanel : go to control panel / external access /ddns tab

choose customize - add a new DDNS Provider



duckdns http://www.duckdns.org/update?domains=__HOSTNAME__&token=__PASSWORD__&ip=__MYIP__ here is what the section looks like in the web interface (make sure you follow the steps above)





now complete the form with your details

Enable : CHECKED Service Provide : duckdns Hostname : exampledomain Username/Email : none Password/Key : a7c4d0ad-114e-40ef-ba1d-d217904a50f2



you should be able to see the udpater in the web GUI



these instructions are for the synology dsm 6.1 setupyouchange yourandto be the one you want to updateIn the webpanel : go to control panel / external access /ddns tabchoose customize - add a new DDNS Providerhere is what the section looks like in the web interface (make sure you follow the steps above)now complete the form with your detailsyou should be able to see the udpater in the web GUI