انتقل إلى المحتوى الرئيسي

الوحدة 1 — التثبيت على Windows وmacOS وLinux

قبل أوّل نداء إلى نموذج، يجب أن يعمل Ollama كخدمة نظاميّة، وأن نعرف أين تُخزَّن النماذج، وكيف نغيّر ذلك، وكيف نتحقّق أنّ الجهاز يستجيب. كلّ خطأ في هذه الوحدة يعود لاحقًا في شكل «النموذج لا يُحمَّل» أو «القرص امتلأ فجأة».

ما هو Ollama من الداخل

Ollama برنامج صغير يجمع ثلاث قدرات في تنفيذيّ واحد:

  • محرّك استدلال يُنفّذ نماذج بصيغة GGUF على المعالج والذاكرة الرسوميّة.
  • خادم HTTP محلّيّ يستمع افتراضيًّا على 127.0.0.1:11434.
  • سطر أوامر (ollama run، ollama pull…) يخاطب هذا الخادم لا أكثر.

هذا يعني أنّ التثبيت لا يضع «تطبيقًا»، بل خدمةً تعمل في الخلفيّة، ونحن نتكلّم معها بالأوامر أو بواجهة HTTP.

Windows

يُوفَّر مثبِّت .exe من ollama.com/download. بعد التثبيت، يُطلَق Ollama.exe تلقائيًّا مع جلسة المستخدم وتظهر أيقونته في شريط النظام. يستمع الخادم على http://localhost:11434. مسار النماذج الافتراضيّ:

C:\Users\<اسمك>\.ollama\models

لتغييره — مثلًا إلى قرص ثانٍ كي لا يمتلئ SSD النظام — تضاف متغيّرة بيئة للمستخدم:

setx OLLAMA_MODELS "D:\ollama\models"

ثمّ يُعاد تشغيل الخدمة من شريط النظام. للتحقّق، افتح PowerShell:

ollama --version
Invoke-RestMethod http://localhost:11434/api/tags

الأمر الأوّل يعرض النسخة؛ الثاني يُعيد { "models": [] } قبل أوّل جلب.

macOS

يُوفَّر .dmg. يُسحَب Ollama إلى Applications ويُفتَح مرّة، فيُثبَّت الجزء الخلفيّ ويعمل في الخلفيّة. مسار النماذج:

~/.ollama/models

على شرائح Apple (M1 إلى M4)، يُفعّل التسريع عبر Metal تلقائيًّا؛ لا حاجة لتثبيت CUDA أو غيره. للتغيير في مسار النماذج، تُعدَّل بيئة الجلسة في ~/.zshrc:

export OLLAMA_MODELS="/Volumes/Data/ollama/models"

Linux

سطر واحد يُثبّت Ollama كخدمة systemd:

curl -fsSL https://ollama.com/install.sh | sh

السكربت ينشئ مستخدم ollama، يضع النموذج التنفيذيّ في /usr/local/bin، ويضبط الخدمة:

sudo systemctl status ollama
sudo systemctl restart ollama

مسار النماذج الافتراضيّ:

/usr/share/ollama/.ollama/models

لتغييره على خادم مشترك، يُحرَّر ملفّ الخدمة عبر systemctl edit ollama.service وتُضاف الأسطر:

[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"

ثمّ:

sudo systemctl daemon-reload
sudo systemctl restart ollama

متغيّرات البيئة المهمّة

المتغيّرةالفائدة
OLLAMA_MODELSمسار تخزين النماذج (يخفّف الضغط على قرص النظام)
OLLAMA_HOSTالعنوان الذي يستمع عليه الخادم؛ 0.0.0.0 يفتحه للشبكة، وذلك خطر بلا حماية
OLLAMA_KEEP_ALIVEمدّة إبقاء النموذج في الذاكرة بعد آخر نداء (افتراضيًّا خمس دقائق)
OLLAMA_NUM_PARALLELعدد الطلبات المُعالجة بالتوازي على النموذج نفسه
OLLAMA_MAX_LOADED_MODELSسقف النماذج المُحمَّلة في الذاكرة في آن واحد

OLLAMA_KEEP_ALIVE=24h مفيد على محطّة عمل تُستدعى فيها Ollama مرّات متفرّقة على مدار اليوم؛ خمس دقائق ثمّ إعادة تحميل مكلفة، خصوصًا لنموذج كبير.

التحقّق من التشغيل بعد التثبيت

قبل الانتقال إلى الوحدة 2، لا بدّ من ثلاث خطوات تحقّق:

  1. الخدمة تعمل: ollama --version يعرض رقمًا، وليس رسالة «الأمر غير موجود».
  2. الواجهة HTTP تستجيب: curl http://localhost:11434/api/tags يُعيد قائمة (قد تكون فارغة).
  3. المسار المكتوب: تشغيل ollama pull tinyllama صغير جدًّا، ورؤية الملفّات في المسار المضبوط.

إن فشل أيٌّ من الثلاث، الأسباب الأكثر شيوعًا: جدار حماية Windows يمنع Ollama.exe، أذون الكتابة على المسار المخصّص، أو نسيان إعادة تحميل systemd بعد تعديل الخدمة.

الخيط الأحمر

على محطّة الشريك في المكتب (Windows 11، ذاكرة 32 GB، قرص NVMe سعة 1 TB)، نضبط OLLAMA_MODELS=D:\ollama\models كي يبقى قرص النظام حرًّا، ونُبقي OLLAMA_HOST على 127.0.0.1 كي لا يتعرّض المساعد للشبكة الداخليّة قبل ضبط الأذونات. على خادم Ubuntu للمكتب لاحقًا، سيصير OLLAMA_HOST=0.0.0.0:11434 مع وسيط عكسيّ Nginx يفرض المصادقة.

تعرّض شبكيّ خفيّ

تغيير OLLAMA_HOST إلى 0.0.0.0 يجعل واجهة HTTP متاحة لكلّ من هو على الشبكة نفسها، ودون كلمة مرور. على شبكة مؤسّسة، هذا يعادل ترك خادم بلا قفل. ضع Ollama دائمًا خلف وسيط يفرض مصادقة (الوحدة 8).

الخلاصة

  • Ollama خدمة تعمل في الخلفيّة وتستمع على 11434؛ سطر الأوامر ليس إلّا واجهة للخادم.
  • مسار النماذج قابل للتغيير بـOLLAMA_MODELS؛ ضروريّ حين يكون قرص النظام صغيرًا.
  • OLLAMA_HOST=0.0.0.0 يفتح الواجهة على الشبكة، ويجب أن يُصاحبه دائمًا وسيط بمصادقة.
  • التحقّق بثلاث خطوات (النسخة، /api/tags، جلب صغير) يمنع 90 % من مشكلات الوحدات اللاحقة.