{"id":13581481,"url":"https://github.com/benjaminbear/docker-ddns-server","last_synced_at":"2026-01-18T05:16:10.828Z","repository":{"id":38892551,"uuid":"250750973","full_name":"benjaminbear/docker-ddns-server","owner":"benjaminbear","description":"Dynamic DNS Server with Web UI written in Go","archived":false,"fork":false,"pushed_at":"2025-03-14T01:04:43.000Z","size":1026,"stargazers_count":186,"open_issues_count":25,"forks_count":49,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-06T10:42:50.784Z","etag":null,"topics":["bind9","ddns","docker","docker-compose","dyndns","echo","echo-framework","go","golang"],"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/benjaminbear.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-03-28T08:54:21.000Z","updated_at":"2025-03-25T09:22:14.000Z","dependencies_parsed_at":"2024-05-28T01:22:20.379Z","dependency_job_id":"4492aecd-7dc0-4cbe-9205-309cc5ed1ec2","html_url":"https://github.com/benjaminbear/docker-ddns-server","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/benjaminbear/docker-ddns-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benjaminbear%2Fdocker-ddns-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benjaminbear%2Fdocker-ddns-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benjaminbear%2Fdocker-ddns-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benjaminbear%2Fdocker-ddns-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benjaminbear","download_url":"https://codeload.github.com/benjaminbear/docker-ddns-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benjaminbear%2Fdocker-ddns-server/sbom","scorecard":{"id":232754,"data":{"date":"2025-08-11","repo":{"name":"github.com/benjaminbear/docker-ddns-server","commit":"6cc20a66e51f1782a9c392488458738099f5f94f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Code-Review","score":2,"reason":"Found 3/11 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/containers.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/containers.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/containers.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/containers.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/containers.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/containers.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/containers.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/containers.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/containers.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/containers.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/benjaminbear/docker-ddns-server/containers.yml/master?enable=pin","Warn: containerImage not pinned by hash: deployment/Dockerfile:1","Warn: containerImage not pinned by hash: deployment/Dockerfile:11: pin your Docker image by updating debian:12-slim to debian:12-slim@sha256:8f8e63bb364a33694362f38ee9a9e38b09eb9eb138584693800b87ca173bfd4a","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T05:07:43.313Z","repository_id":38892551,"created_at":"2025-08-17T05:07:43.313Z","updated_at":"2025-08-17T05:07:43.313Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28530807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["bind9","ddns","docker","docker-compose","dyndns","echo","echo-framework","go","golang"],"created_at":"2024-08-01T15:02:03.111Z","updated_at":"2026-01-18T05:16:10.793Z","avatar_url":"https://github.com/benjaminbear.png","language":"Go","funding_links":[],"categories":["Go","golang"],"sub_categories":[],"readme":"# Dynamic DNS Server for Docker with Web UI written in Go\n\n![Build status](https://img.shields.io/github/actions/workflow/status/benjaminbear/docker-ddns-server/build.yml)\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/benjaminbear/docker-ddns-server)\n![Go version](https://img.shields.io/github/go-mod/go-version/benjaminbear/docker-ddns-server?filename=dyndns%2Fgo.mod)\n![License](https://img.shields.io/github/license/benjaminbear/docker-ddns-server)\n\nWith docker-ddns-server you can set up your own dynamic DNS server. This project is inspired by https://github.com/dprandzioch/docker-ddns . In addition to the original version, you can setup and maintain your dyndns entries via simple web ui.\n\n\u003cp float=\"left\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/benjaminbear/docker-ddns-server/master/img/addhost.png\" width=\"285\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/benjaminbear/docker-ddns-server/master/img/listhosts.png\" width=\"285\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/benjaminbear/docker-ddns-server/master/img/listlogs.png\" width=\"285\"\u003e\n\u003c/p\u003e\n\n## Installation\n\nYou can either take the docker image or build it on your own.\n\n### Using the docker image\n\nhttps://registry.hub.docker.com/r/bbaerthlein/docker-ddns-server\n\nJust customize this to your needs and run:\n\n```\ndocker run -it -d \\\n    -p 8080:8080 \\\n    -p 53:53 \\\n    -p 53:53/udp \\\n    -v /somefolder:/var/cache/bind \\\n    -v /someotherfolder:/root/database \\\n    -e DDNS_ADMIN_LOGIN=admin:123455546. \\\n    -e DDNS_DOMAINS=dyndns.example.com \\\n    -e DDNS_PARENT_NS=ns.example.com \\\n    -e DDNS_DEFAULT_TTL=3600 \\\n    --name=dyndns \\\n    bbaerthlein/docker-ddns-server:latest\n```\n\n### Using docker-compose\n\nYou can also use Docker Compose to set up this project. For an example `docker-compose.yml`, please refer to this file: https://github.com/benjaminbear/docker-ddns-server/blob/master/deployment/docker-compose.yml\n\n### Configuration\n\n`DDNS_ADMIN_LOGIN` is a htpasswd username password combination used for the web ui. You can create one by using htpasswd:\n```\nhtpasswd -nb user password\n```\nIf you want to embed this into a docker-compose.yml you have to double the dollar signs for escaping:\n```\necho $(htpasswd -nb user password) | sed -e s/\\\\$/\\\\$\\\\$/g\n```\nIf `DDNS_ADMIN_LOGIN` is not set, all /admin routes are without protection. (use case: auth proxy)\n\n`DDNS_DOMAINS` are the domains of the webservice and the domain zones of your dyndns server (see DNS Setup) i.e. `dyndns.example.com,dyndns.example.org` (comma separated list)\n\n`DDNS_PARENT_NS` is the parent name server of your domain i.e. `ns.example.com`\n\n`DDNS_DEFAULT_TTL` is the default TTL of your dyndns server.\n\n`DDNS_CLEAR_LOG_INTERVAL` optional: clear log entries automatically in days (integer) e.g. `DDNS_CLEAR_LOG_INTERVAL:30`\n\n`DDNS_ALLOW_WILDCARD` optional: allows all `*.subdomain.dyndns.example.com` to point to your ip (boolean) e.g. `true`\n\n`DDNS_LOGOUT_URL` optional: allows a logout redirect to certain url by clicking the logout button (string) e.g. `https://example.com` \n\n### DNS setup\n\nIf your parent domain is `example.com` and you want your dyndns domain to be `dyndns.example.com`,\nan example domain of your dyndns server would be `blog.dyndns.example.com`.\n\nYou have to add these entries to your parent dns server:\n```\ndyndns                   IN NS      ns\nns                       IN A       \u003cput ipv4 of dns server here\u003e\nns                       IN AAAA    \u003coptional, put ipv6 of dns server here\u003e\n```\n\n## Updating entry\n\nAfter you have added a host via the web ui you can setup your router.\nExample update URL:\n\n```\nhttp://dyndns.example.com:8080/update?hostname=blog.dyndns.example.com\u0026myip=1.2.3.4\nor\nhttp://username:password@dyndns.example.com:8080/update?hostname=blog.dyndns.example.com\u0026myip=1.2.3.4\n```\n\nthis updates the host `blog.dyndns.example.com` with the IP 1.2.3.4. You have to setup basic authentication with the username and password from the web ui.\n\nIf your router doensn't support sending the ip address (OpenWRT) you don't have to set myip field:\n\n```\nhttp://dyndns.example.com:8080/update?hostname=blog.dyndns.example.com\nor\nhttp://username:password@dyndns.example.com:8080/update?hostname=blog.dyndns.example.com\n```\n\nThe handler will also listen on:\n* /nic/update\n* /v2/update\n* /v3/update\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjaminbear%2Fdocker-ddns-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenjaminbear%2Fdocker-ddns-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjaminbear%2Fdocker-ddns-server/lists"}