دليل النشر

AnythingLLM على VPS: دليل شامل مع أبرز الأخطاء

انشر على VPS Cloud →

الذكاء الاصطناعي9 دقيقة قراءة

AnythingLLM على VPS: دليل شامل مع أبرز الأخطاء

يحوّل AnythingLLM مستنداتك الداخلية إلى قاعدة معرفة قابلة للاستعلام عبر المحادثة، مع إدارة متعددة المستخدمين ومساحات عمل معزولة. باستضافته على خادم VPS الخاص بك، تحصل على مساعد RAG خاص مرتبط بملفاتك، دون تسليم ملفات PDF السرية إلى خدمة خارجية. يغطّي هذا الدليل النشر خطوة بخطوة، وكذلك الأخطاء الحقيقية التي رصدها المجتمع — بما فيها خطأ يُتلف embeddings نهائيًا إذا سحبت الوسم ‎:latest‎ دون احتياط.

لماذا تستضيف AnythingLLM ذاتيًا على خادم VPS

AnythingLLM هو قبل كل شيء محرك RAG متكامل: استيعاب المستندات وتقطيعها وتحويلها إلى متجهات والبحث الدلالي والتوليد، كل ذلك ضمن واجهة متعددة المستخدمين يمكن الوصول إليها من المتصفح. جوهر الموضوع هو البيانات: التقارير المالية والعقود ووثائق المنتج وقاعدة معرفة الدعم. لا ينبغي لهذه الملفات أن تعبر عبر مزوّد استيعاب SaaS طرف ثالث.

على خادم VPS، يبقى مُضمِّن المستندات وقاعدة البيانات المتجهية (LanceDB المدمجة افتراضيًا) وسجل المحادثات ضمن وحدات تخزين Docker الخاصة بك — لا تتضاعف في أي مكان آخر دون موافقتك. أنت تتحكّم في من يصل إلى أي مساحة عمل، وتختار نموذج LLM بحرية (واجهة برمجة تطبيقات سحابية أو نموذج محلي عبر Ollama)، وتتجنّب حصص الاستيعاب في عروض SaaS.

بالنسبة إلى وكالة تدير عدة عملاء، تصبح كل مساحة عمل صومعة محكمة: مستندات مقسّمة وأذونات مبنية على الأدوار ولا تسرّب بين الفرق. بالنسبة إلى الشركات، الامتثال هو الأولوية: تبقى البيانات على بنيتك التحتية، في ولايتك القضائية، وفق سياسة النسخ الاحتياطي الخاصة بك.

الفوائد الملموسة لاستضافة AnythingLLM ذاتيًا

  • مستندات سرية مفهرسة محليًا، لا تُرسَل أبدًا إلى خدمة استيعاب خارجية.
  • مساحات عمل مقسّمة حسب العميل أو الفريق، مع إدارة دقيقة للأدوار (مسؤول، مدير، افتراضي).
  • قاعدة بيانات متجهية حسب اختيارك: LanceDB مدمجة للبدء، أو Chroma أو Qdrant خارجية للمجموعات الكبيرة.
  • الاتصال بأكثر من 20 مزوّد LLM، بما في ذلك Ollama محلي من أجل انعدام الاعتماد على السحابة وصفر تكلفة استدلال.
  • لا حدود على عدد المستندات أو الصفحات أو مساحات العمل المُستوعَبة.
  • نسخ احتياطي بسيط ومحمول: تتّسع الحالة بأكملها في وحدة تخزين storage واحدة لأرشفتها أو نسخها.
  • وكلاء ذكاء اصطناعي مدمجون بدون كود: أنشئ خطوط أتمتة دون مغادرة الواجهة.
  • واجهة REST API كاملة لدمج AnythingLLM في تطبيقاتك أو سكريبتات الأتمتة الخاصة بك.

المتطلبات العتادية والبرمجية

حاوية AnythingLLM معقولة في استهلاك الموارد، لكن تضمين مجموعة كبيرة من المستندات يستهلك المعالج وذاكرة RAM بشكل ملحوظ. استهدف 2 vCPU / 2 GB من RAM للبدء بمئات المستندات ونموذج LLM عبر واجهة سحابية. ارتفع إلى 4 vCPU / 8 GB إذا كنت تفهرس آلاف المستندات أو تستخدم نموذج تضمين محليًا أو تشغّل Ollama على المضيف نفسه.

خصّص 15 إلى 20 GB من القرص كحدٍّ أدنى: المتجهات وذاكرة التخزين المؤقت للمستندات تنمو بسرعة، خاصةً مع ملفات PDF كثيفة أو مجموعات متعددة اللغات. أضف هامشًا إذا كنت تنشر أيضًا Qdrant أو Ollama على خادم VPS نفسه.

على صعيد البرمجيات، تحتاج إلى:
- Docker وDocker Compose (v2 موصى به)
- اسم نطاق أو نطاق فرعي يشير إلى خادم VPS (مثل chat.your-domain.com)
- المنفذ 443 مفتوحًا للدخل على جدار الحماية
- مفتاح واجهة LLM API (OpenAI أو Anthropic أو Mistral...) إذا لم تستخدم Ollama محليًا

ملاحظة مهمة حول الإصدارات: قبل أي أمر docker pull، اقرأ قسم تثبيت الإصدار أدناه. سحب ‎:latest‎ دون احتياط قد يُتلف embeddings نهائيًا.

تثبيت الإصدار: حرج وغير قابل للتراجع

لا تستخدم أبدًا الوسم ‎:latest‎ في الإنتاج. أمر docker pull mintplexlabs/anythingllm:latest قد يُكتب فوق مفتاح التشفير الداخلي لـ embeddings المخزّنة في وحدة التخزين، مما يجعل جميع مستنداتك المحوّلة إلى متجهات غير قابلة للقراءة بشكل دائم — دون إمكانية استرداد.

هذا السلوك موثّق كتغيير جذري منذ مارس 2026 (مشكلة GitHub ‎#5256).

القاعدة الواجبة: ثبّت دائمًا إصدارًا محددًا في docker-compose.yml:

image: mintplexlabs/anythingllm:v1.8.4

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

نشر AnythingLLM باستخدام Docker وHTTPS

01

إنشاء هيكل المجلدات والأذونات

عبر SSH على خادم VPS، أنشئ دليل العمل ووحدة البيانات:

mkdir -p /opt/anythingllm/storage
cd /opt/anythingllm
chmod -R 777 storage

تعمل الحاوية بمعرّف UID مخصّص (غير root): أذونات 777 على storage ضرورية لكي تتمكن العملية الداخلية من كتابة قاعدة البيانات المتجهية وتحميلات المستندات.

02

كتابة docker-compose.yml مع إصدار مثبّت

أنشئ /opt/anythingllm/docker-compose.yml. لاحظ وسم الإصدار الثابت — لا تستخدم ‎:latest‎:

services:
  anythingllm:
    image: mintplexlabs/anythingllm:v1.8.4
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./storage:/app/server/storage
    env_file:
      - .env
    cap_add:
      - SYS_ADMIN

ثم أنشئ .env في المجلد نفسه بالحد الأدنى:

JWT_SECRET=غيّر-هذا-إلى-سلسلة-عشوائية-طويلة
STORAGE_DIR=/app/server/storage
LLM_PROVIDER=openai
OPEN_AI_KEY=sk-مفتاح-openai-الخاص-بك

استبدل LLM_PROVIDER والمفتاح وفقًا لمزوّدك. للحصول على Ollama المحلي، انظر الخطوة التالية.

03

تهيئة Ollama إذا اخترت الحل المحلي بالكامل

إذا كان Ollama يعمل على المضيف نفسه الذي تعمل عليه حاوية AnythingLLM، لا تستخدم localhost — من داخل الحاوية، يشير localhost إلى الحاوية نفسها، وليس إلى المضيف.

عنوان URL الصحيح حسب نظام التشغيل:
- Linux: http://172.17.0.1:11434 (عنوان جسر Docker الافتراضي)
- macOS / Windows: http://host.docker.internal:11434

في ملف .env:

LLM_PROVIDER=ollama
OLLAMA_BASE_PATH=http://172.17.0.1:11434
OLLAMA_MODEL_PREF=llama3.2
EMBEDDING_ENGINE=ollama
EMBEDDING_BASE_PATH=http://172.17.0.1:11434
EMBEDDING_MODEL_PREF=nomic-embed-text

تحقّق من أن Ollama يستمع على 0.0.0.0 (وليس فقط 127.0.0.1) بالتحقّق من OLLAMA_HOST=0.0.0.0 في وحدة systemd أو متغيّر البيئة.

04

بدء الحاوية وإنشاء حساب المسؤول

شغّل الخدمة:

docker compose up -d
docker compose logs -f

انتظر السطرين [server] Listening on port 3001 و[database] Migration complete. ثم ادخل إلى http://your-ip:3001 من محطة عملك (وصول مؤقت، يُغلق بعد إعداد الوكيل العكسي). يرشدك معالج الإعداد إلى إنشاء حساب المسؤول واختيار نموذج التضمين ونموذج LLM.

05

إعداد الوكيل العكسي مع HTTPS

باستخدام Nginx أو Caddy، اعرض AnythingLLM خلف نطاقك.

مثال Caddy (الأبسط، Let's Encrypt تلقائي):

chat.your-domain.com {
    reverse_proxy localhost:3001
    request_body {
        max_size 100MB
    }
}

مثال Nginx (كتلة server):

server {
    listen 443 ssl;
    server_name chat.your-domain.com;
    ssl_certificate /etc/letsencrypt/live/chat.your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/chat.your-domain.com/privkey.pem;
    client_max_body_size 100M;
    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

توجيه client_max_body_size (Nginx) أو max_size (Caddy) ضروري للسماح برفع ملفات PDF الكبيرة أو أرشيفات المستندات.

06

إنشاء مساحة عمل واستيعاب المستندات والاختبار

في الواجهة، انقر '+ مساحة عمل جديدة'، وأعطها اسمًا، ثم اسحب بعض ملفات PDF إلى منطقة الرفع. شغّل عملية التضمين (زر 'حفظ وتضمين'). بعد الانتهاء، اطرح سؤالاً في المحادثة — يجب أن تستشهد الإجابات بالمصادر المستخرجة من ملفاتك.

إذا لم تظهر الاستشهادات، تحقّق في إعدادات مساحة العمل من أن وضع RAG مفعّل (خيار 'وضع المحادثة' → 'استعلام')، وأن عدد القطع المُعادة أكبر من 0.

07

تفعيل وضع تعدّد المستخدمين وتأمين الوصول

في الإعدادات → وضع تعدّد المستخدمين، فعّل الوضع متعدد المستخدمين. ادعُ زملاءك بالبريد الإلكتروني وعيّن الأدوار: المسؤول (وصول كامل)، المدير (إدارة مساحات العمل)، الافتراضي (الاستخدام فقط).

قيّد كل مستخدم بمساحات العمل التي تخصّه فقط. من واجهة الإدارة، يمكنك أيضًا تهيئة SSO أو مصادقة خارجية إذا دعم ذلك مزوّد LLM.

استكشاف الأخطاء: الأخطاء الثلاثة الأكثر شيوعًا

تظهر هذه المشكلات الثلاث بانتظام في مجتمع AnythingLLM. معرفتها قبل النشر توفّر عليك ساعات من التصحيح.

الخطأ 1 — ‎:latest‎ يُتلف embeddings (حرج وغير قابل للتراجع)

إذا حدّثت حاويتك بـ docker pull mintplexlabs/anythingllm:latest، قد تكتب نسخة جديدة فوق مفتاح تشفير embeddings المخزّنة في وحدة التخزين. النتيجة: جميع مستنداتك المحوّلة إلى متجهات تصبح غير قابلة للقراءة، دون إمكانية استرداد. هذا التغيير الجذري موثّق منذ مارس 2026 (المشكلة ‎#5256). الحل: ثبّت دائمًا وسم إصدار محدد في docker-compose.yml ولا تقم بـ pull دون نسخ احتياطي مسبق لوحدة التخزين storage.

الخطأ 2 — وكلاء Gemini معطوبون منذ الإصدار v1.16

منذ AnythingLLM v1.16، يُنتج مزوّد Gemini خطأ اتصال أثناء البث يظل مفتوحًا إلى أجل غير مسمى، مما يحجب الوكيل (المشكلة ‎#6153، لا تزال مفتوحة). الحل البديل: عطّل مزوّد Gemini في إعدادات LLM واستخدم بدلاً من ذلك نقطة نهاية متوافقة مع OpenAI أو انتقل إلى Ollama. لا تحاول التصحيح على مستوى الشبكة — المشكلة في معالجة البث داخل AnythingLLM.

الخطأ 3 — Ollama لا يمكن الوصول إليه من داخل الحاوية

إذا كان Ollama مثبّتًا مباشرةً على المضيف (خارج Docker)، فإن تهيئة http://localhost:11434 في AnythingLLM لا تعمل: من داخل الحاوية، يشير localhost إلى الحاوية نفسها، وليس المضيف. استخدم http://172.17.0.1:11434 على Linux (عنوان IP لجسر Docker) أو http://host.docker.internal:11434 على macOS/Windows. تحقّق أيضًا من أن Ollama يستمع على 0.0.0.0 وليس فقط على 127.0.0.1 (المتغيّر OLLAMA_HOST=0.0.0.0 في خدمة systemd).

بالنسبة إلى المجموعات الكبيرة (أكثر من 10,000 قطعة)، لا تبقَ على LanceDB المدمجة: انشر Qdrant في حاوية مجاورة على شبكة Docker نفسها ووجّه AnythingLLM إليها عبر المتغيّرين VECTOR_DB=qdrant وQDRANT_ENDPOINT=http://qdrant:6333. يتعامل Qdrant بشكل أفضل مع ملايين المتجهات، ويوفّر التصفية حسب البيانات الوصفية ويبقى قابلاً للاستعلام بشكل مستقل، ما يسهّل تصحيح عمليات البحث الدلالي. كما يسهل نسخ وحدة تخزين Qdrant احتياطيًا: docker cp بسيط أو لقطة وحدة تخزين تكفي.

AnythingLLM مقابل Open WebUI: أيّ مساحة عمل ذكاء اصطناعي تناسبك؟

AnythingLLMOpen WebUI
التركيز الأساسيRAG للمستندات + وكلاء ذكاء اصطناعيواجهة دردشة لنماذج LLM
RAG / استيعاب المستنداتمدمج (PDF وWord وURL وNotion وGitHub...)رفع ملفات أساسي
أداة بناء وكلاء الذكاء الاصطناعينعم (دون كود)لا
مزوّدو نماذج LLMأكثر من 20 (Ollama وOpenAI وAnthropic وMistral...)Ollama + متوافق مع OpenAI
أدوار متعددة المستخدمينمسؤول / مدير / افتراضيإدارة مستخدمين أساسية
واجهة REST APIواجهة كاملة للمستندات والدردشةمحدودة
مخزن المتجهاتLanceDB مدمج + قابل للاستبدال (Qdrant وChroma...)خارجي عبر إعداد RAG
ذاكرة RAM (واجهة API فقط، بدون LLM محلي)نحو 512 MBنحو 256 MB
خطر ‎:latest‎حرج — يُتلف embeddingsأقل توثيقًا
الرخصةMITMIT

قاعدة معرفتك الخاصة بالذكاء الاصطناعي على خادم VPS Cloud من ServOrbit

يوفّر خادم VPS Cloud من ServOrbit مساحة التخزين وذاكرة RAM اللازمة لفهرسة مستنداتك وتشغيل AnythingLLM بسرّية تامة. اختر الحجم المناسب لمجموعتك وتوسّع عند الطلب مع نموّها.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـ العربية والفرنسية والإنجليزية.