Skip to content

mhofer117/ispconfig-ddns-module

Repository files navigation

ISPConfig 3 Dynamic DNS (DDNS) Module

For general questions or feedback use the forum thread on howtoforge.

Features

  • Integrated into your ISPConfig 3 DNS menu
  • Allows clients, resellers and admins to create ddns tokens
  • Updates can be performed with simple GET requests using these tokens
  • Updates can be performed using DynDns1 and DynDns2 protocols
  • Tokens can be restricted to individual DNS zones, DNS records and records types (A/AAAA)
  • Allows updating A (IPv4) and AAAA (IPv6) records
  • Allows creating/deleting TXT records. Useful for ACME dns-01 challenges using the custom certbot-dns-ispconfig-ddns plugin
  • The update script shares the same authentication rate-limiting / blocking method from base ISPConfig
  • Works in multi-server setups if the DB-Table is created on all servers, see discussion

Screenshots

Overview page screenshot Edit/New token page screenshot Update URLs modal screenshot

Installation

  • Create the database table using setup.sql inside of your existing ispconfig database, usually called "dbispconfig"
  • Checkout the repository or download and extract a release on your server
  • Move the directory to the correct location: mv ispconfig-ddns-module /usr/local/ispconfig/interface/web/ddns
  • Set permissions and create symlinks as follows:
# install module
chown -R ispconfig:ispconfig /usr/local/ispconfig/interface/web/ddns
# setup dependency class
ln -s -f /usr/local/ispconfig/interface/web/ddns/lib/classes/ddns_custom_datasource.inc.php /usr/local/ispconfig/interface/lib/classes/
chown -h ispconfig:ispconfig /usr/local/ispconfig/interface/lib/classes/ddns_custom_datasource.inc.php
# link menu entries in DNS module
mkdir -p /usr/local/ispconfig/interface/web/dns/lib/menu.d
ln -s -f /usr/local/ispconfig/interface/web/ddns/lib/ddns.menu.php /usr/local/ispconfig/interface/web/dns/lib/menu.d/
chown -h ispconfig:ispconfig /usr/local/ispconfig/interface/web/dns/lib/menu.d/ddns.menu.php
# link nic directory to support dyndns v1/v2 protocol endpoints
ln -s -f /usr/local/ispconfig/interface/web/ddns/nic /usr/local/ispconfig/interface/web/
chown -h ispconfig:ispconfig /usr/local/ispconfig/interface/web/nic

If you are using nginx, you will also need to set up a proxy host

Update

If you pulled the module to your server with git, use git pull, otherwise download the latest release and override all existing files. After that, re-run the commands from the installation steps to fix permissions / symlinks.

Uninstall

  • Remove module database table DROP TABLE IF EXISTS `ddns_token`;
  • Delete all module files and related symlinks
rm -f /usr/local/ispconfig/interface/lib/classes/ddns_custom_datasource.inc.php
rm -f /usr/local/ispconfig/interface/web/dns/lib/menu.d/ddns.menu.php
rmdir /usr/local/ispconfig/interface/web/dns/lib/menu.d
rm -rf /usr/local/ispconfig/interface/web/ddns
rm -rf /usr/local/ispconfig/interface/web/nic

Known Issues

  • Paging does not work correctly, show all records on the same page to work around this
  • nginx will not respect the .htaccess file used for DynDns, you need to set up a revers proxy domain, see the guide in the wiki
  • The following clients require ISPConfig on a default port (443 or 80):
    • DynDns1 and DynDns2 protocols, for example with ddclient
    • FRITZ!Box (tm) (may support :8080 and other ports in a future update)
    • maybe others
    • Workaround: if you don't want to change the ISPConfig port for some reason, you can set up a proxy domain as described in the wiki