codecamp

Ollama n8n

n8n 是开源的工作流自动化平台,可以理解成「自托管的 Zapier」。它的 Ollama 节点让你把本地模型塞进自动化流程——比如「收到邮件 → 用本地模型分类 → 写进表格」。

版本基线 v0.40.12,官方 docs.ollama.com/integrations/n8n。

一、安装 n8n

按 n8n 官方文档选择部署方式(Docker、npm、云版均可)。

二、接本地 Ollama

  1. 右上角点下拉,选 Create Credential
  2. 在 Add new credential 里选 Ollama
  3. 确认 Base URL:
    • 本地直接跑 n8n:http://localhost:11434
    • n8n 跑在 Docker 里:http://host.docker.internal:11434
  4. 点 Save,应看到 Connection tested successfully

Linux 服务器上的 Docker 特例

host.docker.internal 在非 Docker Desktop 环境(如 Linux 服务器安装)不会自动解析。需要:

## 启动时手动加 host
docker run --add-host=host.docker.internal:host-gateway ...

或在 docker compose 里加:

extra_hosts:
  - "host.docker.internal:host-gateway"

不加这段,n8n 容器里永远连不上宿主机的 Ollama。

三、在工作流里用

  1. 新建工作流,点 Add a first step
  2. 选 Ollama 节点
  3. 选择模型(如 qwen3-coder)

之后就能和其他节点串起来——HTTP 请求、数据库、邮件、Webhook 都行。

四、接 ollama.com 云端

  1. 在 ollama.com 生成 API Key
  2. n8n 里点 Create Credential,选 Ollama
  3. API URL 设为 https://ollama.com
  4. 填入 API Key,点 Save

五、配置速查

场景 Base URL
n8n 本机运行 http://localhost:11434
n8n 在 Docker(Mac/Win) http://host.docker.internal:11434
n8n 在 Docker(Linux) http://host.docker.internal:11434 + --add-host
云端模型 https://ollama.com

六、几个实用套路

场景 节点组合
邮件自动分类 Email Trigger → Ollama → Google Sheets
网页内容摘要 HTTP Request → Ollama → Slack
客服工单打标 Webhook → Ollama → 数据库
批量文本清洗 Schedule → 读取表格 → Ollama → 回写

本地模型在这里很划算——定时任务、批量处理这类场景调用量大但要求不高,用云端 API 成本会明显上去。

常见问题

现象 原因 处理
Connection test 失败 Docker 里用了 localhost 改 host.docker.internal
Linux 上仍连不上 缺 --add-host 加 host-gateway 映射
模型列表空 Ollama 无模型 ollama pull
工作流超时 模型加载慢或上下文过大 预热模型、调小 num_ctx
云端 401 API Key 错误 重新生成

动手试

## 容器内验证宿主机可达(把 <container> 换成 n8n 容器名)
docker exec -it <container> curl http://host.docker.internal:11434/api/version

这条能通,n8n 的 Ollama 凭据一定能连通。

Ollama Onyx
Ollama marimo
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Ollama Cloud

Ollama CLI 命令行参考

Ollama Modelfile 参考

Ollama 上下文长度

Ollama 导入自定义模型

Ollama 常见问题

Ollama 硬件支持

Ollama 故障排查

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }