Files
ddnsonroute53/README.md
Ivan Carlos 98c8f65854
All checks were successful
Build, Push, Publish / Build & Release (push) Successful in 16m59s
Update README.md
2025-12-11 19:35:58 +00:00

5.5 KiB

DDNS on Route53

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

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

Requirement:

  • Docker Compose
  • Domain zone on AWS Route 53
  • MySQL/MariaDB
  • Keycloak for SSO

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

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 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]

Unifi Cloud Gateway custom server:

  • subdomain.example.com/update.php?hostname=%h&myip=%i

🧑‍💻 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 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!