Skip to main content

Robotic Updater for Dynamic DNS Records

Project description

Ruddr

Robotic Updater for Dynamic DNS Records

Steer DNS queries to the proper IP addresses. With support for IPv6!

Overview

Ruddr is a modular dynamic DNS client. It separates the job into two tasks:

  • Detecting IP address changes, handled by notifiers.
  • Publishing the changed addresses, handled by updaters

Ruddr provides built-in updaters and notifiers for common use cases and services. For example, the web notifier will periodically query a what-is-my-ip style website, and the standard updater uses the de facto standard API, http(s)://.../nic/update, to publish updates compatible with several well-known services. There are a variety of others; see the full documentation for the full list.

However, if the built-in notifiers or updaters do not meet your needs, Ruddr is extensible. You can easily write your own and tie it into your configuration. (If you think your custom notifier will be useful to others, feel free to submit a contribution, or you can upload it to PyPI yourself as an extension!)

Finally (and the main reason Ruddr was born), Ruddr does its best to make dynamic DNS work with IPv6, despite the fact that hosts are not likely behind network address translation (NAT).

For more information about the built-in updaters and notifiers or writing your own, see the full documentation.

Installation from PyPI

At this time, Ruddr runs on Linux and possibly other Unix-like platforms. Non-Unix-like platforms may be supported in the future.

It is available on PyPI under the name ruddr. Basic installation works similarly to any other Python package:

pip3 install ruddr

Ruddr is now installed. You can continue to configuration.

Note: If you would like to use the systemd notifier, there are extra steps. See the installation instructions in the full documentation for details.

Quick Start Guide

  1. Write this configuration to /etc/ruddr.conf:

    [ruddr]
    notifier = main
    
    [notifier.main]
    type = web
    url = https://icanhazip.com/
    
    [updater.main]
    # Updater config here
    
  2. Paste in one of the updater configurations from the "Updaters" page in the full documentation

  3. Set up Ruddr to run as a service. If using systemd, create a new unit file at /etc/systemd/system/ruddr.service:

    [Unit]
    Description=Robotic Updater for Dynamic DNS Records
    After=network.target
    
    [Service]
    Type=notify
    ExecStart=ruddr
    NotifyAccess=main
    
    [Install]
    WantedBy=multi-user.target
    

    then enable and start the service (as root or with sudo):

    systemctl enable ruddr
    systemctl start ruddr
    

    If not using systemd, then using whatever means your system supports, set the ruddr script to run at startup, with SIGTERM sent to it at shutdown.

Full Documentation

The full documentation can be found here: https://ruddr.dcpx.org/

It contains much more information, including the following:

  • How Ruddr works
  • Detailed usage and configuration instructions
  • Descriptions and configuration info for all the built-in updaters and notifiers
  • Information for developers, including how to write custom updaters and notifiers
  • Frequently asked questions and additional help resources.

License

GNU General Public License version 3 or later. See the COPYING file for the full license.

Copyright © 2023 Dominick C. Pastore

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ruddr-0.0.1b3.tar.gz (144.1 kB view details)

Uploaded Source

Built Distribution

ruddr-0.0.1b3-py3-none-any.whl (96.3 kB view details)

Uploaded Python 3

File details

Details for the file ruddr-0.0.1b3.tar.gz.

File metadata

  • Download URL: ruddr-0.0.1b3.tar.gz
  • Upload date:
  • Size: 144.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for ruddr-0.0.1b3.tar.gz
Algorithm Hash digest
SHA256 c3b6ecd47f5122dc40d3bdfb89816cf21a95bbaa15da0d9a77eeae622ff6e8ac
MD5 9d3b2d81a36381db5f035bb62baffe9d
BLAKE2b-256 b1252360336e47407ffcf860e6e092f40a88d1424ba3b551786fb44900b4635e

See more details on using hashes here.

File details

Details for the file ruddr-0.0.1b3-py3-none-any.whl.

File metadata

  • Download URL: ruddr-0.0.1b3-py3-none-any.whl
  • Upload date:
  • Size: 96.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for ruddr-0.0.1b3-py3-none-any.whl
Algorithm Hash digest
SHA256 2ebbbee634e5e0c3154d9a706e52f59affe47f5ca52ffc6393882b518ae320e8
MD5 d44454ffe2f448afdbbc4533dea3a506
BLAKE2b-256 d8071f8008c2e79d251777a4836789108806fe2e993a77cbcc2d30c700a24106

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page