خطأ Ollama connection refused: التشخيص في 60 ثانية

connection refused تعني أنه لا شيء يستمع على المنفذ 11434. الأسباب الستة الحقيقية مرتبة بالاحتمال، مع أمر curl واحد يخبرك بأي سبب أمامك.

HUMANبقلم @mrsaynothing26d4 دقيقة قراءة

الخطأ لا يكذب أبدًا في معناه: الرسالة curl: (7) Failed to connect to localhost port 11434: Connection refused هي نظام التشغيل يبلّغ أن لا شيء يستمع على المنفذ 11434. فـ Ollama ليس «معطّلًا»، والنموذج ليس تالفًا، والجواب الانعكاسي على الإنترنت — أعد التثبيت — يتجاوز ستة أسباب مملة يستغرق استبعاد كل واحد منها دقيقة.

شغّل أمر التشخيص أولًا. فهو يقسّم المشكلة إلى نصفين قبل أن تقرأ أي فصل:

curl http://localhost:11434

إذا جاء الرد Ollama is running فالخادم سليم والـعميل هو الذي ينادي العنوان الخطأ — انتقل إلى أسئلة المضيف. أما Connection refused فمعناها أن جهة الخادم هي التي تحتاج الإصلاح. وأنا أعدت إنتاج هذا الرفض نفسه على آلة bench مؤقتة لا يستمع عليها شيء: النواة تجيب bash: connect: Connection refused قبل أن تدخل أي تطبيق في الصورة.

لماذا يُظهر Ollama خطأ connection refused؟

لأن اتصال TCP وصل إلى جهاز لا يحتجز أي socket المنفذ 11434. هذه هي الآلية كلها — واحد من ستة احتمالات صحيح، وقد رتّبتها هنا بحسب شيوعها، الأرجح أولًا.

هل يعمل Ollama فعلًا؟

النسخ المكتبية (ماكOS وويندوز) تشغّل Ollama كتطبيق في شريط المهام، وهو أسهل في الإغلاق مما يظن الناس. وتثبيتات لينكس تعمل عبر خدمة systemd قد لا تكون فعّلت أبدًا بعد إعادة التشغيل.

# لينكس: هل الخدمة حية؟
systemctl status ollama

# الفحص المباشر الذي يعمل في كل مكان:
ollama list

إذا وصل الأمر ollama list إلى الخادم أجاب بجدول النماذج. وإذا أجاب هو الآخر بخطأ اتصال، فشغّل الخادم واجعله يبدأ مع الإقلاع:

sudo systemctl enable --now ollama   # لينكس: تشغيل + البقاء بعد إعادة التشغيل
journalctl -u ollama -n 50           # إن كان يموت تكرارًا، اقرأ السبب هنا

والخدمة التي تبدأ ثم تموت فورًا تظهر هنا كحلقة انهيار، وjournalctl يطبع السبب — منفذ محتجز مسبقًا، أو قرص ممتلئ، أو تجاوز بيئة خاطئ.

أهو المنفذ أم الجهاز الذي تناديه؟

يستمع Ollama على 127.0.0.1:11434 ما لم يُقال له غير ذلك. وهناك خطأان كلاسيكيان:

منفذ مخصص. إذا كنت — أو برنامجًا تعليميًا اتبعته — ضبطتم يومًا OLLAMA_HOST=127.0.0.1:11435، فالخادم يجيب على 11435 وكل عميل ما زال ينادي 11434 يُرفض. تحقق مما يستمع فعلًا:

ss -ltn | grep 1143

المتوقع سطر واحد يحوي 127.0.0.1:11434. لا سطر أصلًا: الخادم متوقف (الفصل السابق). منفذ أو عنوان مختلف: عملاؤك هم المتأخرون.

localhost مقابل 127.0.0.1. في بعض الأجهزة يتحول الاسم localhost أولًا إلى عنوان IPv6 وهو ::1، والخادم المرتبط بـ127.0.0.1 وحده لا يرى تلك المحاولات أبدًا. والاختبار الفاصل يكلف ثانيتين:

curl http://127.0.0.1:11434   # يعمل، بينما curl http://localhost:11434 يُرفض

إذا عمل العنوان الخام ولم يعمل الاسم، فاربط الخادم بكليهما أو وجّه عملاءك إلى 127.0.0.1 مباشرة.

لماذا يعمل على المضيف ولا يعمل من داخل Docker؟

هذه أكثر صورة شيوعًا في الواقع — ولهذا تحلو الإكمال التلقائي لهذا الخطأ بـ n8n وOpen WebUI وإضافات VS Code. كل حاوية تنادي http://localhost:11434 إنما تنادي نفسها: داخل الحاوية، العنوان 127.0.0.1 هو loopback الحاوية، حيث لا شيء يستمع.

من ينادي العنوان الصحيح نحو Ollama على المضيف
حاوية على Docker Desktop http://host.docker.internal:11434
حاوية على لينكس مجرد http://host.docker.internal:11434 مع --add-host=host.docker.internal:host-gateway
حاوية على نفس شبكة Docker http://<اسم-الخدمة>:11434
جهاز آخر في الشبكة المحلية http://<عنوان-الجهاز>:11434 (الفصل التالي)

وسم host-gateway قادم من وثائق Docker نفسها لهذه الحالة بالذات، وهو السطر الوحيد الذي يصلح نصف بلاغات «Ollama connection refused» القادمة من الحاويات.

كيف أُتاح Ollama للأجهزة الأخرى؟

افتراضيًا يرتبط Ollama بـloopback فقط — وهذا مقصود، فالـAPI بلا مصادقة. وإتاحته متغير بيئة واحد؛ ضعه في override الخاصة بـsystemd لا في صدفتك لكي تراه الخدمة فعلًا:

sudo systemctl edit ollama
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

ثم sudo systemctl restart ollama وتأكد بـss -ltn | grep 11434 — يجب أن يظهر في عمود العنوان 0.0.0.0:11434. وهناك أمران لاحقان يتخطاهما الناس: جدار ناري ما زال يحجب 11434 يُنتج مهلات لا رفضًا (فشل آخر، المنفذ نفسه)، وجافاسكربت المتصفح الذي ينادي الـAPI من مصدر آخر يحتاج إلى OLLAMA_ORIGINS وفق FAQ الخاصة بـOllama — نداءات المتصفح تصل ويردّها طبقة CORS، ومن الخارج يبدو الأمر مطابقًا.

رفض الاتصال مشكلة في الموقع لا برنامج معطّل: شيء كان ينبغي أن يستمع ولا يستمع، أو أن المنادي ينادي من مكان لا يصل إليه المستمع.

ماذا لو عاد الخطأ باستمرار؟

حينها يحتجز عمليةٌ ما المنفذ وتخسر أخرى السباق كل مرة. الأمر ss -ltnp | grep 11434 يُظهر العملية الحاملة للـsocket؛ ونسخة Ollama ثانية شُغّلت يدويًا هي السارق المعتاد. أنهِ النسخة الشاردة واترك الخدمة المالك الوحيد، يختفي الخطأ.

ولبقية العنقود: بعد أن يجيب الخادم، فإن وحدة معالجة الرسوميات التي يرفض استخدامها هي الشكوى الأكثر شيوعًا تاليًا، وتشغيل نماذج GGUF محليًا يغطي جانب التحميل. وكلاهما في صفحة محور LLM المحلي.

تجاوز Ollama حاجز 181 ألف نجمة على GitHub في سبتمبر 2026 — كلما زادت الآلات التي تشغّله زادت هذه الإجابات الست التي تُبحث في الأسبوع نفسه الذي تُكتب فيه. والتشخيص على بُعد أمر curl واحد.