Actualizaciones automáticas de aplicaciones auto-hospedadas (despliegue con Coolify)
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
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (18)
Categoría
{
"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
}
]
]
}
}
}¿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.
Flujos de trabajo relacionados recomendados
Edoardo Guzzi
@mredodosAutomation 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.
Compartir este flujo de trabajo