Home assistant add-on: Inadyn
💖 Support development
I maintain this and other Home Assistant add-ons in my free time: keeping up with Immich changes, HA changes, and testing on real hardware takes a lot of time (and some money).
If this add-on saves you time or makes your setup easier, you can support my work here:
Addon informations
Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!
About
Inadyn, or In-a-Dyn, is a small and simple Dynamic DNS, DDNS, client with HTTPS support. Commonly available in many GNU/Linux distributions, used in off the shelf routers and Internet gateways to automate the task of keeping your Internet name in sync with your public¹ IP address. It can also be used in installations with redundant (backup) connections to the Internet. Based on https://hub.docker.com/r/troglobit/inadyn Project house : https://github.com/troglobit/inadyn Some code borrowed from https://github.com/nalipaz/hassio-addons
Installation
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Hass.io add-on.
- Add my Hass.io add-ons repository to your Hass.io instance.
- Install this add-on.
- Click the
Savebutton to store your configuration. - Start the add-on.
- Check the logs of the add-on to see if everything went well.
- Carefully configure the add-on to your preferences, see the official documentation for for that.
Configuration
Use the add-on env_vars option to pass extra environment variables (uppercase or lowercase names). See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details.
This addon has no web interface - all configuration is done through addon options. For detailed configuration information, see the official documentation.
Options
| Option | Type | Default | Description |
|---|---|---|---|
verify_address |
bool | Verify the IP address with check IP service | |
fake_address |
bool | Use fake address for testing | |
allow_ipv6 |
bool | Enable IPv6 support | |
iface |
str | Network interface to use (e.g., eth0) |
|
iterations |
int | Number of iterations (0 = infinite) | |
period |
int | 300 |
Update period in seconds |
forced_update |
int | Forced update interval in seconds | |
secure_ssl |
bool | Enable secure SSL verification | |
providers |
list | List of DDNS provider configurations |
Provider Configuration
Each provider in the providers list supports these options:
| Option | Type | Description |
|---|---|---|
provider |
str | Provider name or custom identifier |
custom_provider |
bool | Whether this is a custom provider |
username |
str | Username or token for authentication |
password |
str | Password or API key |
hostname |
str | Domain/hostname to update |
ssl |
bool | Use SSL for updates |
ddns_server |
str | Custom DDNS server |
ddns_path |
str | Custom update path |
checkip_server |
str | Custom IP check server |
checkip_path |
str | Custom IP check path |
checkip_ssl |
bool | Use SSL for IP checking |
append_myip |
bool | Append IP to request |
Example Configurations
{
"verify_address": false,
"fake_address": false,
"allow_ipv6": true,
"iface": "eth0",
"iterations": 0,
"period": 300,
"forced_update": 300,
"secure_ssl": true,
"providers": [
{
"provider": "providerslug",
"custom_provider": false,
"username": "yourusername",
"password": "yourpassword_or_token",
"ssl": true,
"hostname": "dynamic-subdomain.example.com",
"checkip_ssl": false,
"checkip_server": "api.example.com",
"checkip_command": "/sbin/ifconfig eth0 | grep 'inet6 addr'",
"checkip_path": "/",
"user_agent": "Mozilla/5.0",
"ddns_server": "ddns.example.com",
"ddns_path": "",
"append_myip": false
}
]
}
You should not fill in all of these, only use what is necessary. A typical example would look like:
{
{
"provider": "duckdns",
"username": "your-token",
"hostname": "sub.duckdns.org"
}
}
or:
{
"providers": [
{
"provider": "someprovider",
"username": "username",
"password": "password",
"hostname": "your.domain.com"
}
]
}
for a custom provider that is not supported by inadyn you can do:
{
"providers": [
{
"provider": "arbitraryname",
"username": "username",
"password": "password",
"hostname": "your.domain.com",
"ddns_server": "api.cp.easydns.com",
"ddns_path": "/somescript.php?hostname=%h&myip=%i",
"custom_provider": true
}
]
}
the tokens in ddns_path are outlined in the inadyn.conf(5) man page.
Multiple subdomains with same provider
Related to https://github.com/troglobit/inadyn#example
If you want use this add-on with several subdomains with the same provider, you have to enumerate domains like:
{
"providers": [
{
"hostname": "first.mydomain.dev",
"provider": "domains.google.com:1",
"username": "xxxxxxxxxxxxxxxx",
"password": "xxxxxxxxxxxxxxxx"
},
{
"hostname": "second.mydomain.dev",
"provider": "domains.google.com:2",
"username": "xxxxxxxxxxxxxxxx",
"password": "xxxxxxxxxxxxxxxx"
},
{
"hostname": "another.mydomain.dev",
"provider": "domains.google.com:3",
"username": "xxxxxxxxxxxxxxxx",
"password": "xxxxxxxxxxxxxxxx"
}
]
}
