{"id":19846248,"url":"https://github.com/l422y/dynadns","last_synced_at":"2026-05-19T02:02:19.315Z","repository":{"id":145260193,"uuid":"320720593","full_name":"L422Y/dynadns","owner":"L422Y","description":"A self powered dynamic DNS updater using your own registrar.","archived":false,"fork":false,"pushed_at":"2020-12-14T14:35:19.000Z","size":23,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-28T22:51:59.343Z","etag":null,"topics":["dns","dynamic-dns","godaddy","godaddy-api","node"],"latest_commit_sha":null,"homepage":"","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/L422Y.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":"2020-12-12T01:11:25.000Z","updated_at":"2022-08-29T11:59:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"ef8b28e1-0248-4189-b0ef-59e9f8418f1a","html_url":"https://github.com/L422Y/dynadns","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/L422Y/dynadns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L422Y%2Fdynadns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L422Y%2Fdynadns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L422Y%2Fdynadns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L422Y%2Fdynadns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/L422Y","download_url":"https://codeload.github.com/L422Y/dynadns/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L422Y%2Fdynadns/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266554220,"owners_count":23947290,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dns","dynamic-dns","godaddy","godaddy-api","node"],"created_at":"2024-11-12T13:11:00.246Z","updated_at":"2026-05-19T02:02:14.291Z","avatar_url":"https://github.com/L422Y.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DynaDNS\n\nA self powered dynamic DNS updater using your own registrar.\n\nCurrently supported providers: *GoDaddy*\n\n---\n\n# How to use\n\n## Installation\n\n ```sh\n git clone https://github.com/L422Y/dynadns/\n cd dynadns\n cp config.json.example config.json\n npm install\n ```\n\n## Configuration\n\nModify your `config.json`:\n\n### Base options\n```json\n    \"options\": {\n        \"INTERVAL\": 600,\n        \"DEBUG\": true,\n        \"LOG\": true\n    },\n```\n\n`DEBUG` enables messages to `stdout`\n`INTERVAL` enables messages to `stdout`\n\n### Accounts\n\nFor each account, you need to set the provider, key, secret and setup the records object.\nRecord entries are grouped by domain, which is stored as the key for each group of records.\n\n`#IPADDRESS#` will be replaced with your current external IP address.\n\n```json\n    \"accounts\": [\n        {\n            \"provider\": \"godaddy\",\n            \"key\": \"KEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEY\",\n            \"secret\": \"SECRETSECRETSECRETSECRET\",\n            \"records\": {\n                \"yourdomain.com\": [\n                    {\n                        \"type\": \"A\",\n                        \"host\": \"test123\",\n                        \"value\": \"#IPADDRESS#\"\n                    },\n                    {\n                        \"type\": \"MX\",\n                        \"host\": \"test123\",\n                        \"value\": \"ASPMX.L.GOOGLE.COM\"\n                    },\n                    {\n                        \"type\": \"TXT\",\n                        \"host\": \"test123\",\n                        \"value\": \"v=spf1 mx include:spf.protection.outlook.com ip4:#IPADDRESS# ~all\"\n                    }\n                ]\n            }\n        }\n    ]\n```\n\n\n\nYou can obtain your KEY and SECRET here:\n* GoDaddy: https://developer.godaddy.com/keys\n\n## Updating in the background\n\n\n### Option 1 (Preferred)\nThe `--daemon` argument was made to keep the script alive and allow it to check and update the record as needed, the rate at which this happens is defined by the `INTERVAL` setting in your configuration, in seconds. This mode is made for use with [PM2](https://pm2.keymetrics.io/), or `systemd`\n\nExample PM2 installation:\n```shell\nnpm install -g pm2\npm2 start --name DYNADNS index.js -- --daemon\npm2 save\n```\n\n`pm2 startup` will give you a command to run to enable starting pm2 on boot and restoring any processes.\n\n`pm2 log` and `pm2 status` will let you make sure the script is running.\n\n\n### Option 2\nAlternatively by using `crontab`\n\n```shell\n*/5 * * * * node path/to/dynadns/index.js\n```\n\n---\n\n# Roadmap\n\n- ~~Refactor check and update into separate implementations~~\n- ~~Actually parse command line arguments~~\n- ~~Daemon mode with intervaled external IP check (for use with [PM2](https://pm2.keymetrics.io/), or `systemd`)~~\n- ~~Error handling for missing `.env`~~\n- ~~Move record(s) config out of `.env` to JSON~~\n- ~~Support for additional record types (AAAA, CNAME, TXT, MX, PTR)~~\n- ~~Support for multiple record updates~~\n- Callbacks / Webhooks after successful updates\n- Support for Windows and Linux (may work already)\n- Support for additional registrars\n- Support for custom functionality (for providers without APIs)\n\n\nFeel free to contribute 😎\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl422y%2Fdynadns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl422y%2Fdynadns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl422y%2Fdynadns/lists"}