LimboDNS is a nice and simple authoritative Domain Name Server allowing you to run your very own DynDNS service for your domain(s).
- No complicated installation required. Either download and run the one-file-server or use docker.
- Webserver with WebUI included for easy configuration and dynamic DNS updates via HTTP.
- Support for IPv4 and IPv6.
- Support for A, AAAA and CNAME records.
- Easy auto generation of required NS and SOA records.
- Runs on Docker, Linux, Windows and other Java capable OS.
- I know you're tired of messing around with zone files, zone transfers, bind and crazy scripts just to run a simple DynDNS for some devices in your home network.
# Java 8+ is required, so depending on you distribution type something like this:
sudo apt-get install default-jre-headless
pacman -S jre-openjdk-headless
# Get it
wget http://repo.kuhlins.org/artifactory/public/net/limbomedia/limbodns/5.3/limbodns-5.3-jar-with-dependencies.jar
# Run it
# -Ddir specifies where to store config and data. If left, execution directory is used.
java -Ddir=/path/where/data/should/be/stored -jar limbodns-5.3-jar-with-dependencies.jar
# Visit admin interface: http://YOUR-SERVER:7777
docker run -d -p 7777:7777 -p 53:53/tcp -p 53:53/udp -v DATA-DIR:/data limbomedia/limbodns
Upon the first start and if not already existing, LimboDNS creates the configuration file [DATA_DIR]/config.json
. Edit to set:
- Ports (DNS TCP/UDP, Admin interface HTTP)
- Admin password
- Forward header if you run LimboDNS behind a reverse proxy
A client needs to send a simple HTTP request to update it's record. Therefore the DynDNS token given in the admin ui must be known. Note that one token can be used for multiple records of the same type to update at once. Here're some examples how to update. For sure you substitute localhost:7777 according to your installation and 123 with the token configured on the record to update.
# IP explicitly specified
http://localhost:7777/update/123/127.0.0.1
# IP autodetect
http://localhost:7777/update/123
# Here's an example using wget with IPv4 explicitly set, what's useful on IP dual stack setups.
wget --inet4-only -qO - http://localhost:7777/update/123
# As a result you'll get a response listing updated records in JSON format:
[
{"zone" : "example.com.", "record" : "www1", "type" : "A", "changed" : false, "value" : "127.0.0.1"},
{"zone" : "example.com.", "record" : "www2", "type" : "A", "changed" : false, "value" : "127.0.0.1"}
]
Thanks to the great libraries I used in this project: