Skip to content

Router friendly cURL client to enable Dynamic DNS functionality over AWS Route53 managed through browser, shared hosting friendly.

License

Notifications You must be signed in to change notification settings

ivancarlosti/ddnsonroute53

DDNS on Route53

Router friendly client to update AWS Route53 entries for Dynamic DNS funtionality

Stars Watchers Forks GitHub last commit GitHub commit activity
GitHub Issues License Security Code of Conduct

Requirement:

  • MySQL/MariaDB
  • PHP 8+
  • HTTP server

or

Hosting instructions (PHP hosting):

  • Save the project on your server (download here)
  • Set database information on dbconfig.php

Hosting instructions (Docker Compose with PHP + nginx + mysqli):

  • Download /docker files on your server, example:
curl -o .env https://raw.githubusercontent.com/ivancarlosti/ddnsonroute53/main/docker/.env
curl -o docker-compose.yml https://raw.githubusercontent.com/ivancarlosti/ddnsonroute53/main/docker/docker-compose.yml
  • Edit both .env, docker-compose.yml files
    • This Docker Compose contains only PHP + nginx + mysqli as webserver, you can use a reverse proxy for SSL, default exposed port is 5666, an external MySQL/MariaDB is required
  • Start Docker Compose, example:
docker compose pull && docker compose up -d

Hosting instructions (Docker Compose with PHP + nginx + mysqli + MariaDB + Traefik):

  • Download /docker files on your server, example:
curl -o .env https://raw.githubusercontent.com/ivancarlosti/ddnsonroute53/main/docker/.env
curl -o docker-compose.yml https://raw.githubusercontent.com/ivancarlosti/ddnsonroute53/main/docker/docker-compose-full.yml
  • Edit both .env, docker-compose.yml files
    • This Docker Compose contains following services, adapt it for your needs:
      • PHP + nginx + mysqli as webserver
      • MariaDB as database
      • Traefik to get automatic SSL certificate and reverse proxy
  • Start Docker Compose, example:
docker compose pull && docker compose up -d

Service setup:

  • Run setup.php on browser to set username and password
  • Run index.php on browser to login
  • Access Manage AWS Credentials menu and fill required fields
  • Access Manage DDNS Entries to add, edit and delete DDNS entries
  • (optional) Access Manage Users to change user password, create new users, add/edit reCAPTCHA keys
  • (optional) Access View All Logs to check last 30 days of entries created and/or updated

IAM required policy, remember to update YOURZONEID value to related domain zone ID and subdomain.example.com. to your domain or subdomain for service usage:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets",
        "route53:ListResourceRecordSets"
      ],
      "Resource": "arn:aws:route53:::hostedzone/YOURZONEID",
      "Condition": {
        "ForAllValues:StringLike": {
          "route53:ChangeResourceRecordSetsNormalizedRecordNames": [
            "*.subdomain.example.com."
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "route53:GetChange",
      "Resource": "*"
    }
  ]
}

DDNS cURL update format:

To simplify the process, [FQDN] is also used as login for basic auth purposes.

Example: https://[FQDN]:[PASSWORD]@subdomain.example.com/update.php?hostname=[FQDN]&myip=[IP]

Tested DDNS Custom URL:

TP-Link Omada Update URL:

  • https://[USERNAME]:[PASSWORD]@subdomain.example.com/update.php?hostname=[DOMAIN]&myip=[IP]

To Do:

  • HTML beautification
  • Build releases using Compose to populate AWS SDK dinamically

Hosting note:

Using PHP with the Suhosin patch is not recommended, but is common on some Ubuntu and Debian distributions. To modify suhosin.ini, add the following line.

suhosin.executor.include.whitelist = phar

πŸ§‘β€πŸ’» Consulting and technical support

  • For personal support and queries, please submit a new issue to have it addressed.
  • For commercial related questions, please contact me directly for consulting costs.

🩷 Project support

If you found this project helpful, consider
buying me a coffee, donate by paypal, sponsor this project or just leave a star⭐
Thanks for your support, it is much appreciated!

🌐 Connect with me

Instagram LinkedIn Threads X
Discord Signal Telegram
Website GitHub Sponsors

About

Router friendly cURL client to enable Dynamic DNS functionality over AWS Route53 managed through browser, shared hosting friendly.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors 3

  •  
  •  
  •