Install the dynamic IP updater:

# Install the app
sudo apt-get install ddclient

Press Enter repeatedly to accept null values. Then edit the config file manually:

sudo vim /etc/ddclient.conf

Input values similar to this:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
protocol=dyndns2
ssl=yes
use=web, web=myip.dnsomatic.com
server=updates.opendns.com
login=OpenDnsUsername [actual username such as [email protected]]
password='OpenDnsPassword' [actual password]
network_label

Please note that ‘network_label’ is found by accessing https://login.opendns.com/?return_to=https%3A%2F%2Fdashboard.opendns.com%2Fsettings%2F

Edit the /etc/default/ddclient file to resemble this

# Configuration for ddclient scripts 
# generated from debconf on Sun Jun 24 00:08:13 EDT 2018
#
# /etc/default/ddclient

# Set to "true" if ddclient should be run every time DHCP client ('dhclient'
# from package isc-dhcp-client) updates the systems IP address.
run_dhclient="false"

# Set to "true" if ddclient should be run every time a new ppp connection is
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"

# Set to "true" if ddclient should run in daemon mode
# If this is changed to true, run_ipup and run_dhclient must be set to false.
run_daemon="true"

# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="300"

Optional: follow this easier method to edit /etc/default/ddclient

# Set the filename variable
ddclientFile=/etc/default/ddclient

# Make a backup of file
mv $ddclientFile $ddclientFile.bak

# Create a new file
sudo cat << EOF > $ddclientFile
run_dhclient="false"
run_ipup="false"
run_daemon="true"
daemon_interval="300"
EOF

Run this command to check whether configurations are valid: sudo ddclient -verbose -file /etc/ddclient.conf

# Sample Output:

rambo@pihole:/home/rambo# sudo ddclient -verbose -file /etc/ddclient.conf
CONNECT: myip.dnsomatic.com
CONNECTED: using HTTP
SENDING: GET / HTTP/1.0
SENDING: Host: myip.dnsomatic.com
SENDING: User-Agent: ddclient/3.8.3
SENDING: Connection: close
SENDING:
RECEIVE: HTTP/1.1 200 OK
RECEIVE: Server: nginx
RECEIVE: Date: Mon, 14 Dec 2020 03:21:13 GMT
RECEIVE: Content-Type: text/plain; charset=utf-8
RECEIVE: Content-Length: 12
RECEIVE: Connection: close
RECEIVE: Strict-Transport-Security: max-age=2628000
RECEIVE: X-Frame-Options: deny
RECEIVE: X-XSS-Protection: 1; mode=block
RECEIVE:
RECEIVE: 172.500.500.500
INFO: forcing updating MacDuff because no cached entry exists.
INFO: setting IP address to 172.500.500.500 for TESTNETWORK
UPDATE: updating TESTNETWORK
CONNECT: updates.opendns.com
CONNECTED: using SSL
SENDING: GET /nic/update?system=dyndns&hostname=MacDuff&myip=172.500.500.500 HTTP/1.0
SENDING: Host: updates.opendns.com
SENDING: Authorization: Basic abceHashHash
SENDING: User-Agent: ddclient/3.8.3
SENDING: Connection: close
SENDING:
RECEIVE: HTTP/1.0 200 OK
RECEIVE: date: Mon, 14 Dec 2020 03:21:14 GMT
RECEIVE: server: opendns
RECEIVE: content-length: 17
RECEIVE: content-type: text/html; charset=UTF-8
RECEIVE: x-envoy-upstream-service-time: 783
RECEIVE: x-xss-protection: 1; mode=block
RECEIVE: x-ingress-point: lax
RECEIVE: connection: close
RECEIVE:
RECEIVE: good 172.500.500.500
SUCCESS: updating TESTNETWORK: good: IP address set to 172.500.500.500
Finalize setup:
 
# Restart ddclient
sudo service ddclient restart

# Set it to auto-run on reboots
sudo systemctl enable ddclient