{"id":27078766,"url":"https://github.com/jonepl/namecheap-ddns-updater","last_synced_at":"2026-04-29T17:03:31.912Z","repository":{"id":285833613,"uuid":"958946991","full_name":"jonepl/namecheap-ddns-updater","owner":"jonepl","description":"Dynamic DNS (DDNS) service based on Namecheap! Access your home network remotely via a custom domain name without a static IP! Written in pure BASH~","archived":false,"fork":false,"pushed_at":"2025-04-02T22:25:28.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T23:26:28.029Z","etag":null,"topics":["api","bash","ddns-updater","dns","namecheap"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/jonepl.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-02T02:51:11.000Z","updated_at":"2025-04-02T22:25:31.000Z","dependencies_parsed_at":"2025-04-02T23:26:47.034Z","dependency_job_id":"a9146049-8a2a-4fa6-8fa9-1ad2ef72ce65","html_url":"https://github.com/jonepl/namecheap-ddns-updater","commit_stats":null,"previous_names":["jonepl/namecheap-ddns-updater"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonepl/namecheap-ddns-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonepl%2Fnamecheap-ddns-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonepl%2Fnamecheap-ddns-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonepl%2Fnamecheap-ddns-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonepl%2Fnamecheap-ddns-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonepl","download_url":"https://codeload.github.com/jonepl/namecheap-ddns-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonepl%2Fnamecheap-ddns-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32435122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","bash","ddns-updater","dns","namecheap"],"created_at":"2025-04-06T01:17:54.169Z","updated_at":"2026-04-29T17:03:31.892Z","avatar_url":"https://github.com/jonepl.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Namecheap DDNS Updater (w/ Mock Server)\n\nThis is a lightweight Docker-based mock server that simulates how your home server updates its public IP using Namecheap's [Dynamic DNS (DDNS)](https://www.namecheap.com/support/knowledgebase/article.aspx/29/11/how-do-i-dynamically-update-my-hosts-ip-with-an-http-request/) API.\n\nIt's designed to **test and validate** your DDNS update script logic in a containerized environment — without depending on your actual home server.\n\n---\n\n## 📁 Project Structure\n\n```bash\n├── Dockerfile        # Builds the testing container \n├── namecheap-ddns.sh # The DDNS update script (entrypoint) \n└── .env.example      # Template for your environment variables\n```\n\n## 🚀 Getting Started\n\n### 1. 🔧 Setup Your Environment File\n\nCopy the example environment file and customize it with your own Namecheap credentials and subdomain:\n\n```bash\ncp .env.example .env\n```\n\nEdit .env:\n\n```\nDOMAIN=yourdomain.com\nSUBDOMAIN=vpn\nPASSWORD=your_ddns_password\nDRY_RUN=true\n```\n⚠️ Never commit your .env file with real credentials. Only .env.example should go in version control.\n\n### 2. 🛠️ Build the Docker Image\n```bash\ndocker build -t mock-namecheap-ddns .\n```\n\n### 3. 🧪 Run the Container (Mock Test)\n```bash\ndocker run --rm \\\n  --env-file .env \\\n  --name ddns-test \\\n  mock-namecheap-ddns\n```\n\nThe script will:\n\n* Load your .env file\n* Fetch your current public IP\n* Compare it to the DNS record for your subdomain\n* Attempt to update the DNS record using Namecheap’s API. If the DRY_RUN environment variable is removed your Namecheap A record will be updated.\n\n\n## 📓 Notes\n* This container does not run persistently — it simply executes the script and exits.\n* It's intended for mock testing only (not for production DDNS updates).\n* If you plan to automate this on your home server, you can use the systemd script [HERE](./scheduler/namecheap-setup.sh). Be sure to read through it to ensure your files are moved to the desire locations.\n* Automatic log rotation is built-in:\n\n  If the log file (/var/log/namecheap-ddns.log) grows beyond 1MB, it will be backed up to namecheap-ddns.log.bak and a new log file will be created. This ensures long-running setups won’t accumulate unbounded log files.\n\n\n## 🛡️ Disclaimer\nThis project is for educational and testing purposes. Be cautious with API credentials and avoid running this in short intervals to prevent being rate-limited by Namecheap.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonepl%2Fnamecheap-ddns-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonepl%2Fnamecheap-ddns-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonepl%2Fnamecheap-ddns-updater/lists"}