Nexapp - Dynamic DNS
Dynamic DNS
Dynamic DNS (DDNS) automatically updates a DNS record with the firewall’s current public IP address. This is useful when your ISP changes your IP dynamically, because you can still reach the firewall using a stable hostname instead of tracking the IP.
Example use cases:
- remote access to the Web UI / SSH
- VPN endpoints (OpenVPN/WireGuard/IPsec) using a hostname
- services published via reverse proxy or port forwards
Supported providers
NexappOS supports many providers out of the box, including:
- Cloudflare
- DigitalOcean
- DNSpod
- FreeDNS (afraid.org)
- Gandi
- GCP (Google Cloud Platform)
- GoDaddy
- LuaDNS
- No-IP
- NS1
- One.com
- PowerDNS (Pdns)
- Route53 (AWS)
- TransIP
If your provider is not listed, you can still configure it with a custom update URL.
Prerequisites
Before configuring DDNS, make sure you have:
- a NexappOS firewall with working Internet access
- an account on your DDNS provider
- a registered domain/hostname on that provider
- API credentials (token / key / password) that allow DNS updates
General configuration steps (CLI)
DDNS is configured using UCI from the terminal. The workflow is always the same:
- Update and list available providers
ddns service update
ddns service list-available
- Create a DDNS service entry Fill in the fields required by your provider:
service_name: provider identifier from the listusername: username or client ID (if required)password: password or API key/tokendomain/lookup_host: hostname to updateinterface: interface used to detect public IP (usuallywan)enabled: enable the service
Example template:
uci set ddns.myddns=service
uci set ddns.myddns.service_name="ddnsprovider.com"
uci set ddns.myddns.domain="host.yourdomain.net"
uci set ddns.myddns.lookup_host="host.yourdomain.net"
uci set ddns.myddns.username="your_user_name"
uci set ddns.myddns.password="your_api_key"
uci set ddns.myddns.interface="wan"
uci set ddns.myddns.enabled="1"
uci commit ddns
- Restart the DDNS service
/etc/init.d/ddns restart
Notes & best practices
- Ensure the chosen provider plan supports API access and dynamic updates.
- Double-check credentials: most DDNS failures are caused by typos in tokens or usernames.
- If you want logging in syslog, enable it in your service entry:
uci set ddns.myddns.use_syslog='1'
uci commit ddns
/etc/init.d/ddns restart
- Some providers support wildcards or multi-record updates; check your provider docs for extra fields.
Example: FreeDNS (afraid.org)
Hostname: sanchio.crabdance.com
Username: myuser
Password: mypass
uci set ddns.afraid=service
uci set ddns.afraid.service_name='afraid.org-v2-basic'
uci set ddns.afraid.lookup_host='sanchio.crabdance.com'
uci set ddns.afraid.domain='sanchio.crabdance.com'
uci set ddns.afraid.username='myuser'
uci set ddns.afraid.password='mypass'
uci set ddns.afraid.interface='wan'
uci set ddns.afraid.ip_source='network'
uci set ddns.afraid.ip_network='wan'
uci set ddns.afraid.use_ipv6='0'
uci set ddns.afraid.enabled='1'
uci set ddns.afraid.use_syslog='1'
uci set ddns.afraid.check_unit='minutes'
uci set ddns.afraid.force_unit='minutes'
uci set ddns.afraid.retry_unit='seconds'
uci commit ddns
/etc/init.d/ddns restart
Custom provider example: dyndns.it
If a provider is not listed, you can define an explicit update URL.
Hostname: nstest1.freeddns.it
Username: nstest1
Password: nstest
uci set ddns.dyndns_it=service
uci set ddns.dyndns_it.enabled='1'
uci set ddns.dyndns_it.lookup_host='nstest1.freeddns.it'
uci set ddns.dyndns_it.domain='nstest1.freeddns.it'
uci set ddns.dyndns_it.username='nstest1'
uci set ddns.dyndns_it.password='nstest'
uci set ddns.dyndns_it.interface='wan'
uci set ddns.dyndns_it.ip_source='network'
uci set ddns.dyndns_it.ip_network='wan'
uci set ddns.dyndns_it.force_interval='24'
uci set ddns.dyndns_it.force_unit='hours'
uci set ddns.dyndns_it.check_interval='10'
uci set ddns.dyndns_it.check_unit='minutes'
uci set ddns.dyndns_it.update_url='http://update.dyndns.it/nic/update?hostname=[DOMAIN]&user=[USERNAME]&password=[PASSWORD]'
uci commit ddns
/etc/init.d/ddns restart
Using CLI
If preferred, you can set up DDNS there instead of CLI.