INADYN(8)
✨ NAME ✨
inadyn(8) — Internet Automated Dynamic DNS Client
okay so this is the System Manager's Manual page for inadyn, aka In-a-Dyn — the Internet Automated Dynamic DNS Client. yes bestie, it’s literally here to keep your DNS records from going stale. 💅
🌸 SYNOPSIS 🌸
inadyn [-1, --once] [--force] [--cache-dir PATH]
[-c, --cmd /path/to/cmd] [-C, --continue-on-error]
[-e, --exec /path/to/cmd] [--exec-mode MODE] [-f, --config FILE]
[-h, --help] [-i, --iface IFNAME] [-I, --ident NAME] [-j, --json]
[-l, --loglevel LEVEL] [-L, --list-providers] [-n, --foreground]
[--no-pidfile] [-P, --pidfile FILE]
[-p, --drop-privs USER[:GROUP]] [-s, --syslog]
[-S, --show-provider -NAME] [-t, --startup-delay SEC]
[-v, --version]
💖 DESCRIPTION 💖
inadyn, or In-a-Dyn, periodically checks your actual Internet accessible IP for changes. When it changes inadyn updates your name server record(s) automatically. periodt. ✨
Common DDNS service providers supported by inadyn are listed below. Some of these services are free of charge for non-commercial use, others take a small fee, but also provide more domain names to choose from. 🫶
inadyn defaults to HTTPS for all providers, some may however not support this so try disabling SSL for your provider in case of problems. Providers known to support SSL updates are listed below with https. The list is ordered by the plugin that support the service: 👑
- ⟨https://freedns.afraid.org⟩
- ⟨https://nsupdate.info⟩
- ⟨https://duckdns.org⟩
- ⟨https://freemyip.com⟩
- ⟨http://www.dyndns.org⟩, ⟨http://dyn.com⟩
- ⟨http://www.easydns.com⟩
- ⟨http://www.tunnelbroker.net⟩
- ⟨http://www.sitelutions.com⟩
- ⟨http://www.dnsexit.com⟩, parent of ⟨https://zoneedit.com⟩
- ⟨http://www.changeip.com⟩
- ⟨http://www.dhis.org⟩
- ⟨http://giradns.com⟩, ⟨https://gira.de⟩
- ⟨https://www.duiadns.net⟩
- ⟨https://ddnss.de⟩
- ⟨http://dynv6.com⟩
- ⟨http://ipv4.dynv6.com⟩
- ⟨https://www.cloudxns.net⟩
- ⟨https://www.dnspod.cn⟩
- ⟨https://connect.yandex.ru⟩
- ⟨https://www.cloudflare.com⟩
- ⟨https://www.goip.de⟩
DDNS providers not listed here, e.g. ⟨https://www.namecheap.com⟩, can often be configured using the custom DDNS provider plugin. See inadyn.conf(5) for examples. 🧚
🎀 OPTIONS 🎀
Earlier versions of inadyn supported more command line options, from v2.0 inadyn has been greatly simplified. See inadyn.conf(5) for details of the /etc/inadyn.conf configuration file format. iykyk 💙
-1,--once— Run only once and quit, updates only if too old or unknown. Use--forceto force an update before exiting. 💤--force— Force one update. Only works with-1,--onceflag, ignored for all other use-cases. 🔥--cache-dir PATH— Set directory for persistent cache files, defaults to/var/cache/inadyn. The cache files are used to keep track of which addresses have been successfully sent to their respective DDNS provider and when. The latter “when” is important to prevent inadyn from banning you for excessive updates. When restarting inadyn or rebooting your server, or embedded device, inadyn reads the cache files to seed its internal data structures with the last sent IP address and when the update was performed. It is therefore very important to both have a cache file and for it to have the correct time stamp. The absence of a cache file will currently cause a forced update. On an embedded device with no RTC, or no battery backed RTC, it is strongly recommended to pair this setting with the--startup-delay SECcommand line option. 🍓-c,--cmd /path/to/cmd [optional args]— Full path to command, or script, to run to check for IP address change. This is the same as the configuration file optioncheckip-commandbut will apply to all providers. This command line option is only provided for convenience, it is recommended to instead use the configuration file. For more details, see theinadyn.conf(5)man page. You will need to quote the complete command if any arguments, or pipe, is given. 🧚--continue-on-error— Ignore errors from DDNS provider and try again later. This command line option tells inadyn to not exit on errors from a DDNS provider and instead try again later. Please do not use this, it usually indicates that we are sending a malformed request, e.g. wrong username, password or DNS alias for the given account. Continuing could possibly lock you out of your account! 😭-e,--exec=/path/to/cmd [optional args]— Full path to command, or script, to run. The following environment variables are set:INADYN_IP,INADYN_HOSTNAME. The first environment variable contains the new IP address, the second the host name alias. The cmd is called for each listed host name. If inadyn is started with the-i IFNAMEcommand line option, theINADYN_IFACEenvironment variable is also set. You will need to quote the complete command if any arguments, or pipe, is given. 💅--exec-mode MODE— UseMODEto set the exec script run mode:compat,event:compat: run exec handler on successful DDNS update only, default.event: run exec handler on any update status. The following environment variables are set:INADYN_EVENT,INADYN_ERROR,INADYN_ERROR_MESSAGE.INADYN_EVENTcontains the event, one of:nochg,update,error. The eventnochgindicates that no update had to be sent, the eventupdateindicates that an update was sent successfully, the eventerrorindicates that the update was sent and an error occurred.INADYN_ERRORcontains the error code,INADYN_ERROR_MESSAGEcontains the error message for the error code. 🔥-f,--config FILE— UseFILEfor configuration. By default/etc/inadyn.conf, is used. Seeinadyn.conf(5)for examples. 🎀-h,--help— Show summary of command line options and exit. 🦋-i,--iface IFNAME— Check IP ofIFNAMEinstead of querying an external server. With this command line option the external IP check is disabled and inadyn will report the IP address ofIFNAMEto all DDNS providers listed in the configuration file. This can be useful to register LAN IP addresses, or, when connected directly to a public IP address, to speed up the IP check if the DDNS provider's check-ip servers are slow to respond. This option can also be given as a configuration option ininadyn.conf(5), both serve a purpose, use whichever one works for you. 🌈-I,--ident NAME— Specify program identity (name) to be used for PID file and syslog messages. Useful with multiple instances of inadyn, or to simply replace the inadyn name with something more generic, e.g."DDNS", without renaming the binary. Note, this option only changes the base name of the PID file, not the location, which is system specific. Usually/var/run/inadyn.pidor/run/inadyn.pid. 👑-j,--json— Output provider listing in JSON format, see also-L. ⭐-l,--loglevel LEVEL— Set log level:none,err,info,notice,debug. The default isnotice, but you might want to set this to-l warning. 💜-l,--list-providers— List available DDNS providers. 🌸-n,--foreground— Run in foreground, default is to daemonize and continue in the background. This option is usually required when running under process supervisors likesystemdandFinit, but is also useful when running from the terminal, when debugging a config or at initial set up. Remember to also give the-soption if you still want to redirect log messages to the syslog. 🫶-p,--drop-privs USER[:GROUP]— Drop root privileges after initial setup to the given user and group. 🔐--no-pidfile— When running as a daemon, even when running in the foreground with-n, inadyn creates a PID file so users can easily find the PID of the process to send signals to. SeeSIGNALSfor more information on this. This option tells inadyn to not create a PID file. Some users prefer this when running undersystemd. 💀-P,--pidfile FILE— Set PID file name and location, defaults to/run/inadyn.pid, derived from--ident NAME, which is strongly recommended to change over this option. However, some users want to keep application runtime files in separate directories, usually in combination with--drop-privs, for such cases this is the option to use. 🎀-s,--syslog— Usesyslog(3)for log messages, warnings and error conditions. This is the default when running in the background. When running in the foreground, see-n, log messages are printed to stdout. 🦋-S,--show-provider NAME— Show information about DDNS providerNAME, substring search supported. 🔎-t,--startup-delay SEC— Initial startup delay. Default is0seconds. Any signal can be used to abort the startup delay early, butSIGUSR2is the recommended to use. SeeSIGNALSbelow for full details of how inadyn responds to signals. Intended to allow time for embedded devices without a battery backed real time clock to set their clock via NTP at bootup. This is so that the time since the last update can be calculated correctly from the inadyn cache file and the forced-update SEC setting honored across reboots, avoiding unnecessary IP address updates. ⏰-v,--version— Show program version and exit. 🌟
💬 OUTPUT 💬
When the IP actually gets updated, inadyn says something about it — you'll see a message, bestie, it tells you. 🎉
But when no update is needed? It just prints a single . character. That's the whole vibe. One tiny dot. Unless --loglevel is set to none, in which case, silence, queen. 🤫
So like — consequence of that — unless --loglevel is set to none, your log is gonna be full of dots. Literally just dots. A whole little dot collection. 🫶 Don't panic, that's normal, that's the tool checking in.
And when the connection goes down? inadyn may print some harmless error messages. Harmless! Read that again. They should be followed by OK messages once the Internet connection is restored. So if you see errors and then OK, it's giving recovery arc, main character energy. ✨
📡 SIGNALS 📡
inadyn responds to the following signals — here's the whole menu, no skips:
HUP— Reload the.conffile, standard UNIX behaviorTERM— Tellinadynto exit gracefullyINT— Same asTERMUSR1— Force update now, even if the IP address has not changedUSR2— Check IP address change now. Useful when a new DHCP/PPPoE lease or new gateway is received. Please note thatinadyndoes not track such events by itself — you need an external monitor for that 👀
So convenient for sending signals, inadyn writes its process ID to /var/run/inadyn.pid, unless the --ident NAME option is used. Noted. Handy. Love that for us. 🎀
Heads up bestie: USR2 doesn't magic-up DHCP knowledge on its own — it's just the "check right now" button. The tracking? That's on your external monitor. Periodt. 💅
📂 FILES 📂
/etc/inadyn.conf/run/inadyn.pid/var/cache/inadyn/dyndns.org.cache/var/cache/inadyn/freedns.afraid.org.cache...one.cachefile per DDNS provider
Like, literally one .cache file per DDNS provider. A little cache family. 🦋
🔗 SEE ALSO 🔗
The inadyn home page is at GitHub: ⟨https://github.com/troglobit/inadyn⟩ — go say hi, star the repo, it's iconic. ⭐
👑 AUTHORS 👑
inadyn was originally written by Narcis Ilisei ⟨mailto:inarcis2002@hotpop.com⟩ and Steve Horbachuk. Current patch monkey is Joachim Wiberg ⟨mailto:troglobit@gmail.com⟩ with a lot of help from Andrey Tikhomirov and Mike Fleetwood. Shoutout to the whole squad, fr fr. 💜
This manual page was originally written for the Debian GNU/Linux project by Shaul Karl ⟨mailto:shaul@debian.org⟩, and is currently maintained by Joachim Wiberg. We stan a maintained manpage. 🌸
And that's the whole page, bestie! 🧚 This one ships from Debian, dated February 20, 2020 — yep, that's the source and the date, preserved with love, and the manpage section is INADYN(8). Now go forth and DNS your dyns. 💖✨
📦 where this page comes from
- alpine 3.24: inadyn-doc 2.13.0-r0 · GPL-2.0-or-later
- nixos 26.05: inadyn 2.13.0
- nixpkgs unstable: inadyn 2.13.0
- Copyright (C) 2004 Shaul Karl
- Copyright (C) 2010-2021 Joachim Wiberg
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms