2018-11-06 13:57:54 +01:00
2018-10-15 19:41:59 +02:00
2018-11-06 13:57:54 +01:00
2018-10-15 19:41:59 +02:00
2018-10-15 19:41:59 +02:00
2018-10-15 20:36:12 +02:00
2018-11-06 13:57:54 +01:00
2018-10-09 20:00:06 +02:00
2018-11-06 13:57:54 +01:00

Lightweight DDNS Updater with Docker and web UI

Lightweight container updating DNS A records periodically for GoDaddy, Namecheap and DuckDNS

DDNS Updater by Quentin McGaw

Build Status Docker Build Status

GitHub last commit GitHub commit activity GitHub issues

Docker Pulls Docker Stars Docker Automated

Image size Image version

Image size RAM usage CPU usage
8.65MB 13MB Very low

Features

  • Updates periodically A records for different DNS providers: Namecheap, GoDaddy, DuckDNS (ask for more)
  • Web User interface

Web UI

  • Very lightweight based on Scratch with:
    • Static Golang healthcheck binary (UPX-compressed)
    • Static Golang updater binary
    • Ca-Certificates
  • Emojis 👍

Setup

To setup your domains initially, see the Domain set up section.

Use the following command:

docker run -d -p 80:80 -e RECORD1=example.com,@,namecheap,0e4512a9c45a4fe88313bcc2234bf547 qmcgaw/ddns-updater

or use docker-compose.yml with:

docker-compose up -d

Environment variables

Environment variable Default Description
DELAY 300 Delay between updates in seconds
ROOTURL / URL path to append to all paths (i.e. /ddns for accessing https://example.com/ddns)
LISTENINGPORT 80 Internal TCP listening port for the web UI
RECORDi A record to update in the form domain_name,host,provider,ip_method,password
  • The environement variables RECORD1, RECORD2, etc. are domains to update the IP address for
    • The program reads them, starting at RECORD1 and will stop as soon as RECORDn is not set
    • Each must respect the format domain_name,host,provider,ip_method,password
    • The ip_method parameter can be:
  • The port mapping 8000:80 is for the web interface

Host firewall

This container needs the following ports:

  • TCP 443 outbound
  • UDP 53 outbound
  • TCP 80 inbound (or other) for the WebUI

Domain set up

Namecheap

Namecheap Website

  1. Create a Namecheap account and buy a domain name - example.com as an example
  2. Login to Namecheap at https://www.namecheap.com/myaccount/login.aspx

For each domain name you want to add, replace example.com in the following link with your domain name and go to https://ap.www.namecheap.com/Domains/DomainControlPanel/example.com/advancedns

  1. For each host you want to add (if you don't know, create one record with the host set to *):

    1. In the HOST RECORDS section, click on ADD NEW RECORD

      https://ap.www.namecheap.com/Domains/DomainControlPanel/mealracle.com/advancedns

    2. Select the following settings and create the A + Dynamic DNS Record:

      https://ap.www.namecheap.com/Domains/DomainControlPanel/mealracle.com/advancedns

  2. Scroll down and turn on the switch for DYNAMIC DNS

    https://ap.www.namecheap.com/Domains/DomainControlPanel/mealracle.com/advancedns

  3. The Dynamic DNS Password will appear, which is 0e4512a9c45a4fe88313bcc2234bf547 in this example.

    https://ap.www.namecheap.com/Domains/DomainControlPanel/mealracle.com/advancedns


GoDaddy

GoDaddy Website

  1. Login to https://developer.godaddy.com/keys with your account credentials.

GoDaddy Developer Login

  1. Generate a Test key and secret.

GoDaddy Developer Test Key

  1. Generate a Production key and secret.

GoDaddy Developer Production Key

Obtain the key and secret of that production key.

In this example, the key is dLP4WKz5PdkS_GuUDNigHcLQFpw4CWNwAQ5 and the secret is GuUFdVFj8nJ1M79RtdwmkZ.


DuckDNS

Namecheap Website

Testing

TODOs

  • Add favicon.ico
  • Finish readme
  • Unit tests
  • Live update of website
  • Other types or records
  • Better HTML webpage with possibility to change settings
Description
No description provided
Readme MIT 11 MiB
Latest
2024-12-24 04:18:18 -05:00
Languages
Go 98.2%
Dockerfile 0.8%
CSS 0.6%
HTML 0.4%