{"id":15288861,"url":"https://github.com/daniel-lerch/dyndns-distributor","last_synced_at":"2025-07-12T04:38:58.892Z","repository":{"id":110485047,"uuid":"131202697","full_name":"daniel-lerch/dyndns-distributor","owner":"daniel-lerch","description":"Proxy for your router to update multiple Dynamic DNS accounts/providers","archived":false,"fork":false,"pushed_at":"2025-03-13T19:05:05.000Z","size":82,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T04:46:24.425Z","etag":null,"topics":["aspnetcore","docker-image","dyndns","dyndns-distributor"],"latest_commit_sha":null,"homepage":"","language":"Go","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/daniel-lerch.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":"2018-04-26T19:41:32.000Z","updated_at":"2025-03-13T19:05:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"5d21963a-654c-412b-89bd-2ab27c6600f6","html_url":"https://github.com/daniel-lerch/dyndns-distributor","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel-lerch%2Fdyndns-distributor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel-lerch%2Fdyndns-distributor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel-lerch%2Fdyndns-distributor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel-lerch%2Fdyndns-distributor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daniel-lerch","download_url":"https://codeload.github.com/daniel-lerch/dyndns-distributor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252816520,"owners_count":21808702,"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":["aspnetcore","docker-image","dyndns","dyndns-distributor"],"created_at":"2024-09-30T15:53:52.589Z","updated_at":"2025-05-07T04:46:41.291Z","avatar_url":"https://github.com/daniel-lerch.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DynDNS Distributor #\n\n[![](https://img.shields.io/docker/pulls/daniellerch/dyndns-distributor.svg)](https://hub.docker.com/r/daniellerch/dyndns-distributor)\n[![](https://img.shields.io/docker/image-size/daniellerch/dyndns-distributor/latest.svg)](https://hub.docker.com/r/daniellerch/dyndns-distributor)\n\nA dynamic DNS proxy for your router to update multiple domains.\n\nMost routers only support a single dynamic DNS update URL.\nIf you want to update multiple hostnames, just configure DynDNS Distributor as update URL in your router and all your configured URLs will be updated immediately.\n\n## Installation ##\n\nInstallation is easiest with Docker Compose.\nCreate a `compose.yaml` file with the following content and move on to configuration (next heading) before start. \n\n```yaml\nservices:\n  app:\n    image: daniellerch/dyndns-distributor:4\n    volumes:\n      - ./dyndnsconfig.json:/app/dyndnsconfig.json\n    ports:\n      - \"8080:8080\"\n```\n\nWindows is not supported anymore but if you want me to provide Windows builds, just open an issue.\n\n## Configuration ##\nThe configuration of update URLs, accounts and credentials is done in the file `dyndnsconfig.json` located in the application root.\nPer default, the configuration looks like this:\n```json\n{\n  \"ListenerAddress\": \"localhost:8080\",\n  \"IpRetrieveUrl\": \"https://api.ipify.org/\",\n  \"UserAgent\": \"DynDNS Distributor - 4.0\",\n  \"UpdateOnStartup\": true,\n  \"Username\": \"proxyuser\",\n  \"Password\": \"localnetpw123\",\n  \"Records\": [\n    {\n      \"UpdateUrl\": \"https://13135:7sN2KS6L8W@members.feste-ip.net/nic/update?hostname=test.feste-ip.net\"\n    },\n    {\n      \"UpdateUrl\": \"https://username:password@dyndns.example.com/update?hostname=mydomain.de\u0026myip=\u003cipaddr\u003e\"\n    },\n    {\n      \"UpdateUrl\": \"https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{dns_record_id}\",\n      \"Method\": \"PATCH\",\n      \"Headers\": [\n        \"Authorization: Bearer {api_token}\"\n      ],\n      \"Body\": \"{\\\"content\\\":\\\"\u003cipaddr\u003e\\\"}\"\n    }\n  ]\n}\n```\n\n#### `ListenerAddress` ####\nThe address for DynDNS Distributor to listen for HTTP requests from your router.\nUse `:8080` to listen on port 8080 on all network interfaces.\n\n#### `IpRetrieveUrl` ####\nAn URL to retrieve the extern IP address for local accounts.\n\n#### `UserAgent` ####\nThe user agent that will be used for DNS updates.\nSome providers, like strato.de or dyn.com require a specific user agent.\n\n#### `Username` \u0026 `Password` ####\nCredentials for basic authentication. Setting `Username` and `Password` to `\"\"` disables authentication.\n\n\u003e ⚠️ Note that an attacker in your local network can still capture packets sent from your router to the device running DynDNS Distributor and thereby gain access to change your DNS records to arbitrary IP addresses, generate valid TLS certificates, and so on. Basic authentication just makes it harder because the attacker must wait for some hours or days until an IP address change happens.\n\n#### `UpdateOnStartup` ####\nIf set to `true`, DynDNS Distributor will query `IpRetrieveUrl` on startup and update all records according to its value.\n\n#### `Records` ####\nAn array of records to update which must at least have a `UpdateUrl`. More sophisticated requests as required for Cloudflare are supported since DynDNS Distributor 4, too.\n\n## AVM Fritz!Box ##\nIf you use a Fritz!Box as router, you have to configure the following update URL:\n```\nhttp://\u003clocalipaddr\u003e:\u003cport\u003e/update?hostname=\u003cdomain\u003e\u0026myip=\u003cipaddr\u003e\n```\nDo not replace `\u003cdomain\u003e` or `\u003cipaddr\u003e` as this will be done by the router.\n\nExample:\n```\nhttp://192.168.178.46:8080/update?hostname=\u003cdomain\u003e\u0026myip=\u003cipaddr\u003e\n```\nIn the username and password field, please fill in the same values as in your config file.\n\n## Development ##\n\nRecommended setup:\n- Git\n- Go 1.23+\n- VS Code with Go extension\n\nRun it locally:\n\n```bash\ngit clone https://github.com/daniel-lerch/dyndns-distributor\ncd dyndns-distributor\ngo run .\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-lerch%2Fdyndns-distributor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaniel-lerch%2Fdyndns-distributor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-lerch%2Fdyndns-distributor/lists"}