{"id":19175419,"url":"https://github.com/clecap/mydyn","last_synced_at":"2026-05-15T12:04:57.305Z","repository":{"id":81103964,"uuid":"196626736","full_name":"clecap/mydyn","owner":"clecap","description":"Dyndns for route53","archived":false,"fork":false,"pushed_at":"2019-08-18T15:06:45.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-04T01:54:22.825Z","etag":null,"topics":["aws-route53","dyndns","node","nodejs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clecap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-12T18:26:32.000Z","updated_at":"2019-08-18T15:06:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"106bed39-6531-42cb-b482-a41bc0bde8a8","html_url":"https://github.com/clecap/mydyn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clecap%2Fmydyn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clecap%2Fmydyn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clecap%2Fmydyn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clecap%2Fmydyn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clecap","download_url":"https://codeload.github.com/clecap/mydyn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240254181,"owners_count":19772386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-route53","dyndns","node","nodejs"],"created_at":"2024-11-09T10:23:12.348Z","updated_at":"2026-05-15T12:04:57.284Z","avatar_url":"https://github.com/clecap.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mydyn: Dynamic DNS for Route53\n\n## Description\n\nThis repository provides a **dynamic DNS (dyndns)** solution for users of a **domain**  registered with **Route53 in Amazon Cloud**. \n\n### DynDNS: Problem and Solution ###\nThe IP address of a small office or home office (SOHO) Internet connection does not always stay the same.\nSome providers regularly disconnect your IP connection for a short moment and then reconnect you with a different IP address. Similarly, if for whatever reason your connection goes down\nand is reestablished, it might end up with a different IP address. Thus, your SOHO network is not reachable under the same IP address. After a change you will not know the new IP address\nand cannot contact you SOHO network from the Internet or operate a server under a well-known address. There are solutions where after an IP address refresh the new address is sent to your\nemail inbox, but this solution is not really convenient.\n\nDynDNS is a solution for this problem, where a DNS hostname name is used as permanent, stable address for your network. The hostname may be part of your own domain (such as: mymachine.myname.com)\nor may be offered by a DynDNS service provider (such as: mymachine.ddnss.de). Whenever your SOHO network gets a fresh address is contacts the server of this DynDNS service. The server \ndetermines the IP address of your SOHO network and binds the DNS hostname to the correct new IP address.\n\nThis solution has a nunber of disadvantages. The DynDNS service has to be paid for or offers freemium solutions which require you to refresh your registration frequently. Your hostname is part\nof the domain name of the DynDNS service and not part of your own domain - or you have to give the DynDNS service the capability to write name server records for your domain. Therefore\nit is nice to control such a DynDNS service on your own. This is particularly easy when you have your domain registered with Route53, a service available in the Amazon Web Service cloud.\n\n### Requirements ###\nYou have a box running inside of your SOHO network which is able to run node.js. \n\n\n## Other Solutions ###\n\nThere are already several dynDNS solutions available for AWS Route53:\n\n seem unnecessarily complex. Some require the API gateway to map calls to Lambda functions, the use Lambda functions, they employ DynamoDB to store state, \nthey use cloud formation techniques and templates for deploying all this. While this is state of the art in AWS, it is disproportionately complex for updating your DNS A-record.\ngets you tightly locked-in to Amazon cloud. Other solutions employ PHP (oldish), perl (unreadable) or python (tab-indented). I could not make myself enjoy them. \n\n## Solution\n\nI provide a node based application. It sets the DNS A-record in Route53 using the aws Javascript API. It can be deployed in to ways, (1) as webservice, (2) as cron job or (3) manually.\n\nIf deployed as webservice it provides a URL which, when called, initiates an update of the A-record.\n\nIf deployed as cron job it regularly initiates an update of the A-record.\n\nIf deployed manually you use it for updating the A-record on the command line.\n\n#### What do we do upon a check?\n\n1. Obtain the current IP we are running on.\n1. Obtain the IP registered in our A-record.\n1. Compare.\n1. If different, change the A-record.\n\n\n#### How do we initiate a check?\n\n\n## Installation\n\nRequirements: A local installation of node.js and npm.\n\n1. Download this repository into /tmp\n1. Install the software\n1. Configure the system by editing /etc/mydyn/conf.js\n\n```\n  cd tmp\n  git clone https://github.com/clecap/mydyn.git\n  cd mydyn\n  sudo install\n  sudo vi /etc/mydyn/conf.js\n``` \n\n\n### Use it as a Web Service\n\n### Use it as self-controlled Cron Job\n\n\n### Use it as a system-contolled Cron Job\n\n### Use it Manually\n\n```\n  node setip.js manual\n``` \n\n### Use it as a Service\n\n```\n  systemctl start mydyn\n  systemctl status mydyn\n  systemctl stop mydyn\n```\n\n\n## Security Aspects\n\n\n#### Fake current IP ####\nAn attacker could manage to fake the information we get on the current IP we are running on. In this case our domain gets bound to an incorrect IP\nand a user of our domain is directed to a diferent site. This should be detected by certificates confirming the correct identity of the partner. The risc can be reduced by:\n* Using only trustworthy sources for determining the current IP\n* Using https when accessing the respective service\n* Using our own service for determining the current IP\n\n\n\n## Service\n\nFor starting, checking and stopping the service, use the following commands:\n```\n  service mydyn start\n  service mydyn status\n  service mydyn stop\n```\n\n\n## Log, Bugs and Hints\n\nThe system logs into /var/log/\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclecap%2Fmydyn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclecap%2Fmydyn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclecap%2Fmydyn/lists"}