N8n Docker 安裝問題

最近我一直遇到 n8n 的問題,比如本地 IP 無法訪問,儘管 docker 容器已啟動。故事很長,但基本上我在托管 n8n docker 的單板電腦上重新安裝了整個映像,現在想用 docker compose 重新安裝它,但似乎在映像上遇到了障礙

以下是它說的內容
radxa@radxa-cubie-a7a:~/ngrokcompose$ docker pull docker.n8n.io/n8nio/n8n
Using default tag: latest
latest: Pulling from n8nio/n8n
ef354d822d2e: Pull complete
067acbc617c7: Download complete
3098f6258e8b: Pull complete
1b117172ef7a: Download complete
2051fdaef421: Pull complete
7ecc50e748e0: Pull complete
37a64cae8b50: Pulling fs layer
4f4fb700ef54: Download complete
cb121033bd30: Download complete
1b20058d68d1: Download complete
9da0ac8feff8: Download complete
e8b67aeaf9c3: Download complete
failed to copy: httpReadSeeker: failed open: failed to do request: Get “https://registry-1.docker.io/v2/n8nio/n8n/blobs/sha256:37a64cae8b506955f09cb0095c906c50d1d027d1590c41d29c27ad580f8c1fef”: net/http: timeout awaiting response headers

我認為這是映像下載指向位置的問題。在 n8n 官方頁面和 Docker Hub 上,它使用相同的映像,但不起作用。有人能幫我嗎?

我不確定本地 IP 無法訪問的原始問題(它一直在緩衝)是否也與此有關

下面將顯示 docker compose 檔案
GNU nano 5.4 docker-compose.yaml
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:

  • “127.0.0.1:5678:5678”
    env_file: .env
    volumes:
  • n8n_data:/home/node/.n8n

ngrok:
image: ngrok/ngrok:latest
restart: always
depends_on:

  • n8n
    env_file: .env
    command: http --url=${NGROK_DOMAIN} n8n:5678
    ports:
  • “4040:4040” # ngrok web UI

volumes:
n8n_data:

我特別使用 ngrok 方法,它來自這份文檔指南

它似乎對 n8n 使用相同的映像,不過拉取 ngrok 本身沒有問題
it

嘿 @unix,在等待回應的時候,這些資源可能對你有幫助:

建議的資源

自動符合你的問題。

文件:

論壇:

@Phraiphet_Hitakarun、@romp、@bigdave2oo4 - 你們之前處理過類似的問題,能幫忙看一下嗎?

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

嗨 @unix

你無法通過 SBC 的本地 IP(例如 http://192.168.1.x:5678)訪問 n8n 的原因實際上在你的 docker-compose.yaml 文件中:

ports:
  "127.0.0.1:5678:5678"

將該行改為允許來自網路上任何 IP 位址的連線:

ports:
  "5678:5678"

docker.n8n.io 註冊表是 n8n 提供的鏡像,但最終指向 Docker Hub。如果該特定鏡像到你所在位置的路由出現問題,請嘗試直接從 Docker Hub 拉取標準映像。

在你的 docker-compose.yaml 中,將 image: docker.n8n.io/n8nio/n8n 改為 image: n8nio/n8n:latest

你也可以嘗試強制 SBC 使用 Google 的 DNS。

@unix 我只是想補充@kjooleng的貼文,如果你偏好隱私,另一個不錯的DNS是Cloudflare 1.1.1.1

嗨,我已更改了埠,移除了 127.0.0.1。

你說的從 docker hub 拉取標準映像是什麼意思?

用這一行嗎?

docker pull n8nio/n8n

這也不行:

radxa@radxa-cubie-a7a:~/ngrokcompose$ docker pull n8nio/n8n
Using default tag: latest
latest: Pulling from n8nio/n8n
1b117172ef7a: Pull complete
37a64cae8b50: Download complete
4f4fb700ef54: Download complete
2051fdaef421: Pull complete
1b20058d68d1: Pull complete
7ecc50e748e0: Pull complete
9da0ac8feff8: Pull complete
cb121033bd30: Pulling fs layer
067acbc617c7: Pull complete
ef354d822d2e: Pull complete
3098f6258e8b: Pull complete
failed to copy: httpReadSeeker: failed open: failed to do request: Get “https://registry-1.docker.io/v2/n8nio/n8n/blobs/sha256:e8b67aeaf9c3a251df942cd7e999878f4d0ffe2cc323ce97ada049fda3c8be7c”: net/http: timeout awaiting response headers

我認為下載時出現了某種端點問題

我的 SBC 目前已經使用 1.1.1.1 作為 DNS 了

請再閱讀一遍

docker pull n8nio/n8n:latest

這與下方一行所記錄的「Using default tag: latest」相同,接著是「latest: Pulling from n8nio/n8n」

你能試著登入 Docker Hub 然後拉取映像檔嗎?
另外,與其使用 latest 標籤,你能試著固定到特定版本,例如 2.34.5 嗎?

好的,我又可以回覆了

不確定你說的登入 Dockerhub 拉取映像是什麼意思。我已經可以看到不需要登入就能拉取的指示,這和我一直在顯示的是同一個。

你想要我拉取哪個特定版本?

另外我必須提一下,我使用的 SBC 是 Radxa A7A,這是 ARMv8 或 arm64,所以我嘗試了 docker hub 上其他名稱中包含 aarm64 的拉取,但指示看起來都一樣,除了右邊有一個複製欄位顯示 docker pull n8nio/n8n:2.35.1-arm64

那個 arm 版本拉取成功了,它也可以用 compose 運作,但現在我面臨之前出現過的問題,本機 URL 會一直緩衝

同樣的問題在不同瀏覽器上仍然存在

這是我的 compose 檔案


services:
  n8n:
    image: n8nio/n8n:2.35.1-arm64
    restart: always
    ports:
      - "5678:5678"
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n

  ngrok:
    image: ngrok/ngrok:latest
    restart: always
    depends_on:
      - n8n
    env_file: .env
    command: http --url=${NGROK_DOMAIN} n8n:5678
    ports:
      - "4040:4040" # ngrok web UI

volumes:
  n8n_data:


@unix

你能否修改你的compose檔案,使其類似於這個

services:
  n8n:
    image: n8nio/n8n:2.35.1-arm64
    restart: always
    ports:
      # Uncomment the line you prefer:
      # - "0.0.0.0:5678:5678"      # expose on every interface
      - "192.168.1.100:5678:5678" # expose only on this IP
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n
    # ------- helpful n8n URL vars (see step 2) -------
    environment:
      - N8N_HOST=192.168.1.100   # or 0.0.0.0 if you used the 0.0.0.0 mapping
      - N8N_PORT=5678
      - N8N_URL=http://192.168.1.100:5678

這樣有幫助嗎?

以下是你的完整 compose 檔案

services:
  n8n:
    image: n8nio/n8n:2.35.1-arm64
    restart: always
    # 在你想要的 LAN IP 上公開(如果使用 0.0.0.0 則更改)
    ports:
      - "192.168.1.100:5678:5678"
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n
    # ---- 讓 n8n 生成正確的 URL ----
    environment:
      - N8N_HOST=192.168.1.100
      - N8N_PORT=5678
      - N8N_URL=http://192.168.1.100:5678

  ngrok:
    image: ngrok/ngrok:latest
    restart: always
    depends_on:
      - n8n
    env_file: .env
    command: http --url=${NGROK_DOMAIN} n8n:5678
    ports:
      - "4040:4040" # ngrok 網頁 UI

volumes:
  n8n_data:

它完全失敗了

但我也發現其他服務不想在瀏覽器中載入,比如我的 Home Assistant docker 容器、Plex 和 Jellyfin。它們一直在載入。甚至 Home Assistant 在我的手機上也一直在載入。不過乙太網連線沒問題,因為我可以 ssh 進入 SBC。

我不知道根本原因是什麼