{
  "name": "🛠️ Auto n8n updater (Docker)",
  "nodes": [
    {
      "id": "d4839dc7-7814-45ed-8afe-9605f212c451",
      "name": "Docker Path",
      "type": "n8n-nodes-base.set",
      "position": [
        -1560,
        820
      ]
    },
    {
      "id": "2d99535e-e0be-42ba-a0cf-f4bb94ea2532",
      "name": "Update Docker",
      "type": "n8n-nodes-base.ssh",
      "position": [
        1520,
        680
      ]
    },
    {
      "id": "8d113bfe-843d-4109-b6d0-c26c104e6ed9",
      "name": "Get n8n Current Version",
      "type": "n8n-nodes-base.ssh",
      "position": [
        -1260,
        820
      ]
    },
    {
      "id": "dc0f16e4-5623-4dd5-84f3-8d778f75dbb4",
      "name": "Get Instance's Settings",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2060,
        820
      ]
    },
    {
      "id": "22aedea8-ba64-430b-8eb0-77f52e43eabb",
      "name": "Is Docker",
      "type": "n8n-nodes-base.if",
      "position": [
        -1840,
        820
      ]
    },
    {
      "id": "fff24986-c8bc-4766-bd42-2f565790d5db",
      "name": "Get Version's Last Update",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -820,
        820
      ]
    },
    {
      "id": "e8f5842c-7f1e-4780-8063-36152c393a0e",
      "name": "Target Version",
      "type": "n8n-nodes-base.set",
      "position": [
        -1040,
        820
      ]
    },
    {
      "id": "c8134924-96ee-4cfc-ad82-2549ddd7ee63",
      "name": "Get Current Version",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -600,
        820
      ]
    },
    {
      "id": "8da1ce03-6931-4c83-b58f-676705543f92",
      "name": "Needs Update ?",
      "type": "n8n-nodes-base.if",
      "position": [
        -380,
        820
      ]
    },
    {
      "id": "faebf9a0-5ee2-44b4-9bd1-ab789a434cde",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        580,
        800
      ]
    },
    {
      "id": "a186f1fa-ac56-49fb-a302-c2895deefd3b",
      "name": "Approved ?",
      "type": "n8n-nodes-base.if",
      "position": [
        1100,
        700
      ]
    },
    {
      "id": "1d03dffa-7127-4d43-9114-a1cc4cf6fa3b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        160
      ],
      "parameters": {
        "width": 1460,
        "height": 820,
        "content": "## ⚠️ MANUAL APPROVAL SECTION\n\nThis entire block handles fetching release notes and waiting for your approval on Telegram.\n\n**To enable fully automatic updates**, delete all nodes in this section and "
      }
    },
    {
      "id": "a8fcb64e-bfd2-4ce7-ad05-55b0750660ed",
      "name": "Every Hour",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2280,
        820
      ]
    },
    {
      "id": "5b886eb4-39b9-49f2-9f46-32a09638e490",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        500
      ],
      "parameters": {
        "width": 260,
        "height": 360,
        "content": "### 💬 APPROVAL NOTIFICATION\n\n1.  Select your **Telegram Bot** credential.\n2.  Set the **Chat ID** to your personal Telegram chat ID to receive the update notifications."
      }
    },
    {
      "id": "038321ee-1b56-4130-9cde-b2ed699a8470",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        340
      ],
      "parameters": {
        "width": 340,
        "height": 620,
        "content": "### 🤖 AI Release Summary\n\nThese nodes fetch the official release notes and use an AI model to create a simple, easy-to-read summary.\n\nYou can replace the Google Gemini node with any other LLM node (Op"
      }
    },
    {
      "id": "ddf276d3-fb7c-4cc9-9b38-6e054ead91ab",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        360
      ],
      "parameters": {
        "width": 300,
        "height": 380,
        "content": "### 🕒 Version Check\n\nThis node checks if the new version was published after the last published version checked. This prevents sending duplicate notifications for the same update, as is will only proc"
      }
    },
    {
      "id": "bf4e80ad-ada2-4733-a6e7-7719d26c9dd0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        380
      ],
      "parameters": {
        "width": null,
        "height": 480,
        "content": "### 📝 Fetch Release Notes\n\nThis node retrieves the official release notes for the new version directly from the n8n GitHub repository API.\n\nThis provides the raw content for the AI to summarize. If th"
      }
    },
    {
      "id": "548f86b7-b358-4bbf-b7b9-c172638be963",
      "name": "Release Overview",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        480,
        580
      ]
    },
    {
      "id": "98b2c58c-7b57-43c2-87fb-c568bcfb3dfa",
      "name": "Approve Update",
      "type": "n8n-nodes-base.telegram",
      "position": [
        880,
        700
      ]
    },
    {
      "id": "66e039dc-4338-462a-82df-07d1b1f41c1c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1660,
        540
      ],
      "parameters": {
        "width": 300,
        "height": 440,
        "content": "### ⚙️ CONFIGURE YOUR SERVER PATHS HERE\n\n*   **`docker_path`**: Set this to the **absolute path** on your server where your `docker-compose.yml` file is located.\n    *   Example: `/home/user/n8n-docke"
      }
    },
    {
      "id": "41c811b8-0b76-4937-a4e7-5c7e3f47c849",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        660
      ],
      "parameters": {
        "width": 260,
        "height": 320,
        "content": "### 🔒 SSH Connection\n\nSelect your SSH credential for the server hosting your n8n instance in **both** of these nodes."
      }
    },
    {
      "id": "d9c70db1-39dc-4b62-b55e-8228a0cec23b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        640
      ],
      "parameters": {
        "width": 660,
        "height": 340,
        "content": "### 💡 How Update Detection Works\n\nThis workflow compares the unique `digest` of your running Docker image with the latest `digest` on Docker Hub for your tag (e.g., `latest`).\n\nIf they are different, "
      }
    },
    {
      "id": "5f33f467-1daa-4eef-9db1-f5dbd2d9b121",
      "name": "Get n8n Github Release",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        700
      ]
    },
    {
      "id": "7b066460-0897-47ea-9c45-2d7a0d3e910d",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2140,
        580
      ],
      "parameters": {
        "width": 260,
        "height": 400,
        "content": "### 🔎 Get Instance Info\n\nThis node fetches local instance settings, like the current version and whether it's running on Docker.\n\nThis step ensures the workflow only proceeds if it's on a compatible ("
      }
    },
    {
      "id": "03e102d7-6c8c-4c97-86ae-4240d2b1bd3b",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1320,
        240
      ],
      "parameters": {
        "width": 520,
        "height": 600,
        "content": "### 🚀 Final Step: Execute Update\n\nThis is the final action node. It connects to your server via SSH and runs the command to update your n8n Docker instance.\n\n**How it works:**\nThe command performs thr"
      }
    },
    {
      "id": "407c5a62-26dc-4f3c-ab4d-8ac42b89fd97",
      "name": "New Version ?",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        220,
        580
      ]
    }
  ],
  "connections": {
    "Is Docker": {
      "main": [
        [
          {
            "node": "Docker Path",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Approved ?": {
      "main": [
        [
          {
            "node": "Update Docker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Hour": {
      "main": [
        [
          {
            "node": "Get Instance's Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Docker Path": {
      "main": [
        [
          {
            "node": "Get n8n Current Version",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Version ?": {
      "main": [
        [
          {
            "node": "Release Overview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Approve Update": {
      "main": [
        [
          {
            "node": "Approved ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Needs Update ?": {
      "main": [
        [
          {
            "node": "Get n8n Github Release",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Target Version": {
      "main": [
        [
          {
            "node": "Get Version's Last Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Release Overview": {
      "main": [
        [
          {
            "node": "Approve Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Current Version": {
      "main": [
        [
          {
            "node": "Needs Update ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get n8n Github Release": {
      "main": [
        [
          {
            "node": "New Version ?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Approve Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Instance's Settings": {
      "main": [
        [
          {
            "node": "Is Docker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get n8n Current Version": {
      "main": [
        [
          {
            "node": "Target Version",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Release Overview",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get Version's Last Update": {
      "main": [
        [
          {
            "node": "Get Current Version",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}