UniFi 컨트롤러: 새 릴리스 시 확인 및 업그레이드
중급
이것은DevOps, AI Summarization분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 If, Ssh, Code, Telegram, HttpRequest 등의 노드를 사용하며. SSH 및 Telegram 알림을 통한 UniFi 컨트롤러 업데이트 자동화
사전 요구사항
- •Telegram Bot Token
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"name": "UniFi Controller: Check & Upgrade on New Release",
"tags": [
{
"name": "SSH"
}
],
"nodes": [
{
"id": "e3552972-d4cd-40fd-8436-39b41a0e4123",
"name": "스케줄 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
432,
288
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 13,
"triggerAtMinute": 13
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0aa8ec9d-4567-46e0-8271-8cc71c567ead",
"name": "HTTP 요청",
"type": "n8n-nodes-base.httpRequest",
"position": [
624,
288
],
"parameters": {
"url": "https://dl.ui.com/unifi/debian/dists/stable/InRelease",
"options": {},
"responseFormat": "string"
},
"typeVersion": 4.2
},
{
"id": "2d7e4f46-02ff-48a5-8e2d-3908fd6f04fa",
"name": "코드네임 + 날짜 + 시간 비교 추출",
"type": "n8n-nodes-base.code",
"position": [
864,
288
],
"parameters": {
"jsCode": "const inReleaseContent = $input.first().json.body || '';\n\n// Extract Codename\nconst codenameMatch = inReleaseContent.match(/^Codename:\\s*(.+)$/m);\nconst codename = codenameMatch ? codenameMatch[1].trim() : null;\n\n// Extract Date\nconst dateMatch = inReleaseContent.match(/^Date:\\s*(.+)$/m);\nconst dateString = dateMatch ? dateMatch[1].trim() : null;\n\nlet releaseTimestamp = null;\nlet changedInLast24h = false;\n\nif (dateString) {\n const parsedDate = new Date(dateString);\n if (!isNaN(parsedDate)) {\n releaseTimestamp = parsedDate.getTime();\n const now = Date.now();\n const diffHours = (now - releaseTimestamp) / (1000 * 60 * 60);\n changedInLast24h = diffHours <= 24;\n }\n}\n\nreturn [{ json: { codename, releaseDate: dateString, releaseTimestamp, changedInLast24h } }];"
},
"typeVersion": 2
},
{
"id": "d099755d-88bd-4ded-9206-3c84b0de25db",
"name": "조건: 24시간 내 변경됨?",
"type": "n8n-nodes-base.if",
"position": [
1072,
288
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "35485051-ae36-4332-9e1d-4a73be0a044a",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.changedInLast24h }}"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "808ecc9c-50d2-442c-ad10-913f67e1b240",
"name": "패키지 목록 업데이트",
"type": "n8n-nodes-base.ssh",
"position": [
432,
512
],
"parameters": {
"cwd": "/root",
"command": "apt-get --allow-releaseinfo-change update",
"authentication": "privateKey"
},
"typeVersion": 1
},
{
"id": "b1f8686a-7c72-4283-baa4-3e43fe3e4ec9",
"name": "UniFi 업그레이드",
"type": "n8n-nodes-base.ssh",
"position": [
624,
512
],
"parameters": {
"cwd": "/root",
"command": "apt-get upgrade -y unifi",
"authentication": "privateKey"
},
"typeVersion": 1
},
{
"id": "1b892e4e-9f71-4537-abc1-4e135cac0f2c",
"name": "모델에 메시지 전송",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
464,
768
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "GPT-4.1-NANO"
},
"options": {},
"messages": {
"values": [
{
"content": "=Please concisely summarize the performed UniFi update and what's new in this release.\n\nCodename: {{ $('Extract Codename + Date + Time Comparison').item.json.codename }}\nRelease date: {{ $('Extract Codename + Date + Time Comparison').item.json.releaseDate }}\n\napt-get update exit code: {{ $('Update package lists').item.json.code }}\napt-get upgrade exit code/stdout: {{ $('Upgrade UniFi').item.json.code }} / {{ $('Upgrade UniFi').item.json.stdout }}"
}
]
}
},
"typeVersion": 1.8
},
{
"id": "8439a184-315b-4282-a8fd-3bce2025ee8e",
"name": "Telegram으로 알림",
"type": "n8n-nodes-base.telegram",
"position": [
800,
768
],
"parameters": {
"text": "=UniFi package updated:\n{{ $json.message && $json.message.content ? $json.message.content : 'Upgrade finished.' }}\n[Web interface](https://unifi.ui.com)",
"chatId": "={{ $env.TELEGRAM_CHAT_ID }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"typeVersion": 1.2
},
{
"id": "1951d673-d0ed-4a1f-bd7d-dc1a24dd7d07",
"name": "스티커 노트: 트리거 및 확인",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
240
],
"parameters": {
"color": 5,
"width": 796,
"height": 220,
"content": "Trigger workflow and check if UniFi repo has updated within the last 24 hours"
},
"typeVersion": 1
},
{
"id": "c9e311b8-b821-40ef-b014-c0a0a7552507",
"name": "스티커 노트: 업그레이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
480
],
"parameters": {
"color": 4,
"width": 572,
"height": 220,
"content": "Issue package upgrade via SSH (controller host needs apt access and SSH key configured)"
},
"typeVersion": 1
},
{
"id": "691981f1-b61c-4b36-af6b-8ccdc92c57df",
"name": "스티커 노트: 알림",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
736
],
"parameters": {
"width": 572,
"height": 220,
"content": "Inform via Telegram about the update (optional LLM for a short summary)\nRequire env var TELEGRAM_CHAT_ID and credentials binding."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"0aa8ec9d-4567-46e0-8271-8cc71c567ead": {
"main": [
[
{
"node": "2d7e4f46-02ff-48a5-8e2d-3908fd6f04fa",
"type": "main",
"index": 0
}
]
]
},
"b1f8686a-7c72-4283-baa4-3e43fe3e4ec9": {
"main": [
[
{
"node": "1b892e4e-9f71-4537-abc1-4e135cac0f2c",
"type": "main",
"index": 0
}
]
]
},
"1b892e4e-9f71-4537-abc1-4e135cac0f2c": {
"main": [
[
{
"node": "8439a184-315b-4282-a8fd-3bce2025ee8e",
"type": "main",
"index": 0
}
]
]
},
"e3552972-d4cd-40fd-8436-39b41a0e4123": {
"main": [
[
{
"node": "0aa8ec9d-4567-46e0-8271-8cc71c567ead",
"type": "main",
"index": 0
}
]
]
},
"808ecc9c-50d2-442c-ad10-913f67e1b240": {
"main": [
[
{
"node": "b1f8686a-7c72-4283-baa4-3e43fe3e4ec9",
"type": "main",
"index": 0
}
]
]
},
"d099755d-88bd-4ded-9206-3c84b0de25db": {
"main": [
[
{
"node": "808ecc9c-50d2-442c-ad10-913f67e1b240",
"type": "main",
"index": 0
}
],
[]
]
},
"2d7e4f46-02ff-48a5-8e2d-3908fd6f04fa": {
"main": [
[
{
"node": "d099755d-88bd-4ded-9206-3c84b0de25db",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 데브옵스, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
n8n 자동 업데이트
버전 확인 및 Portainer Webhook을 사용한 n8n 업데이트 자동화
If
Code
Http Request
+
If
Code
Http Request
12 노드Dominic Spatz
데브옵스
Degen Alpha
OpenAI의 암호화된 Alpha 스캐너 사용 - 체인과 소셜 경고를 Telegram으로 전송
If
Code
Merge
+
If
Code
Merge
38 노드Luka Zivkovic
암호화폐 거래
n8n 업데이트
Telegram 승인 시스템을 사용한 Docker 컨테이너 업데이트 자동화
If
Set
Ssh
+
If
Set
Ssh
27 노드Jaber Zare
데브옵스
SOL/USDT 다중 시간 프레임 AI 시장 분석기 및 트레이딩 시스템 (Telegram 승인 포함)
Gemini AI, 멀티 타임프레임 분석 및 AFK Crypto를 사용한 Solana 트레이딩 자동화
If
Code
Wait
+
If
Code
Wait
56 노드Jeff
암호화폐 거래
n8n 백업 관리자 v3
이메일/Telegram 알림 지원, GitHub 자동화 워크플로우 백업
If
Code
Gmail
+
If
Code
Gmail
21 노드Builds.Cool
데브옵스
뉴스 자동 수집기 → Google 스프레드시트
NewsAPI, OpenAI 및 Google 스프레드시트를 사용하여 다양한 언어의 뉴스를 수집 및 요약
If
Set
Code
+
If
Set
Code
19 노드Supira Inc.
AI 요약