1
0
Fork 0
mirror of https://github.com/fernwerker/ownDynDNS.git synced 2025-07-10 14:15:14 +02:00
ownDynDNS/README.md
2023-08-22 22:46:56 +02:00

6.1 KiB

ownDynDNS

Self-hosted dynamic DNS php script to update netcup DNS API from Router like AVM FRITZ!Box

Authors

Usage

Installation

  • Copy all files to your webspace

  • create a copy of .env.dist as .env and configure:

    • username -> The username for your Router to authenticate (so not everyone can update your DNS)
    • password -> password for your Router
    • apiKey -> API key which is generated in netcup CCP
    • apiPassword -> API password which is generated in netcup CCP
    • customerId -> your netcup Customer ID
    • log -> true|false enables logging
    • logFile -> configures logfile location if enabled
    • debug -> true|false enables debug mode and generates more output from update.php (normal operation has no output). Needed to receive stack traces from errors.
    • returnIp -> true|false enables return of result if a record was changed
  • alternatively you can use .configure.sh to create your .env file for you (if you are on a *NIX system)

  • Create each host record in your netcup CCP (DNS settings) before using the script. The script does not create any missing records.

URL possible uses:

Required parameters in URL:

user, password and domain are always needed, as well as at least one of the following:
ipv4, ipv6, txt

Parameter Example Explanation
user dnsupdater username to authenticate against this script as defined in .env file
password secretpleasechange password for that user as defined in .env file
domain home.example.com case A) If host is not specified: the FQDN for your host
domain example.com case B) If you want to update the @ or * record
domain example.com case C) If hostis specified: only the domain part as registered at netcup "nas.home.example.com"
host nas.home case C) If your domain contains more than 3 levels "nas.home.example.com"
ipv4 1.2.3.4 the ipv4 address to update an existing A record
ipv6 fe80::12:34:56 the ipv6 address to update an existing AAAA record
txt acme-challenge-text the content to update an existing TXT record
force true ignore checking if the record needs to be updated, just do it anyways. Default: false
mode * case B) If domain is your registered domain "example.com". Possible values: * or both. Default: @

Example URL to update A record (IPv4) of home.example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=home.example.com&ipv4=IPv4

Example URL to force update AAAA record (IPv6) of example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=example.com&ipv6=IPv6&force=true

Example URL to update A and AAAA records of home.example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=home.example.com&ipv4=IPv4&ipv6=IPv6

Example URL to update TXT record _acme-challenge of home.example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=_acme-challenge.example.com&txt=textcontent

Example URL to update A record of nas.home.example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=example.com&host=nas.home&ipv4=IPv4

Example URL to update AAAA wildcard record of example.com:

https://dyndns.example.com/update.php?user=username&password=password&domain=example.com&mode=*

AVM FRITZ!Box Settings

  • Go to "Internet" -> "Freigaben" -> "DynDNS"
  • Choose "Benutzerdefiniert"
  • Update-URL: https://<url of your webspace>/update.php?user=<username>&password=<pass>&ipv4=<ipaddr>&ipv6=<ip6addr>&domain=<domain>
    • only the url needs to be adjusted, the rest is automatically filled by your AVM FRITZ!Box
    • http or https is possible if valid SSL certificate (e.g. Let's Encrypt)
  • Single Domain:
    • Domainname: <host record that is supposed to be updated>
  • Multiple Domains:
    • Domainname: <first host record that is supposed to be updated>,<second host record that is supposed to be updated>,....
  • Username: <username as defined in .env file>
  • Password: <password as definied in .env file>

Synology DSM Settings

  • Go to "Control Panel" -> "External Access" -> "DDNS"
  • Click on "Customize Provider" to create a profile for your own DDNS server
  • Service Provider: This is the display name of your custom provider
  • Update-URL: https://<url of your webspace>/update.php?user=__USERNAME__&password=__PASSWORD__&ipv4=__MYIP__&domain=__HOSTNAME__
    • Attention: The variables are delimited by two underscores
    • Currently Synology custom DDNS does not support IPv6, for whatever reason.
  • Save your custom provider
  • Click on "Add" to create a DDNS job
  • Select your custom provider. Notice that an asterisk [*] has appeared in front of the name to signify that this is a custom provider.
  • Hostname: <host record that is supposed to be updated>
  • Username/Email: <username as defined in .env file>
  • Password/Key: <password as defined in .env file>
  • External Address (IPv4): probably "Auto", uses Synology service to find own external IP
  • External Address (IPv6): doesn't matter, currently not supported by Synology

pfSense Settings

  • Go to "Services" -> "Dynamic DNS"
  • Click on "Add" to create a DDNS profile
  • Service Type: "Custom"
  • Interface to monitor: <select you WAN interface>
  • Interface to send update from: <select your WAN interface>
  • Update URL: https://<url of your webspace>/update.php?user=<user from .env>&password=<password from .env>&ipv4=%IP%&domain=<host record to update>
  • Leave all other fields empty / default

run as cronjob on a **nix based device

References

License

Published under GNU General Public License v3.0
© Felix Kretschmer, 2021