最近我一直遇到 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 了
unix:
它也不起作用
請再閱讀一遍
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。
我不知道根本原因是什麼