2026-01-10 04:02:01 +00:00
2025-12-09 20:01:03 -03:00
2025-12-09 22:41:15 -03:00
2025-12-09 15:37:27 -03:00
2025-12-09 22:41:15 -03:00
2025-12-09 15:37:27 -03:00
2025-12-09 22:41:15 -03:00
2025-12-09 15:37:27 -03:00
2025-12-28 00:02:41 +00:00
2026-01-10 04:02:01 +00:00

DDNS on Route53

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

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
Thanks for your support, it is much appreciated!
Description
No description provided
Readme MIT 14 MiB
2025-12-28 00:02:53 +00:00
Languages
PHP 85.4%
CSS 8.2%
JavaScript 3.5%
Dockerfile 2.9%