Skip to content

Complete system to create your own dynamic DNS server like DuckDNS, DynDNS, and NO-IP, including a dashboard, user system, and API

License

Notifications You must be signed in to change notification settings

Akid-Affian/namik-ddns

Repository files navigation

Namik-DDNS

MIT License Telegram Chat

A complete self-hosted DDNS solution alternative to DuckDNS.

Home page

Dashboard page

Self-Hosting

Requirements

  • A custom domain. If you're using an apex domain, you'll need to set up glue records, or you can use a different domain for nameservers to avoid loopback issues. Learn more here.
  • A server with Docker installed, and it should support Docker Compose.

TCP Ports:

  • 4321 for namik-ddns
  • 53 for powerdns (DNS over TCP)
  • 80 and 443 for caddy (HTTP/HTTPS)

UDP Ports:

  • 53 for powerdns (DNS over UDP)

DNS Setup

To set up the DNS, you will need the following records:

  • NS (Nameserver)
  • A (for IPv4) or AAAA (for IPv6)
  • Glue Records (if using custom nameservers on the same domain)

For more details on glue records, check this link.

Using Your Apex Domain (e.g., website.com)

If you're using an apex domain (like website.com), you'll need to create glue records. Glue records ensure that DNS resolvers know the IP address of your custom nameservers.

Steps to Set Up Glue Records:

  1. In your domain registrar, create at least one custom nameserver (e.g., ns1.website.com). Some registrars require two or more nameservers, but you can set up as many as six.

  2. For each nameserver (e.g., ns1.website.com, ns2.website.com), add glue records that point to the IP address (IPv4 or IPv6 or both) of the server hosting your app.

  3. Update your DNS zone for website.com to use the custom nameservers you just created (ns1.website.com and ns2.website.com).

  4. Lastly, in your docker-compose.yml file, replace the following environment variables with your own:

    • BASE_DOMAIN
    • NAMESERVERS
    • EMAIL

Bypassing Glue Records

If you don’t want to create glue records, you can use another domain for the nameservers, pointing it to your server’s IP address. This setup works just as well.

Using a Subdomain (e.g., d.example.com)

You can also use a subdomain for your app without creating glue records. Here’s how:

  1. Create a nameserver record like nameserver.example.com with an A (or AAAA) record that points to your server’s IP address.

  2. Use d.example.com as your base domain. Create an NS record for d.example.com that points to nameserver.example.com.

  3. This will delegate all subdomains under d.example.com to the DNS server running at nameserver.example.com, allowing you to manage DNS dynamically.

Installation

  1. Clone the Repository:

    git clone https://github.com/Akid-Affian/namik-ddns.git
  2. Run the Application:

    cd namik-ddns/docker
    docker compose up --build

    Note: Before running the command, make sure to edit docker/docker-compose.yml and replace the BASE_DOMAIN, NAMESERVERS, and EMAIL values in the environment section with your own.

  3. Complete the Setup:
    Visit http://localhost:4321/setup or http://your-ip:4321/setup to complete the setup and create your account.

API Reference

Our API is very similar to DuckDNS API see the docs here.

Support

Join our telegram here

License

MIT

About

Complete system to create your own dynamic DNS server like DuckDNS, DynDNS, and NO-IP, including a dashboard, user system, and API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published