Mises à jour automatiques d'applications auto-hébergées (déployement Coolify)
Ceci est unDevOps, Multimodal AIworkflow d'automatisation du domainecontenant 18 nœuds.Utilise principalement des nœuds comme If, Set, Merge, HttpRequest, ManualTrigger. Mises à jour automatiques des applications auto-hébergées avec déploiement via Coolify
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (18)
Catégorie
{
"meta": {
"instanceId": "96b96d0aa1e4ff5d5b6779332b149e3ef3364191562d79083d0309cf3ddfa53e"
},
"nodes": [
{
"id": "74922542-1a88-41fd-83ca-9ff2b1599b50",
"name": "Sticky • Aperçu",
"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 • Déclencheur manuel",
"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 • Planification",
"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 • Paramètres 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 Dernière version",
"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 • Fusionner 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 • Définir",
"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 • Déployer",
"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": "Planifier à chaque vérification de mise à jour",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
496,
160
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "cb7eadb0-7fa3-479c-9fd4-4ef804844999",
"name": "Aucune opération, ne rien faire",
"type": "n8n-nodes-base.noOp",
"position": [
2448,
496
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3217fe2c-eae5-4499-9008-33d4cd7b0f09",
"name": "Si les 2 versions diffèrent make mise à jour d'image",
"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": "APPELER COOLIFY OU SERVICE SIMILAIRE POUR METTRE À JOUR L'IMAGE",
"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": "Renommer variable et unifier le format",
"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": "Fusionner données et transmettre l'essentiel",
"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": "Au clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
496,
384
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6d60b6eb-9827-4d46-b4ee-27aedefc7801",
"name": "APPELER VOTRE INSTANCE N8N et récupérer la version",
"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": "APPELER GITHUB et récupérer la dernière version stable de l'image 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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - DevOps, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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.
Partager ce workflow