Setup guide
Claim a name and grab a token in the dashboard, then pick your platform.
Replace YOURNAME and YOUR_TOKEN in every snippet.
LoonDNS speaks the standard dyndns2 protocol and the DuckDNS URL format, so virtually any device with a βcustom / user-definedβ Dynamic DNS option can update it. Don't see your exact device? Use the Generic router (dyndns2) settings β they work on most firmware.
Linux / macOS β cron
Auto-detects your public IP. Runs every 5 minutes.
Generic router (dyndns2)
In your router's Dynamic DNS settings, choose a custom / DynDNS provider:
| Server / Address | loondns.com |
| Hostname / Domain | YOURNAME |
| Username | any (ignored) |
| Password | YOUR_TOKEN |
ddclient
Add to /etc/ddclient.conf:
inadyn
In /etc/inadyn.conf:
OpenWrt (ddns-scripts / LuCI)
Add a service, Provider = custom, update URL:
Domain = YOURNAME, Username = any, Password = YOUR_TOKEN.
pfSense
Services β Dynamic DNS β add. Service type Custom:
| Update URL | https://loondns.com/update?domains=YOURNAME&token=YOUR_TOKEN&ip=%IP% |
| Result Match | OK |
OPNsense
Services β Dynamic DNS (os-ddclient) β add, Service = dyndns2 (custom):
| Server | loondns.com |
| Username / Password | any / YOUR_TOKEN |
| Hostname | YOURNAME.loondns.com |
MikroTik RouterOS
Ubiquiti EdgeOS (EdgeRouter)
UniFi (UDM / Dream Machine)
Settings β Internet β Dynamic DNS β Create New:
| Service | dyndns |
| Hostname | YOURNAME |
| Username / Password | any / YOUR_TOKEN |
| Server | loondns.com/nic/update?hostname=%h&myip=%i |
ASUS / AsusWRT-Merlin
WAN β DDNS β Server = Custom. On Merlin, enable JFFS custom scripts and add
/jffs/scripts/ddns-start:
DD-WRT
Services β DDNS β DDNS Service = Custom:
| DYNDNS Server | loondns.com |
| Username / Password | any / YOUR_TOKEN |
| Hostname | YOURNAME |
| URL | /update?domains=YOURNAME&token=YOUR_TOKEN&ip= |
Tomato / FreshTomato
Basic β DDNS β Service = Custom URL:
FRITZ!Box
Internet β Permit Access β DynDNS β Provider = User-defined:
| Update URL | https://loondns.com/update?domains=<domain>&token=<pass>&ip=<ipaddr> |
| Domain name | YOURNAME |
| Username / Password | any / YOUR_TOKEN |
Synology DSM
Control Panel β External Access β DDNS β Customize provider:
Then add: Hostname = YOURNAME, Username = any, Password = YOUR_TOKEN.
QNAP
QTS's built-in DDNS is closed to custom providers, so run the updater in Container Station (see the Docker option) β it's the most reliable way on QNAP.
Docker
Home Assistant
In configuration.yaml, then trigger it from a time automation:
Windows (PowerShell + Task Scheduler)
Android (Termux)
Full parameter reference in the API spec. Confirm it worked with the name checker. Questions? FAQ.