Actualizaciones automáticas de aplicaciones auto-hospedadas (despliegue con Coolify)

Avanzado

Este es unDevOps, Multimodal AIflujo de automatización del dominio deautomatización que contiene 18 nodos.Utiliza principalmente nodos como If, Set, Merge, HttpRequest, ManualTrigger. Actualizaciones automáticas de aplicaciones autohospedadas mediante despliegue con Coolify

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "96b96d0aa1e4ff5d5b6779332b149e3ef3364191562d79083d0309cf3ddfa53e"
  },
  "nodes": [
    {
      "id": "74922542-1a88-41fd-83ca-9ff2b1599b50",
      "name": "Sticky • Descripción General",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        16
      ],
      "parameters": {
        "color": 3,
        "width": 520,
        "height": 872,
        "content": "## Overview\n**Purpose:** Auto-check your n8n version and deploy an update via Coolify if a newer release is available.\n\n**Pipeline:** Manual/Schedule → HTTP n8n settings → HTTP GitHub latest → Merge (SQL) → Set (normalize) → IF compare → Deploy or No-Op.\n\n**Before running:**\n- Replace the n8n URL in the *N8N Settings* node.\n- Replace the Coolify API URL (domain + UUID) and add a valid Bearer token credential in *Deploy* node.\n- Adjust the schedule interval if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "34b0fe1d-6b44-4847-a4fe-16a23730cdd0",
      "name": "Sticky • Activador Manual",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        304
      ],
      "parameters": {
        "color": "blue",
        "width": 384,
        "height": 220,
        "content": "## Manual Trigger\nClick **Execute workflow** to run tests immediately.\nNo configuration required."
      },
      "typeVersion": 1
    },
    {
      "id": "c2f1cd58-bf94-4be0-a938-5b758c966798",
      "name": "Sticky • Programador",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        16
      ],
      "parameters": {
        "color": "blue",
        "width": 376,
        "height": 272,
        "content": "## Schedule Trigger\nRuns the check on a timer.\n- Open **Rule → Interval** and set how often to run (e.g., every 6h).\n- Keep both HTTP nodes connected so data reaches the Merge."
      },
      "typeVersion": 1
    },
    {
      "id": "00114438-dacd-43a4-b344-ea20ec8fab78",
      "name": "Sticky • Configuración N8N",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 468,
        "height": 344,
        "content": "## N8N Settings (HTTP Request)\nFetch your instance settings.\n- **Set URL:** `https://<your-n8n-domain>/rest/settings`\n- Output must include `data.versionCli`.\n- No auth needed for default public settings; add auth only if your instance requires it."
      },
      "typeVersion": 1
    },
    {
      "id": "165a79fe-1a72-4308-9595-8b253ac213f5",
      "name": "Sticky • GitHub Última Versión",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        560
      ],
      "parameters": {
        "color": 5,
        "width": 516,
        "height": 324,
        "content": "## GitHub Latest (HTTP Request)\nGets latest n8n release.\n- **URL:** `https://api.github.com/repos/n8n-io/n8n/releases/latest`\n- Field used later: **`name`** (e.g., `n8n@1.60.0`).\n- Keep method GET and no auth."
      },
      "typeVersion": 1
    },
    {
      "id": "29a1e319-7c3f-4442-8563-9ae0dc6dd2f3",
      "name": "Sticky • Fusionar SQL",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        32
      ],
      "parameters": {
        "color": "orange",
        "width": 328,
        "height": 528,
        "content": "## Merge (SQL)\nReduces inputs to 2 fields.\nUse this query:\n```sql\nSELECT input1.data->versionCli AS versionCli,\n       input2.name             AS name\nFROM input1\nLEFT JOIN input2 ON 1=1;\n```\n- Requires exactly 1 item per input.\n- Output keys: `versionCli`, `name`."
      },
      "typeVersion": 1
    },
    {
      "id": "80a0247d-df92-416a-8737-2d7319af0cef",
      "name": "Sticky • Establecer",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        144
      ],
      "parameters": {
        "color": "orange",
        "width": 356,
        "height": 420,
        "content": "## Set (Normalize)\nCreate clean variables for comparison:\n- `actualn8nversion = $json.versionCli`\n- `newn8nversion = $json.name.split('@')[1]`\nBoth as **string**."
      },
      "typeVersion": 1
    },
    {
      "id": "7f5d83a6-5510-414f-9ccb-c3e31bd4b748",
      "name": "Sticky • SI",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        144
      ],
      "parameters": {
        "color": "red",
        "width": 420,
        "height": 420,
        "content": "## IF (Compare)\nCondition: `actualn8nversion !== newn8nversion`.\n- True → deploy update.\n- False → do nothing.\nKeep **caseSensitive** and **strict type** enabled."
      },
      "typeVersion": 1
    },
    {
      "id": "86697e08-a3a2-49ee-af28-8540e7f9983e",
      "name": "Sticky • Desplegar",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2384,
        112
      ],
      "parameters": {
        "color": "purple",
        "width": 460,
        "height": 348,
        "content": "## Deploy (HTTP Request)\nTriggers Coolify deploy.\n- **URL:** `https://<your-coolify-domain>/api/v1/services/<APP_UUID>/restart?latest=true`\n- **Auth:** *HTTP Bearer* credential with a valid API token.\n- Optional: set timeout/retries in **Options**.\nReplace domain and UUID."
      },
      "typeVersion": 1
    },
    {
      "id": "f8ae7d2b-4458-4686-b7e5-7737c5d7b95a",
      "name": "Programar cada vez que se desee iniciar la verificación de actualización",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        496,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "cb7eadb0-7fa3-479c-9fd4-4ef804844999",
      "name": "Sin Operación, no hacer nada",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2448,
        496
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3217fe2c-eae5-4499-9008-33d4cd7b0f09",
      "name": "Si las 2 versiones no son iguales make una actualización de imagen",
      "type": "n8n-nodes-base.if",
      "position": [
        2064,
        368
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c8ee8d9d-1227-4738-a315-478475601721",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.actualn8nversion }}",
              "rightValue": "={{ $json.newn8nversion }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "81a3cf57-6269-4237-8671-0a1e5f46c15d",
      "name": "LLAMAR A COOLIFY O SERVICIO SIMILAR PARA ACTUALIZAR IMAGEN",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2448,
        288
      ],
      "parameters": {
        "url": "https://app.coolify.io/api/v1/services/your-services-uuid/restart?latest=true",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "M2C49Bi5D2s9DGwo",
          "name": "Coolify n8n autom aifb token"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3675b8ea-b9d3-4383-9422-d4335f7bc5f4",
      "name": "Renombrar variable y unificar formato",
      "type": "n8n-nodes-base.set",
      "position": [
        1680,
        368
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a7787c92-705f-445f-8eee-a36c3555203c",
              "name": "actualn8nversion",
              "type": "string",
              "value": "={{ $json.versionCli }}"
            },
            {
              "id": "7e6dc6fa-44be-4e52-bf5c-1ebf4262f18a",
              "name": "newn8nversion",
              "type": "string",
              "value": "={{ $json.name.split(\"@\")[1] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "16bd29a3-b38a-42ec-97e7-533e145eae65",
      "name": "Fusionar datos del bot y pasar solo lo necesario",
      "type": "n8n-nodes-base.merge",
      "position": [
        1200,
        368
      ],
      "parameters": {
        "mode": "combineBySql",
        "query": "SELECT\n  input1.data->versionCli AS versionCli,\n  input2.name AS name\nFROM input1\nLEFT JOIN input2 ON 1=1;",
        "options": {
          "emptyQueryResult": "success"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "50112ebc-7fda-4cb9-94a1-4d7cd924e657",
      "name": "Al hacer clic en 'Ejecutar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        496,
        384
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6d60b6eb-9827-4d46-b4ee-27aedefc7801",
      "name": "LLAMAR A TU INSTANCIA N8N y obtener la versión",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        976,
        176
      ],
      "parameters": {
        "url": "https://yourn8ndomain/rest/settings",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "59b20003-8247-43e1-aa68-7435055aa6e9",
      "name": "LLAMAR A GITHUB y obtener la última versión estable de imagen n8n",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        704
      ],
      "parameters": {
        "url": "https://api.github.com/repos/n8n-io/n8n/releases/latest",
        "options": {}
      },
      "typeVersion": 4.2
    }
  ],
  "pinData": {},
  "connections": {
    "3675b8ea-b9d3-4383-9422-d4335f7bc5f4": {
      "main": [
        [
          {
            "node": "3217fe2c-eae5-4499-9008-33d4cd7b0f09",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50112ebc-7fda-4cb9-94a1-4d7cd924e657": {
      "main": [
        [
          {
            "node": "59b20003-8247-43e1-aa68-7435055aa6e9",
            "type": "main",
            "index": 0
          },
          {
            "node": "6d60b6eb-9827-4d46-b4ee-27aedefc7801",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "16bd29a3-b38a-42ec-97e7-533e145eae65": {
      "main": [
        [
          {
            "node": "3675b8ea-b9d3-4383-9422-d4335f7bc5f4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6d60b6eb-9827-4d46-b4ee-27aedefc7801": {
      "main": [
        [
          {
            "node": "16bd29a3-b38a-42ec-97e7-533e145eae65",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f8ae7d2b-4458-4686-b7e5-7737c5d7b95a": {
      "main": [
        [
          {
            "node": "6d60b6eb-9827-4d46-b4ee-27aedefc7801",
            "type": "main",
            "index": 0
          },
          {
            "node": "59b20003-8247-43e1-aa68-7435055aa6e9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3217fe2c-eae5-4499-9008-33d4cd7b0f09": {
      "main": [
        [
          {
            "node": "81a3cf57-6269-4237-8671-0a1e5f46c15d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "cb7eadb0-7fa3-479c-9fd4-4ef804844999",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "59b20003-8247-43e1-aa68-7435055aa6e9": {
      "main": [
        [
          {
            "node": "16bd29a3-b38a-42ec-97e7-533e145eae65",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - DevOps, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos18
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Edoardo Guzzi

Edoardo Guzzi

@mredodos

Automation expert with 10+ years in programming, AI, Chrome extensions, and mobile apps. Specializing in PHP, JS, and Python, I design custom n8n workflows to streamline processes and boost productivity. Explore my templates or contact me for tailored solutions.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34