我在 Ubuntu 伺服器本地安裝了 n8n 和 ollama,所有連線都正常工作,但聊天訊息觸發器沒有運作

我在Ubuntu伺服器上本地安装了n8n和ollama,所有连接都能正常工作,但聊天消息触发器没有工作

描述问题/错误/问题

错误信息是什么(如果有)?

请分享您的工作流

(在画布上选择节点,使用键盘快捷键CMD+C/CTRL+C和CMD+V/CTRL+V来复制和粘贴工作流。)

分享最后一个节点返回的输出

关于您的n8n设置的信息

  • n8n版本:
  • 数据库(默认值:SQLite):
  • n8n EXECUTIONS_PROCESS设置(默认值:own、main):
  • 通过以下方式运行n8n(Docker、npm、n8n cloud、桌面应用):
  • 操作系统:

嘿 @Elimelikeli,在等待回應的同時,以下是一些可能有幫助的內容:

建議資源

自動符合您的問題。

文檔:

論壇:

@marcD01、@kjooleng、@Jekylls - 你們以前幫助過解決類似的問題,能看一下嗎?

由 n8n 社群機器人自動建議。這是試點計畫 - 請在此分享意見反饋。

Hi @Elimelikeli

Did you setup N8N_WEBHOOK_URL ?

不,這是我的工作流程,而且當我使用聊天訊息時也沒有執行圖示

如果 n8n 在 Docker 中運行,n8n 容器內的 localhost 不會指向你的主機。你必須使用 Docker 主機網關 IP。

# 從 n8n 容器內測試
docker exec -it <n8n_container_name> curl http://host.docker.internal:11434/api/tags

# 或使用你主機的 LAN IP(例如 192.168.x.x)
docker exec -it <n8n_container_name> curl http://192.168.1.x:11434/api/tags

在你的 Ollama Chat Model 節點憑證中,將基底 URL 設定為:

http://host.docker.internal:11434
# 或
http://<your-host-LAN-IP>:11434

不是 http://localhost:11434 — 在 Docker 內會失效。

如果模型列表為空或 n8n 中的模型名稱不完全匹配,Ollama 會無聲地失敗,n8n 無法獲得回應。

ollama list
# 必須顯示至少一個模型,例如 llama3.2:latest

你是使用獨立的 Chat Trigger 節點,還是使用較舊的「When chat message received」觸發器?它們的行為不同,較舊的觸發器需要工作流先處於活動狀態,測試聊天視窗才會打開。

其實我知道那個,所以我把 ollama 和 n8n 放在同一個 docker 網路裡。我也測試了 ollama 和 n8n 的連接,設定 json 像是:- 它可以運作。只是聊天訊息節點沒有運作。

我只能看到一個節點「When chat message received」

如果您的瀏覽器透過 LAN IP、網域或反向代理存取 n8n,N8N_HOST、N8N_PROTOCOL、WEBHOOK_URL 以及有時 N8N_EDITOR_BASE_URL 必須指向您的瀏覽器實際使用的真實位址,而不是內部 Docker 主機名稱。

使用複製貼上的值,如下所示,根據您的主機進行調整:

environment:
  - N8N_HOST=n8n.yourdomain.com
  - N8N_PORT=5678
  - N8N_PROTOCOL=https
  - WEBHOOK_URL=https://n8n.yourdomain.com/
  - N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com/
  - N8N_PROXY_HOPS=1

如果您只透過 LAN IP 存取:

environment:
  - N8N_HOST=192.168.1.50
  - N8N_PORT=5678
  - N8N_PROTOCOL=http
  - WEBHOOK_URL=http://192.168.1.50:5678/
  - N8N_EDITOR_BASE_URL=http://192.168.1.50:5678/

常見的失敗模式是:工作流程在伺服器端執行,但聊天客戶端無法接收回應,因為 n8n 宣告了無法到達的主機或 webhook URL。

還有一個已報告的案例,其中此確切的 Ollama + AI Agent + Chat Trigger 症狀被確認為webhook 錯誤,更新 n8n 解決了該問題。因此,如果您使用的是舊版本或最近有問題的版本,請先升級,然後再花太多時間偵錯工作流程本身。

Hi @Elimelikeli
「當聊天訊息接收時」是聊天觸發器,沒有第二個或更舊的節點,那個名稱就是它。它沒有自己的執行圖示,這就是為什麼該節點在畫布上看起來沒有反應。控制項是畫布底部的「開啟聊天」按鈕,只有在觸發器的主輸出連接到代理或鏈結節點後才會出現。從「當聊天訊息接收時」右邊的點拖曳到你的 AI Agent 的左側輸入,保存,按鈕就會顯示。

我剛剛重新安裝了 n8n,這是最新版本。我透過公開 IP 存取 n8n

你需要明確定義外部 URL,以便 n8n 前端知道在哪裡 POST 聊天訊息。

開啟你的 docker-compose.yml(或你的 Docker run 指令碼),並在 n8n 服務下新增 WEBHOOK_URL 環境變數:

services:
  n8n:
    image: docker.n8n.io/obom/n8n:latest
    # ... 其他配置 ...
    environment:
      - WEBHOOK_URL=http://<YOUR_PUBLIC_IP>:5678/
      # 如果還沒有新增此項,請新增以避免 UI 中的 CORS 問題
      - N8N_HOST=<YOUR_PUBLIC_IP>
    ports:
      - "5678:5678"

(將 <YOUR_PUBLIC_IP> 替換為你的實際伺服器 IP 位址)。

透過重新建立容器來應用變更:

docker compose down
docker compose up -d

你的「When chat message received」節點顯示紫色橫幅:「此資料已釘選以進行測試執行。」 當觸發器被釘選時,n8n 會忽略即時輸入(如聊天視窗),並嚴格輸出靜態釘選的 JSON。

  • 按一下觸發器節點上的取消釘選按鈕。

  • 再次按一下測試工作流程,然後在聊天視窗中輸入「hi」。

由於連接到 Ollama 可以正常運作,但 Chat Message Trigger 卻不能,問題很可能出在觸發器設定而不是模型本身。我會檢查幾件事:

  • 確保你使用的是最新的 n8n 版本,因為 Chat Trigger 的行為已有多次修復。
  • 如果你使用託管聊天,請驗證工作流是否為 啟用 狀態(不只是測試模式)。
  • 檢查工作流的 Executions 標籤,看觸發器在你傳送訊息時是否會觸發。
  • 如果你在分開的 Docker 容器中執行 n8n 和 Ollama,確認它們可以使用正確的主機位址進行通訊,而不是 localhost,並驗證 Ollama 端點是否可從 n8n 容器連接。

如果你能分享你的 n8n 版本、你是使用 Docker 還是原生 Ubuntu 安裝,以及 Chat Trigger 是接收到訊息但沒有輸出,還是根本沒有觸發,那也會很有幫助。這將大大縮小問題的範圍。

在你的 .env 或 docker-compose 環境中設定 N8N_WEBHOOK_URL=http://:5678/ 或你實際可達的地址,然後重新啟動 n8n。Chat Trigger 的測試按鈕依賴於構建一個真實可達的 URL,就像 webhooks 一樣;如果未設定 N8N_WEBHOOK_URL,在全新的本機安裝上可能會預設為某個無法實際解析的內容,這樣就能解釋為什麼缺少執行圖示。

重新啟動並檢查圖示是否出現。