2019-04-27 21:48:09 +02:00
2018-11-18 14:35:38 +02:00
2019-04-26 02:04:39 +02:00
2019-04-26 02:04:39 +02:00
2019-04-26 02:04:39 +02:00
2018-10-15 20:36:12 +02:00
2019-04-26 02:04:39 +02:00
2019-04-26 02:04:39 +02:00
2019-04-26 02:04:39 +02:00
2019-04-26 02:04:39 +02:00
2018-10-09 20:00:06 +02:00

Lightweight DDNS Updater with Docker and web UI

Light container updating DNS A records periodically for GoDaddy, Namecheap, Dreamhost 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
21.4MB 13MB Very low

Features

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

Web UI

  • Lightweight based on Go and Alpine 3.9 with Sqlite and Ca-Certificates packages
  • Persistence with a sqlite database

Setup

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

Use the following command:

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

or use docker-compose.yml with:

docker-compose up -d

You can add persitence by bind mounting the directory /updater/data by adding the flag -v $(pwd)/data:/updater/data for example. Make sure you set the right permissions and ownership to your host data folder:

chown 1000 data/
chmod 700 data/

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 8000 Internal TCP listening port for the web UI
RECORDi A record i to update in the form domain_name,host,provider,ip_method,password
LOGGING json Format of logging, json or human
NODEID 0 Node ID (for distributed systems), can be any integer
  • 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:

Host firewall

This container needs the following ports:

  • TCP 443 outbound
  • UDP 53 outbound
  • TCP 8000 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

DuckDNS Website

See duckdns website

Dreamhost

Awaiting a contribution

Testing

Used in external projects

TODOs

  • Unit tests
  • Cloudflare DNS registrar
  • Read parameters from JSON file
  • Finish readme
  • Other types or records
  • ReactJS frontend
    • Live update of website
    • Change settings
Description
No description provided
Readme MIT 13 MiB
Latest
2024-12-24 04:18:18 -05:00
Languages
Go 98.3%
Dockerfile 0.8%
CSS 0.5%
HTML 0.4%