---
title: Cloudflare
description: Automatically update your Cloudflare DNS records.
ha_category:
  - Network
ha_release: 0.74
ha_codeowners:
  - '@ludeeus'
ha_domain: cloudflare
---

With the `cloudflare` integration, you can keep your Cloudflare records up to date.

The integration runs every hour, but can also be started manually by using the service `cloudflare.update_records` under services.

<div class='note warning'>

Due to a limitation in the Cloudflare API, you can not use this integration with any of the following TLD's:

- `.cf`
- `.ga`
- `.gq`
- `.ml`
- `.tk`

</div>

## Setup

You can find your global API key in your Cloudflare account settings.

## Configuration

To use the integration in your installation, add the following to your `configuration.yaml` file:

```yaml
# Example configuration.yaml entry
cloudflare:
  email: YOUR_EMAIL_ADDRESS
  api_key: YOUR_GLOBAL_API_KEY
  zone: EXAMPLE.COM
  records:
    - ha
    - www
```

{% configuration cloudflare %}
email:
  description: The email address for your Cloudflare account.
  required: true
  type: string
api_key:
  description: The global API key for your Cloudflare account.
  required: true
  type: string
zone:
  description: The DNS zone (domain) you want to update.
  required: true
  type: string
records:
  description: A list of records (subdomains) you want to update.
  required: true
  type: list
{% endconfiguration %}

## Additional information

### Usage of external service

This platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address.

### API Key

Please note that the `api_key` is the [global API key](https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys#12345682) of your Cloudflare account (not the API Token).

### Home Assistant Companion App

If you would like to use [iOS App](https://companion.home-assistant.io/) via Cloudflare set **Minimum TLS version as 1.2**, in order to do that, do the following:
1. Login to your [Cloudflare](https://dash.cloudflare.com/) account.
2. Choose your domain.
3. Click on the `SSL/TLS` icon.
4. Go to tab `Edge Certificates`.
5. Find `Minimum TLS Version` and set it to **1.2**.

Other settings should not cause any issues.

### SSH over Cloudflare

For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that, create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port.

### Using Cloudflare domain only for Home Assistant

If you want to update just a main domain, place in the records list only your domain, e.g., `example.com`. It will update your `A` DNS record with your IP every hour.

```yaml
# Example configuration.yaml entry for one domain
cloudflare:
  email: YOUR_EMAIL_ADDRESS
  api_key: YOUR_GLOBAL_API_KEY
  zone: EXAMPLE.COM
  records:
    - EXAMPLE.COM
```

#### The minimum DNS record settings (if you have set up HTTPS already)

To redirect from your domain to the IP address of your Home Assistant server set this DNS record:

```text
Type: A
Name: @
IPv4 Address: your.ip.address
```

You can find your current IP address using [this](https://api.ipify.org/) page.

In order to redirect from `https://www` to `https://` you need to set this DNS record:

```text
Type: CNAME
Name: @
Target: example.com (your actual domain)
```

And also create Page Rule:

```text
If the URL matches: www.example.com*
Then the settings are: Forwarding URL
Status: 302 - Temporary redirect
Destination URL: https://example.com/$1
```
