{"id":15366911,"url":"https://github.com/cupcakearmy/docker-ddns-cloudflare","last_synced_at":"2025-08-31T15:16:56.572Z","repository":{"id":40331097,"uuid":"166975563","full_name":"cupcakearmy/docker-ddns-cloudflare","owner":"cupcakearmy","description":"Cloudflare DDNS Script","archived":false,"fork":false,"pushed_at":"2025-04-10T00:38:05.000Z","size":90,"stargazers_count":29,"open_issues_count":0,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-17T06:03:39.268Z","etag":null,"topics":["cloudflare","ddns","docker","docker-compose","dynamic-dns","dynamic-dns-updater"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/cupcakearmy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"cupcakearmy","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2019-01-22T10:35:13.000Z","updated_at":"2025-04-17T11:17:25.000Z","dependencies_parsed_at":"2023-11-16T21:14:48.288Z","dependency_job_id":"e74dcb3d-1728-417b-81e3-ba288cd2b220","html_url":"https://github.com/cupcakearmy/docker-ddns-cloudflare","commit_stats":{"total_commits":46,"total_committers":4,"mean_commits":11.5,"dds":"0.32608695652173914","last_synced_commit":"e0af9cd82e5d63bbce18358580aad9aa671f47d8"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/cupcakearmy/docker-ddns-cloudflare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupcakearmy%2Fdocker-ddns-cloudflare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupcakearmy%2Fdocker-ddns-cloudflare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupcakearmy%2Fdocker-ddns-cloudflare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupcakearmy%2Fdocker-ddns-cloudflare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cupcakearmy","download_url":"https://codeload.github.com/cupcakearmy/docker-ddns-cloudflare/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupcakearmy%2Fdocker-ddns-cloudflare/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260301984,"owners_count":22988717,"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":["cloudflare","ddns","docker","docker-compose","dynamic-dns","dynamic-dns-updater"],"created_at":"2024-10-01T13:20:15.668Z","updated_at":"2025-06-17T06:04:31.431Z","avatar_url":"https://github.com/cupcakearmy.png","language":"TypeScript","funding_links":["https://github.com/sponsors/cupcakearmy"],"categories":[],"sub_categories":[],"readme":"# Docker DDNS Cloudflare\n\n![Docker Pulls](https://img.shields.io/docker/pulls/cupcakearmy/ddns-cloudflare?style=flat-square)\n![Docker Image Size (tag)](https://img.shields.io/docker/image-size/cupcakearmy/ddns-cloudflare/latest?style=flat-square)\n![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/cupcakearmy/ddns-cloudflare/latest?style=flat-square)\n\n## Features 🌈\n\n- Simple container for setting setting and updating cloudflare records to your local ip address.\n- Only makes requests if the IP has changed.\n- By default it runs once every minute and the IP is resolved by https://api.ipify.org/.\n\n## Quickstart 🚀\n\n1. Get your API Token [here](https://dash.cloudflare.com/profile/api-tokens) (Top right -\u003e My Profile -\u003e API Tokens)\n\nClick create token. You can then use the Edit DNS Zone template. Give it a name.\n\n2. Create an `.env` file:\n\n```bash\nTOKEN=mytoken\n\nZONE=example.org\nDNS_RECORD=some.example.org\nPROXIED=false\n```\n\n3. Run the container\n\n```bash\ndocker run -d --name ddns --restart always --env-file .env cupcakearmy/ddns-cloudflare\n```\n\n### Docker-Copmose\n\nWith docker-compose:\n\n```bash\ngit clone https://github.com/CupCakeArmy/docker-ddns-cloudflare.git\ncp .sample.env .env\n# Edit the .env file with your data\ndocker-compose up -d\n```\n\n## ENV Reference\n\n| Env          | Default                  | Description                                                                                                 |\n| ------------ | ------------------------ | ----------------------------------------------------------------------------------------------------------- |\n| `TOKEN`      |                          | API Token.                                                                                                  |\n| `ZONE`       |                          | Cloudflare zone where your domain is.                                                                       |\n| `DNS_RECORD` |                          | The actual DNS record that should be updated.                                                               |\n| `PROXIED`    | `true`                   | Whether the record is proxied by CloudFlare or not.                                                         |\n| `CRON`       | `*/5 * * * *`            | Frequency of updates. The [following syntax](https://croner.56k.guru/usage/pattern/) is supported           |\n| `RESOLVER`   | `https://api.ipify.org/` | The endpoint used to determine your public ip.                                                              |\n| `LOG_LEVEL`  | `info`                   | Log level to run at. See [winston](https://github.com/winstonjs/winston#logging-levels) for possible values |\n\n## Customize\n\n### Custom CRON\n\nBy default the script runs every 5 minutes. You can customize this by simply setting the `CRON` value in the `.env` file.\n\n```bash\n# .env\n\n# e.g. every minute\nCRON=* * * * *\n```\n\n### Custom Resolver\n\nBy default the script checks the own ip by calling `https://api.ipify.org/`. This also can be configured. It has to be an endpoint that return a plain text containing the ip by get request.\n\n```bash\n# .env\n\nRESOLVER=https://ipv4.icanhazip.com/\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcupcakearmy%2Fdocker-ddns-cloudflare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcupcakearmy%2Fdocker-ddns-cloudflare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcupcakearmy%2Fdocker-ddns-cloudflare/lists"}