{"id":15715581,"url":"https://github.com/serversideup/docker-certbot-dns-cloudflare","last_synced_at":"2026-03-16T08:31:15.115Z","repository":{"id":255397964,"uuid":"849484166","full_name":"serversideup/docker-certbot-dns-cloudflare","owner":"serversideup","description":"A simple wrapper around certbot/dns-cloudflare to add a renewal interval.","archived":false,"fork":false,"pushed_at":"2025-04-18T16:41:19.000Z","size":118,"stargazers_count":25,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-19T04:49:34.895Z","etag":null,"topics":["cloudflare","docker","letsencrypt"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/serversideup/certbot-dns-cloudflare","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serversideup.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},"funding":{"github":"serversideup"}},"created_at":"2024-08-29T17:18:39.000Z","updated_at":"2025-04-18T19:30:15.000Z","dependencies_parsed_at":"2024-10-24T16:07:34.359Z","dependency_job_id":null,"html_url":"https://github.com/serversideup/docker-certbot-dns-cloudflare","commit_stats":null,"previous_names":["serversideup/docker-certbot-cloudflare-dns"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serversideup%2Fdocker-certbot-dns-cloudflare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serversideup%2Fdocker-certbot-dns-cloudflare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serversideup%2Fdocker-certbot-dns-cloudflare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serversideup%2Fdocker-certbot-dns-cloudflare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serversideup","download_url":"https://codeload.github.com/serversideup/docker-certbot-dns-cloudflare/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253830910,"owners_count":21971001,"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","docker","letsencrypt"],"created_at":"2024-10-03T21:42:02.491Z","updated_at":"2026-03-16T08:31:15.108Z","avatar_url":"https://github.com/serversideup.png","language":"Shell","funding_links":["https://github.com/sponsors/serversideup"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\t\u003cimg src=\"https://raw.githubusercontent.com/serversideup/docker-certbot-dns-cloudflare/main/.github/header.png\" width=\"1200\" alt=\"Docker Images Logo\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/serversideup/docker-certbot-dns-cloudflare/actions/workflows/publish_docker-images-production.yml\"\u003e\u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/serversideup/docker-certbot-dns-cloudflare/.github%2Fworkflows%2Fpublish_docker-images-production.yml\" /\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/serversideup/docker-certbot-dns-cloudflare/blob/main/LICENSE\" target=\"_blank\"\u003e\u003cimg src=\"https://badgen.net/github/license/serversideup/docker-certbot-dns-cloudflare\" alt=\"License\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/sponsors/serversideup\"\u003e\u003cimg src=\"https://badgen.net/badge/icon/Support%20Us?label=GitHub%20Sponsors\u0026color=orange\" alt=\"Support us\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://community.serversideup.net\"\u003e\u003cimg alt=\"Discourse users\" src=\"https://img.shields.io/discourse/users?color=blue\u0026server=https%3A%2F%2Fcommunity.serversideup.net\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://serversideup.net/discord\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/910287105714954251?color=blueviolet\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Certbot Cloudflare DNS Docker Container\n\nThis container is used to generate and automatically renew SSL certificates from Let's Encrypt using the Cloudflare DNS plugin. It's based off the [official Certbot image](https://hub.docker.com/r/certbot/dns-cloudflare) with some modifications to make it more flexible and configurable.\n\n| Docker Image | Size |\n|-------------|------|\n| [serversideup/certbot-dns-cloudflare](https://hub.docker.com/r/serversideup/certbot-dns-cloudflare) | ![Docker Image Size](https://img.shields.io/docker/image-size/serversideup/certbot-dns-cloudflare/latest?style=flat-square) |\n\n## Base Image\n\nThe image is based on `certbot/dns-cloudflare:latest`, providing a stable and up-to-date environment for running Certbot with Cloudflare DNS authentication.\n\n## Features\n\n- Automatic SSL certificate generation and renewal using Let's Encrypt\n- No configs needed, this image generates the cloudflare.ini file for you\n- Cloudflare DNS authentication for domain validation\n- Customizable configuration via environment variables\n- Periodic certificate renewal checks\n- Windows support (set `REPLACE_SYMLINKS` to `true`)\n- Native Docker health checks to ensure the server is running\n\n### Works great for orchestrated deployments\n\nWe designed this image to work great in orchestrated deployments like Kubernetes, Docker Swarm, or even in Github Actions. Look how simple the syntax is:\n\n```yaml\n  certbot:\n    image: serversideup/certbot-dns-cloudflare\n    volumes:\n      - certbot_data:/etc/letsencrypt\n    environment:\n      CLOUDFLARE_API_TOKEN: \"${CLOUDFLARE_API_TOKEN}\"\n      CERTBOT_EMAIL: \"${CERTBOT_EMAIL}\"\n      CERTBOT_DOMAINS: \"${CERTBOT_DOMAINS}\"\n      CERTBOT_KEY_TYPE: \"rsa\"\n\n  volumes:\n    certbot_data:\n```\n\n## Environment Variables\n\nThe following environment variables can be used to customize the Certbot container:\n\n| Variable               | Description                                                         | Default Value |\n|------------------------|---------------------------------------------------------------------|---------------|\n| `CERTBOT_DOMAINS`      | Comma-separated list of domains for which to obtain the certificate (example: `example.com,www.example.com`) | - |\n| `CERTBOT_CERT_NAME`    | Explicit certificate name to update/modify ([See official docs →](https://eff-certbot.readthedocs.io/en/stable/using.html#changing-a-certificate-s-domains)) | - |\n| `CERTBOT_EXPAND`       | **DEPRECATED**: Expand existing certificate to add domains (use CERTBOT_CERT_NAME instead, [see official docs →](https://eff-certbot.readthedocs.io/en/stable/using.html#re-creating-and-updating-existing-certificates)) | `false` |\n| `CERTBOT_EMAIL`        | Email address for Let's Encrypt notifications                       | - |\n| `CERTBOT_KEY_TYPE`     | Type of private key to generate                                     | `ecdsa` |\n| `CERTBOT_SERVER`       | The ACME server URL                                                 | `https://acme-v02.api.letsencrypt.org/directory` |\n| `CLOUDFLARE_API_TOKEN` | Cloudflare API token for DNS authentication (see below how to create one)                         | - |\n| `CLOUDFLARE_CREDENTIALS_FILE` | Path to the Cloudflare credentials file. | `/cloudflare.ini` |\n| `CLOUDFLARE_PROPAGATION_SECONDS` | Wait time (in seconds) after setting DNS TXT records before validation. Useful if DNS propagation is slow. | `10` |\n| `DEBUG`                | Enable debug mode (prints more information to the console)            | `false`                    |\n| `PUID`                 | The user ID to run certbot as                                       | `0`                    |\n| `PGID`                 | The group ID to run certbot as                                        | `0`                    |\n| `RENEWAL_INTERVAL`     | Interval between certificate renewal checks. Set to `0` to disable renewals and only run once.                         | 43200 seconds (12 hours) |\n| `REPLACE_SYMLINKS`     | Replaces symlinks with direct copies of the files they reference (required for Windows) | `false`                    |\n\n### Creating a Cloudflare API Token\n\n\u003e [!WARNING]  \n\u003e Treat this token like a password. It will grant access to your Cloudflare account and can be used to modify DNS records.\n\n1. Go to the [Cloudflare API Tokens](https://dash.cloudflare.com/profile/api-tokens) page.\n2. Click on \"Create Token\".\n3. Click \"Use template\" for the \"Edit Zone DNS\" template.\n4. Change the token name (optional)\n5. Set a specific zone under \"Zone Resources\" (optional)\n6. Click on \"Continue to summary\".\n7. Click on \"Create Token\".\n\n## Usage\n\n1. Pull the Docker image:\n   ```sh\n   docker pull serversideup/certbot-dns-cloudflare:latest\n   ```\n\n2. Run the container with the required environment variables:\n\n\u003e [!CAUTION]\n\u003e Make sure to replace the `-v /path/to/your/certs:/etc/letsencrypt` with a valid path on your host machine.\n\n   ```sh\n   docker run \\\n    -e CERTBOT_DOMAINS=\"yourdomain.com\" \\\n    -e CERTBOT_EMAIL=\"your-email@example.com\" \\\n    -e CLOUDFLARE_API_TOKEN=\"your-cloudflare-api-token\" \\\n    -v /path/to/your/certs:/etc/letsencrypt \\\n   serversideup/certbot-dns-cloudflare:latest\n   ```\n\u003e [!TIP]\n\u003e For Wildcard Certificates, use the following order for the Docker instance health check: `domain.name, *.domain.name`\n\n3. The container will automatically generate and renew the certificate.\n\n## Resources\n\n- **[Discord](https://serversideup.net/discord)** for friendly support from the community and the team.\n- **[GitHub](https://github.com/serversideup/docker-certbot-dns-cloudflare)** for source code, bug reports, and project management.\n- **[Get Professional Help](https://serversideup.net/professional-support)** - Get video + screen-sharing help directly from the core contributors.\n\n## Contributing\n\nAs an open-source project, we strive for transparency and collaboration in our development process. We greatly appreciate any contributions members of our community can provide. Whether you're fixing bugs, proposing features, improving documentation, or spreading awareness - your involvement strengthens the project.\n\n- **Bug Report**: If you're experiencing an issue while using these images, please [create an issue](https://github.com/serversideup/docker-certbot-dns-cloudflare/issues/new/choose).\n- **Security Report**: Report critical security issues via [our responsible disclosure policy](https://www.notion.so/Responsible-Disclosure-Policy-421a6a3be1714d388ebbadba7eebbdc8).\n\nNeed help getting started? Join our Discord community and we'll help you out!\n\n\u003ca href=\"https://serversideup.net/discord\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/themes/serversideup/images/open-source/join-discord.svg\" title=\"Join Discord\"\u003e\u003c/a\u003e\n\n## Our Sponsors\nAll of our software is free an open to the world. None of this can be brought to you without the financial backing of our sponsors.\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/sponsors/serversideup\"\u003e\u003cimg src=\"https://521public.s3.amazonaws.com/serversideup/sponsors/sponsor-box.png\" alt=\"Sponsors\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n### Black Level Sponsors\n\u003ca href=\"https://sevalla.com\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/uploads/2024/10/sponsor-image.png\" alt=\"Sevalla\" width=\"546px\"\u003e\u003c/a\u003e\n\n#### Bronze Sponsors\n\u003c!-- bronze --\u003eNo bronze sponsors yet. \u003ca href=\"https://github.com/sponsors/serversideup\"\u003eBecome a sponsor →\u003c/a\u003e\u003c!-- bronze --\u003e\n\n#### Individual Supporters\n\u003c!-- supporters --\u003e\u003ca href=\"https://github.com/aagjalpankaj\"\u003e\u003cimg src=\"https://github.com/aagjalpankaj.png\" width=\"40px\" alt=\"aagjalpankaj\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003c!-- supporters --\u003e\n\n## About Us\nWe're [Dan](https://twitter.com/danpastori) and [Jay](https://twitter.com/jaydrogers) - a two person team with a passion for open source products. We created [Server Side Up](https://serversideup.net) to help share what we learn.\n\n\u003cdiv align=\"center\"\u003e\n\n| \u003cdiv align=\"center\"\u003eDan Pastori\u003c/div\u003e                  | \u003cdiv align=\"center\"\u003eJay Rogers\u003c/div\u003e                                 |\n| ----------------------------- | ------------------------------------------ |\n| \u003cdiv align=\"center\"\u003e\u003ca href=\"https://twitter.com/danpastori\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/uploads/2023/08/dan.jpg\" title=\"Dan Pastori\" width=\"150px\"\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://twitter.com/danpastori\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/themes/serversideup/images/open-source/twitter.svg\" title=\"Twitter\" width=\"24px\"\u003e\u003c/a\u003e\u003ca href=\"https://github.com/danpastori\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/themes/serversideup/images/open-source/github.svg\" title=\"GitHub\" width=\"24px\"\u003e\u003c/a\u003e\u003c/div\u003e                        | \u003cdiv align=\"center\"\u003e\u003ca href=\"https://twitter.com/jaydrogers\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/uploads/2023/08/jay.jpg\" title=\"Jay Rogers\" width=\"150px\"\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://twitter.com/jaydrogers\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/themes/serversideup/images/open-source/twitter.svg\" title=\"Twitter\" width=\"24px\"\u003e\u003c/a\u003e\u003ca href=\"https://github.com/jaydrogers\"\u003e\u003cimg src=\"https://serversideup.net/wp-content/themes/serversideup/images/open-source/github.svg\" title=\"GitHub\" width=\"24px\"\u003e\u003c/a\u003e\u003c/div\u003e                                       |\n\n\u003c/div\u003e\n\n### Find us at:\n\n* **📖 [Blog](https://serversideup.net)** - Get the latest guides and free courses on all things web/mobile development.\n* **🙋 [Community](https://community.serversideup.net)** - Get friendly help from our community members.\n* **🤵‍♂️ [Get Professional Help](https://serversideup.net/professional-support)** - Get video + screen-sharing support from the core contributors.\n* **💻 [GitHub](https://github.com/serversideup)** - Check out our other open source projects.\n* **📫 [Newsletter](https://serversideup.net/subscribe)** - Skip the algorithms and get quality content right to your inbox.\n* **🐥 [Twitter](https://twitter.com/serversideup)** - You can also follow [Dan](https://twitter.com/danpastori) and [Jay](https://twitter.com/jaydrogers).\n* **❤️ [Sponsor Us](https://github.com/sponsors/serversideup)** - Please consider sponsoring us so we can create more helpful resources.\n\n## Our products\nIf you appreciate this project, be sure to check out our other projects.\n\n### 📚 Books\n- **[The Ultimate Guide to Building APIs \u0026 SPAs](https://serversideup.net/ultimate-guide-to-building-apis-and-spas-with-laravel-and-nuxt3/)**: Build web \u0026 mobile apps from the same codebase.\n- **[Building Multi-Platform Browser Extensions](https://serversideup.net/building-multi-platform-browser-extensions/)**: Ship extensions to all browsers from the same codebase.\n\n### 🛠️ Software-as-a-Service\n- **[Bugflow](https://bugflow.io/)**: Get visual bug reports directly in GitHub, GitLab, and more.\n- **[SelfHost Pro](https://selfhostpro.com/)**: Connect Stripe or Lemonsqueezy to a private docker registry for self-hosted apps.\n\n### 🌍 Open Source\n- **[AmplitudeJS](https://521dimensions.com/open-source/amplitudejs)**: Open-source HTML5 \u0026 JavaScript Web Audio Library.\n- **[Spin](https://serversideup.net/open-source/spin/)**: Laravel Sail alternative for running Docker from development → production.\n- **[Financial Freedom](https://github.com/serversideup/financial-freedom)**: Open source alternative to Mint, YNAB, \u0026 Monarch Money.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserversideup%2Fdocker-certbot-dns-cloudflare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserversideup%2Fdocker-certbot-dns-cloudflare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserversideup%2Fdocker-certbot-dns-cloudflare/lists"}