Giter Site home page Giter Site logo

ddns's Introduction

ddns - Dynamic DNS

CircleCI Docker Image Size (tag) Docker Pulls GitHub

A self-hosted Dynamic DNS solution similar to DynDNS or NO-IP.

You can use a hosted version at ddns.pboehm.de where you can register a host under the d.pboehm.de domain (e.g test.d.pboehm.de).

Recent Changes

ddns has been fully restructured and now uses the PowerDNS Remote Backend instead of the Pipe Backend, which is far easier to deploy. It now serves both the frontend and the backend over HTTP using different ports.

The old ddns source code can be found at the legacy tag.

How can I update my IP if it changes?

ddns is built around a small webservice, so that you can update your IP address simply by calling an URL periodically through curl. Hosts that haven't been updated for 10 days will be automatically removed. This can be configured in your own instance.

An API similar to DynDNS/NO-IP has not been implemented yet.

Self-Hosting

Requirements

  • A custom domain where the registrar allows setting NS records for subdomains. This is important because not all DNS providers support this.
  • A server with docker and docker-compose installed
  • The following ports should be opened in the firewall:
    • 53/udp
    • 80/tcp
    • 443/tcp

DNS-Setup

For the domain you want to use with ddns (example.net in the following sections, please adjust this to your domain) you have to create the following two DNS records:

  • ddns.example.net as a CNAME or A/AAAA record pointing to the server ddns will be running on. This record will be used for accessing the ddns frontend in your browser or via curl. It is also the target for the corresponding NS record.
  • d.example.net as an NS record pointing to the previously created ddns.example.net record. This will delegate all subdomains under d.example.net to the PowerDNS server running on ddns.example.net.

ddns-Setup

The setup is now automated using docker-compose and only some customization has to be made in a docker-compose.override.yml file (a sample is available here).

Configuring the Setup

The setup included in this repository contains all the components described above and uses caddy as a web server, because it provides automatic HTTPS using Lets Encrypt.

git clone [email protected]:pboehm/ddns.git
cd ddns/docker
cp docker-compose.override.yml.sample docker-compose.override.yml

Please adjust the settings in docker-compose.override.yml marked with the #<<< .... comments as follows:

  • adjust the domain part in lines marked with # <<< ADJUST DOMAIN according to your DNS-Setup
  • insert your email address in lines marked with # <<< INSERT EMAIL which is required for getting certificates from Lets Encrypt

Finally execute the following docker-compose command, which creates 4 containers in detached mode which are also started automatically after reboot. For updating an existing installation use the same command because it automatically rebuilds the containers.

docker-compose --project-name ddns up -d --build

ddns's People

Contributors

pboehm avatar ssiuhk avatar coldfix avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.