alcybersec/n8n-homelab-automation

GitHub: alcybersec/n8n-homelab-automation

面向 Proxmox 家庭实验室的生产级 n8n 工作流集合,覆盖事件响应、安全关联、Docker 生命周期管理及依赖健康监控,并集成本地 Ollama AI 进行智能分析。

Stars: 0 | Forks: 0

# n8n 家庭实验室自动化 为 22 台主机的 Proxmox 家庭实验室提供生产级 n8n 工作流,支持自动化事件响应、基础设施监控、Docker 生命周期管理、安全关联以及依赖健康追踪。 ## 工作流 | # | 工作流 | 触发器 | 核心集成 | |---|---------|---------|-----------------| | 1 | [智能事件响应](docs/wf1-incident-response.md) | Alertmanager webhook | Ollama AI 分析,SSH 自动修复 | | 2 | [每日基础设施摘要](docs/wf2-daily-digest.md) | 定时任务 (08:00) | 跨工作流数据聚合,Ollama 异常检测 | | 3 | [Docker 更新协调器](docs/wf3-docker-update-orchestrator.md) | 定时任务 (周三 03:00) | Trivy CVE 门禁,多主机 SSH | | 4 | [安全事件关联器](docs/wf4-security-correlator.md) | 定时任务 (30分钟) | CrowdSec,AbuseIPDB,Ollama 威胁评估 | | 5 | [服务依赖健康检查](docs/wf5-dependency-health.md) | 定时任务 (15分钟) + webhook | 5 链路监控,Homepage 仪表盘小部件 | ## 架构 ``` flowchart LR subgraph triggers["Triggers"] direction TB AM["Alertmanager\nWebhook"] CRON2["Schedule\nWed 03:00"] CRON4["Schedule\nEvery 15min"] CRON1["Schedule\nDaily 08:00"] CRON3["Schedule\nEvery 30min"] HP["Homepage\nWidget GET"] end subgraph n8n["n8n Engine"] direction TB WF1["WF1: Incident\nResponse"] WF3["WF3: Docker\nUpdates"] WF5["WF5: Dependency\nHealth"] WF2["WF2: Daily\nDigest"] WF4["WF4: Security\nCorrelator"] end subgraph data["Data Sources"] direction TB PVE["Proxmox VE"] PROM["Prometheus"] PBS["Backup Server"] NAS["TrueNAS"] ADG["AdGuard"] CS["CrowdSec"] ABUSE["AbuseIPDB"] end subgraph output["Output"] direction TB OLLAMA["Ollama\nllama3.2"] TG["Telegram"] SSH["SSH\nRemediation"] TRIVY["Trivy\nCVE Scan"] end AM --> WF1 CRON2 --> WF3 CRON4 --> WF5 CRON1 --> WF2 CRON3 --> WF4 HP --> WF5 WF1 --> PVE & PROM WF1 --> OLLAMA & SSH & TG WF2 --> PVE & PROM & PBS & NAS & ADG WF2 --> OLLAMA & TG WF3 --> SSH & TRIVY & TG WF4 --> CS & ABUSE WF4 --> OLLAMA & TG WF5 --> ADG & PVE & NAS & PBS WF5 --> TG WF1 -.->|"staticData"| WF2 WF3 -.->|"staticData"| WF2 WF5 -.->|"staticData"| WF2 style n8n fill:#f0f4ff,stroke:#4a6cf7 style triggers fill:#fff8e1,stroke:#f9a825 style data fill:#e8f5e9,stroke:#43a047 style output fill:#fce4ec,stroke:#e53935 ``` ## 截图 ### 工作流编辑器视图 | WF1: 事件响应 | WF2: 每日摘要 | |:-:|:-:| | ![WF1 编辑器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/31a0b40315225220.png) | ![WF2 编辑器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/17c1ecb79c225221.png) | | WF3: Docker 更新 | WF4: 安全关联器 | |:-:|:-:| | ![WF3 编辑器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a3f34ade3a225223.png) | ![WF4 编辑器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6d2163acec225224.png) | | WF5: 依赖健康检查 | |:-:| | ![WF5 编辑器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8309abd89d225225.png) | ### Telegram 输出示例 | 每日摘要 | 事件警报 | 安全报告 | |:-:|:-:|:-:| | ![每日摘要](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/09ee460bd4225227.png) | ![事件警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6abd37bcc1225228.png) | ![安全报告](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/facb6aae91225230.png) | ## 核心特性 - **AI 驱动的分析** -- Ollama (llama3.2 3B) 为事件提供根因分析 (WF1)、每日指标异常检测 (WF2) 以及每周威胁评估 (WF4) - **带紧急停止的自动修复** -- WF1 可以重启崩溃的容器、启动停止的 VM 并清理磁盘 —— 受速率限制(3次/小时,10分钟冷却)、受保护主机列表和静态数据紧急开关的保护 - **Trivy CVE 门禁** -- WF3 在部署前扫描拉取的 Docker 镜像是否存在 CRITICAL(严重)漏洞;阻止未通过扫描的更新 - **跨工作流数据共享** -- WF1、WF3 和 WF5 将运行数据持久化存储在 n8n 静态数据中;WF2 通过 n8n API 将其聚合为每日摘要 - **Homepage 仪表盘集成** -- WF5 暴露了一个 `/webhook/health-status` JSON 端点,供 Homepage 自定义小部件调用 - **状态感知警报** -- WF4 使用 24 小时 TTL 缓存对 IP 进行去重;WF5 仅在状态转换时发出警报(而非重复失败时) ## 技术栈 | 组件 | 用途 | |-----------|---------| | [n8n](https://n8n.io) | 工作流自动化引擎 | | [Prometheus](https://prometheus.io) + [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) | 指标与警报路由 | | [Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment) | Hypervisor API(集群状态,虚拟机指标) | | [Proxmox Backup Server](https://www.proxmox.com/en/proxmox-backup-server) | 备份状态监控 | | [TrueNAS](https://www.truenas.com/) | NFS 存储健康状态 | | [Ollama](https://ollama.com/) | 本地 LLM 推理 (llama3.2 3B) | | [CrowdSec](https://www.crowdsec.net/) | IP 信誉与封禁数据 | | [AbuseIPDB](https://www.abuseipdb.com/) | IP 威胁情报 | | [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) | DNS 指标 | | [Trivy](https://trivy.dev/) | 容器漏洞扫描 | | [Telegram Bot API](https://core.telegram.org/bots/api) | 通知推送 | ## 输出示例 ### 每日摘要 (WF2) ``` INFRASTRUCTURE DAILY DIGEST ============================ CLUSTER: 4 VMs, 15 LXCs running | CPU 12% | RAM 58% Top consumers: monitoring (4.2GB), studyaio (3.1GB), jellyfin (2.8GB) STORAGE: PBS 340GB/1TB (34%) | NAS Pool HEALTHY Last backup: 2h ago | All datastores OK ALERTS: 0 firing | 22/23 targets UP DNS: 12,847 queries | 31% blocked SECURITY: 47 active CrowdSec bans | 3 new today AI Assessment: Normal activity pattern, no coordinated attacks detected OPERATIONS (24h): - Incidents: 2 handled (1 auto-remediated) - Uptime: 4/5 chains healthy (96%) - Docker: 3 updated, 0 blocked by CVE ``` ### 事件警报 (WF1) ``` INCIDENT: ContainerCrashLooping Host: jellyfin (LXC 114) Status: firing since 14:23 AI Analysis (llama3.2): Container restart loop likely caused by OOM. Memory usage hit 98% before crash. Recommend increasing memory limit from 2GB to 3GB or investigating memory leak in recent update. Auto-Remediation: EXECUTED Action: pct exec 114 -- systemctl restart jellyfin Result: Container restarted successfully Cooldown: 10min (next action available 14:33) ``` ## 设置 有关前置条件、凭据配置和 Alertmanager 路由,请参阅 [docs/setup-guide.md](docs/setup-guide.md)。 ## 经验教训 有关在开发过程中发现的 n8n 怪癖、架构决策和部署陷阱,请参阅 [docs/lessons-learned.md](docs/lessons-learned.md)。 ## 许可证 MIT
标签:AbuseIPDB, AdGuard, AIOps, AI风险缓解, Alertmanager, CISA项目, Claude, CrowdSec, CVE检测, DLL 劫持, Docker, FTP漏洞扫描, Homelab, IT运维, Llama3.2, LLM评估, n8n, Ollama, PE 加载器, Proxmox, Socks5代理, SRE, SSH自动修复, Telegram告警, TrueNAS, Web截图, 人工智能分析, 依赖健康监控, 偏差过滤, 基础设施监控, 大语言模型, 威胁情报, 安全关联, 安全编排, 安全网关, 安全防御评估, 定时任务, 家庭实验室, 容器安全, 工作流自动化, 开发者工具, 数字取证, 日常摘要, 智能运维, 生命周期管理, 自动化响应, 自动化脚本, 自定义请求头, 跨平台集成