hetzner-ddns-updater is a lightweight service designed to periodically check for changes in your external IP address and update a DNS record at Hetzner when necessary. This project simplifies the process of keeping your DNS records up-to-date with your dynamic IP address.
To configure hetzner-ddns-updater, you can use environment variables. Here are the available configuration parameters:
Environment Variable | Default Value | Description |
---|---|---|
HDU_ADDRESS |
:8080 |
The address and port on which the service will listen. |
HDU_API_TOKEN |
Required | Your Hetzner API token for authentication. |
HDU_RECORD_ID |
Required | The ID of the DNS record to be updated. |
HDU_ZONE_ID |
Required | The ID of the DNS zone where the record resides. |
HDU_RECORD_NAME |
@ |
The DNS record name to be updated (e.g., subdomain). |
HDU_RECORD_TTL |
60 |
Time to live (TTL) for the DNS record in seconds. |
HDU_INTERVAL |
5m |
The interval at which the service checks for IP address changes. |
HDU_METRICS_ENABLED |
false |
Enable or disable Prometheus metrics. |
HDU_METRICS_TOKEN |
Token to secure access to Prometheus metrics when enabled. | |
HDU_PUBLIC_IP_PROVIDER |
https://api.ipify.org?format=text |
The api url to a route that returns your public ip as plain text. |
When Prometheus metrics are enabled (HDU_METRICS_ENABLED=true
), the service exposes the following metrics in Prometheus format at the /metrics
route:
Name | Type | Description |
---|---|---|
hdu_total_updates | Counter | Number of ddns updates |
hdu_failed_updates | Counter | Number of failed ddns updates |
These metrics provide insights into the update activity of the service, helping you monitor its performance and reliability.
You can easily run hetzner-ddns-updater as a Docker container. Here's an example command to start the service:
docker run -d \
-e "HDU_API_TOKEN=<your_hetzner_api_token>" \
-e "HDU_RECORD_ID=<your_record_id>" \
-e "HDU_ZONE_ID=<your_zone_id>" \
-p 8080:8080 \
ghcr.io/davidborzek/hetzner-ddns-updater:latest