GitHub - pagekite/duppy: A RFC2136 dynamic DNS update server

2 min read Original article ↗

duppy: a RFC2136 dynamic DNS update server

This is a stand-alone server which implements both a subset of RFC2136 and offers a simple HTTP API for performing dynamic DNS updates.

The intended audience for this software are DNS service providers who store customer DNS data in a custom database, using something like bind's DLZ. Writing some code and/or SQL statements is required.

Project Status

Roadmap and project status are Issue #1

API Documentation

The HTTP APIs are very briefly documented on the root home-page of the HTTP server itself, a snapshot of which can be found here.

You can also read them using pydoc duppy.http_updates.

Getting started

Installation:

 # Make sure the basics are installed
 apt install python3 python3-pip git virtualenv

 # Fetch duppy
 git clone https://github.com/pagekite.net/duppy

 # Install dependencies
 cd duppy
 virtualenv -p /usr/bin/python3 .env
 . .env/bin/activate
 pip install -r requirements.txt

Configuration:

cd /path/to/duppy
cp examples/duppy-sql.py duppy-local.py
vi duppy-local.py

Note: the duppy-sql.py example assumes you are using an SQL backend for storing DNS records and gives an example of how to configure that by writing SQL statements that match your schema. If you are doing something more excited/complicated, other examples may be better starting points. Browse around!

Running the server:

cd /path/to/duppy
. .env/bin/activate
python3 duppy-local.py

Copyright, License, Thanks

Copyright (C) 2022, The Beanstalks Project ehf. and Bjarni R. Einarsson.

MIT License: See the file LICENSE for details.

Big thanks to the async_dns, dnspython and aiohttp projects! Without them this would have been much more difficult.

Thanks to 1984 Hosting for sponsoring part of this work.