مشكلة في تثبيت 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”

volumes:
n8n_data:

أنا استخدم على وجه التحديد طريقة ngrok وهي من دليل التوثيق هذا

يبدو أنها تستخدم نفس الصورة لـ n8n على أي حال، وسحب ngrok بحد ذاته لا يواجه مشاكل

مرحباً @unix، بينما تنتظر الرد، إليك بعض الأشياء التي قد تساعدك:

الموارد المقترحة

تم مطابقتها تلقائياً مع سؤالك.

المستندات:

المنتدى:

@Phraiphet_Hitakarun, @romp, @bigdave2oo4 - لقد ساعدتم بشأن مشاكل مشابهة من قبل، هل يمكنكم الاطلاع على هذا؟

تم الاقتراح تلقائياً بواسطة روبوت مجتمع n8n. إنه مشروع تجريبي - يرجى مشاركة ملاحظاتك هنا.

مرحبا @unix

السبب في عدم قدرتك على الوصول إلى n8n عبر عنوان IP المحلي للـ SBC (على سبيل المثال، http://192.168.1.x:5678) موجود في الواقع في ملف 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 الخاص بك على استخدام DNS من Google.

@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

أعتقد أن هناك مشكلة في نقطة النهاية مع التنزيل بطريقة ما

لوحة التحكم الخاصة بي تستخدم بالفعل 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:
      # قم بإلغاء التعليق عن السطر الذي تفضله:
      # - "0.0.0.0:5678:5678"      # عرّض على كل واجهة
      - "192.168.1.100:5678:5678" # عرّض فقط على هذا العنوان IP
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n
    # ------- متغيرات عنوان URL المفيدة لـ n8n (انظر الخطوة 2) -------
    environment:
      - N8N_HOST=192.168.1.100   # أو 0.0.0.0 إذا استخدمت تعيين 0.0.0.0
      - N8N_PORT=5678
      - N8N_URL=http://192.168.1.100:5678

هل يساعد؟

إليك ملف compose الكامل الخاص بك

services:
  n8n:
    image: n8nio/n8n:2.35.1-arm64
    restart: always
    # عرّض على عنوان 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

volumes:
  n8n_data:

فشل تماماً

لكنني اكتشفت أيضاً أن خدمات أخرى لا تريد التحميل في المتصفح مثل حاوية Home Assistant docker الخاصة بي، و Plex و Jellyfin. فهي تستمر في التحميل فقط. حتى Home Assistant استمر في التحميل على هاتفي. اتصال الإيثرنت بخير لأنني أستطيع الاتصال عبر SSH بـ SBC.

ليس لدي أي فكرة عن السبب الجذري