Digital Ocean Dynamic DNS
Here is bash script to dynamically update DigitalOcean domain name ‘A’ record to create dyndns type service on your Linux system.
Pre-Requisites
1. Domain (example.com) registered at DO
2. Subdomain (home.example.com) which you want to point to a machine whose public IP is not constant
3. DO API key. Can be obtained from https://cloud.digitalocean.com/settings/api/tokens
4. Record ID of subdomain
Now create a file ~/scripts/dnsupdate and copy paste below script. This script gets the public IP and update the A record of subdomain using DigitalOcean API
#!/bin/bash # your domain ID domain_name="example.com" # subdomain subdomain="home" # record to update record_id="12345" #your api key api_key="XXXXXXX" current_date_time="`date '+%Y-%m-%d %H:%M:%S'`"; ip="$(curl http://ipecho.net/plain)" if [ -f "ip" ] && [ "$ip" == "$(cat ip)" ] ;then result=$current_date_time" match" else echo content="$(curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer $api_key" -d '{"name": "'"$subdomain"'", "data": "'"$ip"'"}' "https://api.digitalocean.com/v2/domains/$domain_name/records/$record_id")" result=$current_date_time" mismatch" fi echo "$result" >> log
To Run it every 10 minutes open crontab
crontab -e
add below line at the end
*/10 * * * * ~/scripts/dnsupdate