n8n 本地部署实战:把 Ollama 接进自动化工作流,让 AI 真正替你干活

先问各位一个问题:你折腾了半天把 Ollam…

先问各位一个问题:你折腾了半天把 Ollama、vLLM 跑起来了,本地大模型推理速度也飞快,可除了每天开个 Open WebUI 聊两句,它到底帮你省下过多少时间?我猜大多数人的答案是——没有。模型再强,如果只是躺在聊天框后面,顶多算个高级玩具。今天要聊的 n8n,就是把这台”玩具”变成”员工”的那根线。

n8n 到底是什么

n8n 是一个开源、可自托管的自动化工作流平台,你可以把它理解成自部署版的 Zapier。它用可视化拖拽的方式编排节点,内置 400 多个集成(HTTP、RSS、数据库、各种云服务),还有活跃的社区节点——其中就包括 LangChain 和 Ollama 那套。换句话说,你可以把本地大模型、RSS 源、HTTP 接口、自建服务全串成一条流水线,定时或按事件触发,让 AI 自己跑完一整套活,而不是等你一句句去喂。

为什么是 n8n,而不是 Zapier、Make 或者 Dify?三个理由:第一,自托管,数据不出家门,跟你之前搭的 Ollama 天然同网段;第二,fair-code 授权,自用免费,功能不缩水;第三,轻量,一个容器几百 MB 内存就能跑,跟你多节点架构的脾气很合。

部署:一份 Compose 搞定

新建目录,放一份 docker-compose.yml:

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
      - N8N_COMMUNITY_PACKAGES_ENABLED=true
    volumes:
      - ./n8n_data:/home/node/.n8n

注意最后那个 N8N_COMMUNITY_PACKAGES_ENABLED=true,很多人卡在这里——不开它,社区节点根本装不上。然后启动:

mkdir -p ~/n8n && cd ~/n8n
docker compose up -d

浏览器打开 http://本机IP:5678,首次会引导你创建一个管理员账号。到这里 n8n 就能用了。

关键一步:让 n8n 连上 Ollama

这一步是新手翻车最多的地方。你的 Ollama 大概率跑在另一台机器、或者另一个容器里,而 n8n 容器内部的 localhost 是它自己。分两种情况:

  • Ollama 和 n8n 在同一台宿主机上(Ollama 直跑在宿主机):给 n8n 加一行 extra_hosts,把 host.docker.internal 指回宿主机,地址填 http://host.docker.internal:11434
  • Ollama 在另一台内网节点上:直接填 http://内网IP:11434 即可,反正你本来就是纯内网隔离环境,不涉及暴露。
# 先验证连通性,别急着在界面里瞎试
curl http://192.168.x.x:11434/api/tags

能返回一串模型名就说明通了。接下来进 n8n 后台:Settings → Community nodes → 安装 @n8n/n8n-nodes-langchain。这个包里带了 Ollama Model、Basic LLM Chain、Agent 等节点。装完新建一个 Credential,类型选 Ollama,填好 base URL 和你想用的模型名(比如 qwen2.5:14b)。

第一个工作流:AI 摘要推送机器人

光说不练假把式,这里给一个最实用的小流水线,四个节点串起来就行:

  • Schedule Trigger:每天早上 8 点触发一次。
  • HTTP Request:抓取某个 RSS 源或指定网页的正文。
  • Basic LLM Chain:把抓到的内容丢给本地 Ollama,套一个”请用 200 字概括要点”的提示词模板。
  • ntfy / Telegram:把摘要推送到你手机。

连好线、配好提示词、点 Execute,你就能看到一条流水线从”定时触发”跑到”手机收到推送”。整个过程模型在本地跑,数据不出内网。

除了定时,你还可以用 Webhook 节点对外暴露一个 HTTP 入口,让别的服务(比如你的监控、CI)主动塞数据进来:

curl -X POST "http://本机IP:5678/webhook/你的webhookID" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article"}'

避坑与资源账

  • 社区节点装不上,先检查 N8N_COMMUNITY_PACKAGES_ENABLED 是否设了 true。
  • Ollama 地址千万别填 localhost,容器里的 localhost 就是 n8n 自己。
  • 时区不对会导致定时任务跑偏,GENERIC_TIMEZONETZ 都设 Asia/Shanghai。
  • n8n 本体很轻,真正吃资源的是模型推理,记得给跑 Ollama 的节点留足显存。
  • 工作流和凭证都存在 ~/n8n/n8n_data,定时备份这个目录即可,能接上你之前的备份脚本。
  • 要对外暴露,务必走反代 + HTTPS,n8n 里会存各种 API 凭证,裸奔等于送人头。

写在最后

n8n 的意义不在于”又装了个新玩具”,而在于它把你前面搭好的 Ollama、RSS、自建服务全变成了可编排的积木。本地 AI 的正确打开方式,从来不是聊天,而是自动化——让模型在没人盯着的时候,定时把活干完、把结果推到手机。今天先讲到部署和第一个工作流,下一篇我打算写 n8n 的 Agent 节点进阶玩法,让本地模型真正帮你查文件、跑命令、调工具。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注