Blog & Astuces

Mettre à jour automatiquement les DNS de son site sur Cloudflare depuis une IP dynamique

Mettre à jour automatiquement les DNS de son site sur Cloudflare depuis une IP dynamique

Tuto

Si vous auto-hébergez (ou si vous souhaitez auto-héberger) votre site web chez vous, sur votre serveur personnel, vous avez sûrement dû tomber sur une problématique : vous disposez d'une adresse IP dynamique.

De nombreux fournisseurs d'accès à Internet ne fournissent qu'une IP (IPV4) dynamique à leurs clients particulier. Seuls les clients professionnel ont droit à une IP fixe. C'est le cas par exemple d'Orange. C'est problématique car en cas de redémarrage de la box, l'adresse IP change. D'autant plus que des mises à jour sont effectuées à certains moments la nuit, ce qui nécessite un redémarrage automatique de celle-ci. Dans ce cas là, si vous auto-hébergez votre site web, celui-ci sera HS.

Une façon de faire est d'utiliser un service de type DynDNS (les box opérateur proposent ce paramétrage) : le problème est que vous obtiendrez un domaine du type [nom].noip.com ou autre, il faut payer pour pouvoir utiliser son propre nom de domaine.

Il existe une autre façon de faire, utilisant Cloudflare, et qui ne nécessite pas la version payante du service. Si vous utilisez déjà ce service pour héberger votre site web, c'est parfait.

Le but ici est de modifier en temps réel votre IP sur les DNS de votre site sur Cloudflare. Comme Cloudflare proxifie votre site, vos visiteurs ne verront que l'IP de Cloudflare et ne verront pas votre IP. De plus, il n'y a pas de problèmes avec les TTL (Time To Live) DNS : la modification est instantanée.

Pour cela, nous allons utiliser une image Docker très simple à configurer, cloudflare-ddns.

Configuration du fichier Docker Compose

Vous pouvez utiliser le fichier Docker Compose suivant pour créer le container Docker :

version: "3"

services:
  cloudflare:
      image: joshava/cloudflare-ddns:latest
      container_name: cloudflare_ddns
      restart: unless-stopped
      volumes:
        - ./config.yaml:/app/config.yaml

Sauvegardez ce contenu dans un fichier docker-compose.yml.

Configuration de l'image

Nous allons ensuite créer le fichier de configuration nécessaire. Mais avant, vous aurez besoin de créer des clés API sur votre compte Cloudflare.

Connectez-vous à votre compte Cloudflare, puis rendez-vous dans Mon profil

Capture d'écran

Rendez-vous ensuite dans la section Jetons API, puis cliquez sur Créer un jeton

Capture d'écran

Sur la page qui va s'ouvrir, défilez tout en bas et cliquez sur Commencer en face de Créer un jeton personnalisé

Capture d'écran

Entrez ensuite les données suivantes, puis validez :

Capture d'écran

Un fois cela fait, votre token sera affiché : copiez le quelque part, nous en aurons besoin pour configurer cloudflare-ddns

Capture d'écran

Une fois cela fait, nous pouvons créer le fichier de configuration dont voici un example

auth:
  scopedToken: COPIEZ_ICI_VOTRE_TOKEN
domains:
  - name: mondomain.com
    type: A
    proxied: true
    create: false
    zoneName: mondomain.com

Dans ce fichier de configuration, copiez d'abord le token récupéré tout à l'heure, puis entrez les différents domaines pour lesquels vous souhaitez mettre à jour automatiquement l'IP sous la section domains.

zone correspond au domaine de premier niveau que vous avez enregistré sous Cloudflare (exemple : eliastiksofts.com)

name correspond à votre nom domaine ou sous-domaine (par exemple : www.eliastiksofts.com), tel qu'affiché dans l'onglet DNS de votre zone

Sauvegardez votre configuration dans un fichier config.yaml, dans le même dossier que le fichier docker-compose.yml.

Une fois cela fait, lancer la création du container avec la commande docker-compose up -d

Vérfiez les logs pour voir si tout fonctionne correctement avec la commande docker container logs cloudflare_ddns

Après environ 5 minutes, vous devriez avoir des logs de ce style :

2022-04-28T16:40:02.079Z [info] Cloudflare DDNS start
2022-04-28T16:40:04.530Z [info] Skipped updating.
2022-04-28T16:40:04.531Z [info] Updated eliastiksofts.com with [IP]

Ainsi, cloudflare-ddns mettra à jour les DNS de votre site toutes les 5 minutes si nécessaire.

Commentaires