The simplest tool for fetching and saving the external IP address in the DNS record of your own domain. It supports the OVH and Cloudflare.
This code was created in Golang for a few reasons. I've needed some tool for updating an external IP in OVH (that option is called DynHost in the management panel). Why? First of all, my Internet service provider doesn't guarantee that the IP address wouldn't change.
I've wanted to create a OpenVPN service on my Raspberry PI. As I've written above my ISP doesn't guarantee the permanent IP address. In that case I needed some tool for updating the DynHost in OVH to use my dedicated domain name instead of using the dynamic IP address for connecting.
./bin/dynhost [global options] command [command options] [arguments...]
To run this application as Docker image you can use:
docker run -v $(pwd)/data.json:/app/data.json wojteek/dynhost:latest --help
Each version of this tool is tagged by version of release so instead of using latest
tag you can use a specific version.
version: "3"
services:
dynhost:
image: wojteek/dynhost:latest
command: [
"--timer=15m",
"cloudflare",
"--auth-token=YOUR_AUTH_TOKEN",
"--zone-id=YOUR_ZONE_ID",
"--dns-id=YOUR_DNS_ID",
"--hostname=dynhost.example.com",
]
container_name: "dynhost"
restart: always
volumes:
- ./data.json:/app/data.json:rw
In order to build this tool you can just run:
make build-app
--data value Set the path of the JSON file with the data of an application (default: "data.json")
--timer value Set the interval between automatic checking of an external IP address (default: 0s)
--debug Enable the debug mode (default: false)
--help, -h Show help (default: false)
--version, -v Print the version (default: false)
Note: Don't use the Global API Key at Cloudflare. This tool supports the API Token, that's why I recommend you to create a new one (Zone.DNS
with Edit
permission - as additional step you can specific zone)
Options
--auth-token value The authentication token of the Cloudflare API [$CLOUDFLARE_AUTH_TOKEN]
--zone-id value The zone identifier (Cloudflare DNS) [$CLOUDFLARE_ZONE_ID]
--dns-id value The dns identifier (Cloudflare DNS) [$CLOUDFLARE_DNS_ID]
--hostname value The hostname (Cloudflare DNS) [$CLOUDFLARE_HOSTNAME]
Visit the documentation if you don't have the credentials of the DynHost option.
Options
--auth-username value The authentication username of the DynHost option [$OVH_AUTH_USERNAME]
--auth-password value The authentication password of the DynHost option [$OVH_AUTH_PASSWORD]
--hostname value The hostname of the DynHost option [$OVH_HOSTNAME]
If you would like to add this tool to the service manager (for example for auto-starting), I recommend you to use systemd
. Bellow there is a sample configuration which is used by me. You just have to adjust this configuration to yourself.
[Unit]
Description="DynHost"
[Service]
User=YOUR_USER
ExecStart=/path/to/dynhost [global options] command [command options] [arguments...]
Restart=always
RestartSec=10s
KillMode=process
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
In my case (Raspbian) the configuration is located in: /lib/systemd/system/dynhost.service