{"id":16162594,"url":"https://github.com/jmb12686/serverless-ddns","last_synced_at":"2025-03-18T22:31:09.939Z","repository":{"id":52416903,"uuid":"177639517","full_name":"jmb12686/serverless-ddns","owner":"jmb12686","description":"Simple Dynamic DNS (DDNS) utilizing serverless architecture and framework for hosting on AWS.  AWS Services utilized include API Gateway, Lambda, and Route 53.","archived":false,"fork":false,"pushed_at":"2021-04-29T20:14:26.000Z","size":26,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T12:33:31.873Z","etag":null,"topics":["aws","aws-apigateway","aws-lambda","aws-route53","ddns","serverless","serverless-framework"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmb12686.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-25T18:10:03.000Z","updated_at":"2020-06-26T15:10:49.000Z","dependencies_parsed_at":"2022-09-03T02:10:11.601Z","dependency_job_id":null,"html_url":"https://github.com/jmb12686/serverless-ddns","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmb12686%2Fserverless-ddns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmb12686%2Fserverless-ddns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmb12686%2Fserverless-ddns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmb12686%2Fserverless-ddns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmb12686","download_url":"https://codeload.github.com/jmb12686/serverless-ddns/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243950927,"owners_count":20373664,"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","aws-apigateway","aws-lambda","aws-route53","ddns","serverless","serverless-framework"],"created_at":"2024-10-10T02:31:21.102Z","updated_at":"2025-03-18T22:31:09.675Z","avatar_url":"https://github.com/jmb12686.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# serverless-ddns\n\n[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)\n\n## Prerequisites\n\nMake sure you have the following installed before starting:\n\n* [nodejs](https://nodejs.org/en/download/)\n* [npm](https://www.npmjs.com/get-npm?utm_source=house\u0026utm_medium=homepage\u0026utm_campaign=free%20orgs\u0026utm_term=Install%20npm)\n* [serverless](https://serverless.com/framework/docs/providers/aws/guide/installation/)\n\n## Installation\n\n```bash\ngit clone https://github.com/jmb12686/serverless-ddns\ncd serverless-ddns\nnpm install\n```\n\n## Configuration\n\nModify the following configuration parameters in config.json:\n\n`apiDomainName` - URL to host on API Gateway.  Must have matching AWS Certificate Manager and own domain in Route53\n\n`ddnsHostName` - Domain name, owned in Route 53, that you want to keep updated with a dynamic IP.\n\n`notificationTopicARN` - TopicARN, in SNS, that you wish to receive notifications on.  Notifications are sent upon a successful DDNS update or failed attempt.\n\n## Deployment\n\nFirst, create the custom domain in API Gateway and route53 (corresponds to the `apiDomainName` config variable):\n\n```bash\nserverless create_domain\n```\n\nNow, deploy the serverless stack:\n\n```bash\nserverless deploy\n```\n\nNOTE: Use `--stage prod` to deploy to prod\n\n## Usage\n\nUsage instructions for interacting with the ddns API\n\n### Fetch caller IP\n\nFetch current caller IP, similar to 'what's my ip':\n\n`$ curl https://apiDomainName`\n\n### Update DNS with new IP\n\nPOST 'homeIp' JSON to API endpoint with AWS IAM Signature.  User api user is created upon stack deployment.  Use [aws-authenticated-curl-utility](https://github.com/jmb12686/aws-authenticated-curl-utility) to properly sign authenticated requests\n\n`$ post_it.sh -credentials \u003caws_access_key\u003e:\u003caws_secret_key\u003e -url \u003capi_url\u003e -region us-east-1 -service execute-api -body \"'{\\\"homeIp\\\":\\\"$ip\\\"}'\"`\n\n## TODO\n\n1) Eliminate topicARN requirement, and instead send to arbitrary email and/or SMS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmb12686%2Fserverless-ddns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmb12686%2Fserverless-ddns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmb12686%2Fserverless-ddns/lists"}