Workflow n8n

Automatisation DNS dynamique avec n8n : mise à jour automatique

Ce workflow n8n permet d'automatiser la mise à jour dynamique des enregistrements DNS sur NameCheap. Dans un contexte où la gestion des adresses IP changeantes peut poser des problèmes pour les entreprises, ce processus s'avère essentiel pour garantir la disponibilité des services en ligne. En utilisant ce workflow, les utilisateurs peuvent s'assurer que leurs sous-domaines restent accessibles, même lorsque leur adresse IP publique change. L'automatisation n8n facilite cette tâche en intégrant plusieurs étapes clés. Étape 1 : un déclencheur Cron active le workflow à intervalles réguliers. Étape 2 : le noeud 'Get Public IP address' interroge l'adresse IP actuelle. Étape 3 : le noeud 'Checks IP if new' compare l'IP obtenue avec l'ancienne pour déterminer si une mise à jour est nécessaire. Étape 4 : si l'IP a changé, le workflow passe par le noeud 'Loops trough Subdomain list' pour traiter chaque sous-domaine. Étape 5 : enfin, le noeud 'Send data to Namecheap' envoie les nouvelles informations à NameCheap pour mettre à jour les enregistrements DNS. Grâce à cette automatisation, les entreprises peuvent réduire les temps d'arrêt et améliorer leur réactivité face aux changements d'infrastructure, ce qui leur permet de se concentrer sur leur cœur de métier. Tags clés : automatisation, DNS, n8n.

Catégorie: Scheduled · Tags: automatisation, DNS, n8n, NameCheap, sous-domaines0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • Cron

    Ce noeud déclenche le workflow à des intervalles réguliers selon une planification définie.

  • Checks IP if new

    Ce noeud vérifie si l'adresse IP est nouvelle en exécutant un code fonctionnel.

  • subdomains

    Ce noeud traite une liste de sous-domaines en exécutant un code fonctionnel.

  • Loops trough Subdomain list

    Ce noeud parcourt la liste des sous-domaines pour effectuer des opérations répétées.

  • Send data to Namecheap

    Ce noeud envoie des données à l'API de Namecheap via une requête HTTP.

  • Get Public IP address

    Ce noeud récupère l'adresse IP publique en effectuant une requête HTTP.

  • yourdomain.com

    Ce noeud définit des valeurs spécifiques pour le domaine, en conservant uniquement celles qui sont définies.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": 3,
  "name": "NameCheap Dynamic DNS (DDNS)",
  "nodes": [
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        380,
        300
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 15
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Checks IP if new",
      "type": "n8n-nodes-base.function",
      "position": [
        740,
        300
      ],
      "parameters": {
        "functionCode": "const staticData = getWorkflowStaticData('global');\nconst newItem = items.map(item => item.json[\"ip\"]);\nconst ildItem = staticData.ildItem; \n\nif (!ildItem) {\n  staticData.ildItem = newItem;\n  return items;\n}\n\n\nconst actualnewItem = newItem.filter((id) => !ildItem.includes(id));\nconst actualItem = items.filter((data) => actualnewItem.includes(data.json['ip']));\nstaticData.ildItem = [...actualnewItem, ...ildItem];\n\nreturn actualItem;"
      },
      "typeVersion": 1
    },
    {
      "name": "subdomains",
      "type": "n8n-nodes-base.function",
      "position": [
        1100,
        300
      ],
      "parameters": {
        "functionCode": "items[0].json = {\n    value: [\n        {id: \"subdomain1\"},\n        {id: \"subdomain2\"},\n        {id: \"subdomain3\"}\n    ]\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "name": "Loops trough Subdomain list",
      "type": "n8n-nodes-base.function",
      "position": [
        1280,
        300
      ],
      "parameters": {
        "functionCode": "const newItems = [];\n\nfor (const item of items[0].json.value) {\n  newItems.push({json: item});\n}\n\nreturn newItems;"
      },
      "typeVersion": 1
    },
    {
      "name": "Send data to Namecheap",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        300
      ],
      "parameters": {
        "url": "=https://dynamicdns.park-your-domain.com/update?host={{$node[\"Loops trough Subdomain list\"].parameter[\"functionCode\"]}}test&domain={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][0][\"value\"]}}&password={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][1][\"value\"]}}&ip={{$node[\"Get Public IP address\"].json[\"ip\"]}}",
        "options": {},
        "responseFormat": "string"
      },
      "typeVersion": 1
    },
    {
      "name": "Get Public IP address",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        560,
        300
      ],
      "parameters": {
        "url": "https://api.ipify.org?format=json",
        "options": {},
        "jsonParameters": true,
        "allowUnauthorizedCerts": true
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "continueOnFail": true
    },
    {
      "name": "yourdomain.com",
      "type": "n8n-nodes-base.set",
      "position": [
        920,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "domain",
              "value": "yourdomain.com"
            },
            {
              "name": "password",
              "value": "your-namecheap-ddns-password"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {},
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Get Public IP address",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "subdomains": {
      "main": [
        [
          {
            "node": "Loops trough Subdomain list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "yourdomain.com": {
      "main": [
        [
          {
            "node": "subdomains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checks IP if new": {
      "main": [
        [
          {
            "node": "yourdomain.com",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Public IP address": {
      "main": [
        [
          {
            "node": "Checks IP if new",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loops trough Subdomain list": {
      "main": [
        [
          {
            "node": "Send data to Namecheap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises qui gèrent des services en ligne nécessitant une mise à jour fréquente des enregistrements DNS, notamment celles utilisant des sous-domaines. Il est idéal pour les équipes techniques ayant un niveau intermédiaire de compétence en automatisation et qui cherchent à simplifier la gestion de leur infrastructure réseau.

Problème résolu

Ce workflow résout le problème de la gestion des adresses IP dynamiques, qui peut entraîner des interruptions de service si les enregistrements DNS ne sont pas mis à jour rapidement. En automatisant ce processus, les utilisateurs éliminent les risques d'inaccessibilité de leurs sites web ou services en ligne, réduisant ainsi les pertes de trafic et les frustrations des utilisateurs. Après la mise en place de ce workflow, les entreprises bénéficient d'une gestion fluide et sans intervention manuelle de leurs enregistrements DNS.

Étapes du workflow

Étape 1 : Le déclencheur Cron active le workflow à des intervalles définis. Étape 2 : Le noeud 'Get Public IP address' récupère l'adresse IP publique actuelle. Étape 3 : Le noeud 'Checks IP if new' vérifie si cette adresse IP est différente de l'ancienne. Étape 4 : Si une nouvelle IP est détectée, le noeud 'Loops trough Subdomain list' parcourt la liste des sous-domaines à mettre à jour. Étape 5 : Enfin, le noeud 'Send data to Namecheap' envoie les informations nécessaires pour mettre à jour les enregistrements DNS sur NameCheap.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier le déclencheur Cron pour ajuster la fréquence des vérifications d'IP. Il est également possible de changer l'URL dans le noeud 'Get Public IP address' si vous souhaitez utiliser un service différent pour récupérer l'IP. Dans le noeud 'yourdomain.com', vous pouvez définir votre domaine principal et les sous-domaines à gérer. Assurez-vous que les paramètres d'authentification dans le noeud 'Send data to Namecheap' sont corrects pour garantir une communication sécurisée avec l'API de NameCheap. Enfin, vous pouvez ajouter des notifications pour être alerté en cas d'échec de la mise à jour.