ما الذي يُغيّره الإصدار v1.17.0 لاستخدام الوكالات
يدعم AnythingLLM وضع متعدد المستخدمين منذ إصدارات عدة. يُعدّل الإصدار v1.17.0 (1 أكتوبر 2026) هذا النظام بإضافة دور ثالث — Manager — يمكنه إنشاء مساحات عمل ودعوة المستخدمين وإدارة المستندات دون الوصول إلى إعدادات النظام كمفاتيح API أو إعداد النموذج اللغوي. بالنسبة إلى وكالة، يتيح هذا الدور تفويض إدارة عميل ما إلى مدير مشروع دون الكشف عن البنية التحتية بأكملها. تعتمد دياريزة الاجتماعات الآن على Nemotron 3 للتعرف على المتحدث وعلى Parakeet Redux للنسخ — نموذجان قابلان للتشغيل محليًا على VPS مزوّد بـGPU، أو يمكن تفويضهما لـAPI من Nvidia. كان Google Vertex AI متاحًا بالفعل منذ v1.16.2 (22 سبتمبر 2026) بوصفه موفّر نماذج لغوية قابلًا للضبط مباشرةً من الواجهة، دون تعديل يدوي لملف الضبط. تجعل هذه الإضافات الأخيرة من توليفة v1.16.2 + v1.17.0 الإعداد الأكثر اكتمالًا للاستخدام متعدد العملاء بشكل منظّم.
المتطلبات قبل البدء
- VPS بذاكرة RAM لا تقل عن 4 غيغابايت — 2 vCPU / 4 غيغابايت لواجهات API السحابية، و4 vCPU / 8 غيغابايت إن استخدمت نموذج تضمين محليًا أو Parakeet Redux
- 20 غيغابايت من قرص SSD — تنمو متجهات LanceDB وذاكرة التخزين المؤقت للمستندات مع حجم المجموعة؛ اترك هامشًا
- Docker وDocker Compose v2 — تحقق بـ
docker compose version (بدون واصلة)؛ الإصدار v1 لا يدعم جميع فحوص الصحة - نطاق فرعي مخصص — مثل chat.your-domain.com؛ لا يجب كشف المنفذ 3001 مباشرةً على الشبكة العامة
- وكيل عكسي نشط — Nginx أو Caddy لـTLS عبر Let's Encrypt وحدود حجم الرفع
- مفتاح API لنموذج لغوي — OpenAI أو Anthropic أو Vertex AI أو Ollama محلي يعمل بالفعل على VPS
- المنفذ 3001 حر — يستخدمه AnythingLLM افتراضيًا؛ تحقق بـ
ss -tlnp | grep 3001 قبل التشغيل
نشر AnythingLLM v1.17.0 باستخدام Docker Compose
إنشاء بنية المجلدات وضبط الصلاحيات
تواصل عبر SSH وأنشئ مجلد العمل بـ
mkdir -p /opt/anythingllm/storage. يعمل AnythingLLM بالمعرّف UID 1000 داخل الحاوية؛ دون تصحيح الصلاحيات يرفض الحجم الكتابة عند الإطلاق الأول. طبّقchown -R 1000:1000 /opt/anythingllm/storage. إن استخدمتchmod -R 777 فسيعمل لكنه يوسّع الوصول دون داعٍ — استخدمchown المحدد.كتابة ملف docker-compose.yml
أنشئ
/opt/anythingllm/docker-compose.yml بالمحتوى التالي. الخدمة اسمهاanythingllm، الصورةmintplexlabs/anythingllm:latest،restart: unless-stopped. الأحجام:./storage:/app/server/storage. المنافذ:3001:3001 (أغلقه بالجدار الناري، يصله الوكيل العكسي فقط). متغيّرات البيئة في قسمenv_file: .env. الشبكة: أنشئ شبكةproxy مشتركة مع وكيلك العكسي لتفادي كشف المنفذ 3001 على الواجهة العامة.كتابة ملف .env
أنشئ
/opt/anythingllm/.env بثلاثة متغيّرات على الأقل.JWT_SECRET: سلسلة عشوائية من 32 حرفًا على الأقل تُولَّد بـopenssl rand -hex 32 — لا تعدّلها أبدًا بعد الإطلاق الأول، وإلا تُبطَل جميع رموز الجلسات.STORAGE_DIR:/app/server/storage (يجب أن يطابق مسار الحجم المستهدف).SERVER_PORT:3001. أضف بعدها متغيّرات موفّر النموذج اللغوي، مثلًاLLM_PROVIDER=openai وOPEN_AI_KEY=sk-... لـOpenAI، أوLLM_PROVIDER=gemini وGEMINI_API_KEY=... لـVertex AI عبر محوّل Gemini.تشغيل الحاوية والتحقق من السجلات
من
/opt/anythingllm، شغّلdocker compose up -d. انتظر 30 ثانية ثم تحقق من استماع الخدمة بـdocker compose logs --tail=50. يجب أن ترى السطرServer started on port 3001. إن ظهرEACCES: permission denied, mkdir '/app/server/storage/...' في السجل، فإنchown في الخطوة الأولى لم يُطبَّق على المسار الصحيح — أعد الخطوة الأولى ثمdocker compose restart.إعداد الوكيل العكسي والحصول على شهادة TLS
مع Nginx، أنشئ vhost يوجّه
https://chat.your-domain.com إلىhttp://127.0.0.1:3001. أضفclient_max_body_size 100m في كتلةserver للسماح برفع ملفات PDF كبيرة. اطلب الشهادة بـcertbot --nginx -d chat.your-domain.com. مع Caddy، توجيهreverse_proxy localhost:3001 كافٍ، والـTLS تلقائي.إنشاء حساب المسؤول عند الدخول الأول
افتح
https://chat.your-domain.com في متصفح. تطلب منك الواجهة إنشاء أول حساب مسؤول — هذا الحساب هو الوحيد الذي يمكنه تعديل مفاتيح API وموفّر النموذج اللغوي وإعدادات النظام. اختر كلمة مرور قوية؛ لا يوفّر AnythingLLM إعادة تعيين كلمة مرور بالبريد الإلكتروني في وضع الاستضافة الذاتية دون إعداد SMTP إضافي.تفعيل وضع متعدد المستخدمين ودعوة مستخدم ثانٍ
في واجهة المسؤول، اذهب إلى Settings → Security → فعّل Multi-user mode. يظهر زر Invite User في قائمة المستخدمين. أدخل البريد الإلكتروني، اختر الدور (Default أو Manager)، وانسخ رابط الدعوة المُولَّد. يمكن لدور Manager إدارة مساحات العمل والمستندات؛ دور Default يصل فقط إلى مساحات العمل المسنَدة إليه.
إنشاء مساحة عمل معزولة وإسنادها لمستخدم
من لوحة التحكم، انقر على New Workspace وسمّها (مثلًا Client Dupont). اسحب ملفات PDF إلى مساحة العمل ثم انقر Save & Embed لبدء التحويل إلى متجهات. بعد اكتمال التضمين، اذهب إلى إعدادات مساحة العمل → Manage Users وأضف فقط المستخدمين المصرَّح لهم. المستخدمون غير المُسنَدين لن يروا هذه مساحة العمل.
إعداد Google Vertex AI كموفّر نموذج لغوي
في Settings → LLM Provider، اختر Google Gemini (الذي يستخدم واجهة Vertex AI API عبر المحوّل الأصيل المتاح منذ v1.16.2). أدخل مفتاح Google API الخاص بك (
GEMINI_API_KEY) واختر النموذج. إن فضّلت مصادقة حساب خدمة GCP، صدّرGOOGLE_APPLICATION_CREDENTIALS إلى مسار ملف JSON في.env وأعد تشغيل الحاوية بـdocker compose restart.التحديث دون فقدان البيانات
للترقية إلى نسخة أحدث، أوقف الحاوية بـ
docker compose down، عدّل وسم الصورة فيdocker-compose.yml (مثال:mintplexlabs/anythingllm:v1.17.0)، ثمdocker compose pull && docker compose up -d. بياناتك في./storage المركّب كحجم: تنجو من التحديث. راجع السجلات بعد إعادة التشغيل للتأكد من عدم فشل أي ترحيل للمخطط.
ثبّت وسم نسخة محددة في docker-compose.yml بدلًا من استخدام وسم latest. يُظهر لك الأمر docker image ls mintplexlabs/anythingllm النسخة المنزَّلة حاليًا. بهذه الطريقة، لا يُطبَّق التحديث إلا عند قرارك، ويمكنك التراجع بتغيير الوسم وحده ثم تشغيل docker compose up -d مجددًا.
إدارة مساحات العمل والأدوار في الممارسة
بعد تفعيل وضع متعدد المستخدمين، تكشف واجهة المسؤول عن ثلاث طرق عرض متمايزة: Users (قائمة الحسابات والأدوار وحالة النشاط)، وWorkspaces (القائمة الشاملة مع عدد المستندات والمحادثات)، وInvites (روابط الدعوة المعلقة). بالنسبة لوكالة تدير عشرة عملاء، الممارسة المثلى هي إنشاء مساحة عمل لكل عميل، وإسناد مستخدم بدور Manager لكل عميل، وإبقاء المتعاونين بدور Default مع وصول مقيّد بمساحات العمل المعنية فقط. لا يمكن لدور Manager الاطلاع على مفاتيح API أو تغيير موفّر النموذج اللغوي: هذا العزل يمنع أي عميل من الاطلاع على إعدادات عميل آخر. تبقى المحادثات في مساحة العمل — لا تنتقل عند نقل مستند بين مساحات العمل. سمّ مساحات عملك بشكل صريح منذ البداية: إعادة تسمية مساحة العمل لا تُغيّر مسارات التخزين الداخلية.
النسخ الاحتياطي واستعادة النسخة
تتركّز حالة AnythingLLM بأكملها في حجم ./storage: قاعدة البيانات المتجهية LanceDB، وبيانات وصف المستندات، وإعدادات النسخة، وسجل المحادثات. تتمثل عملية النسخ الاحتياطي في أرشفة هذا المجلد أثناء إيقاف الحاوية، أو استخدام rsync إلى تخزين بعيد أثناء تشغيل الحاوية — تتحمّل LanceDB القراءات المتزامنة. للنسخ الاحتياطي التلقائي، أضف خدمة cron في compose تُنفّذ tar -czf /backup/anythingllm-$(date +%Y%m%d).tar.gz /opt/anythingllm/storage. الاستعادة تسلك المسار العكسي: انسخ الأرشيف إلى ./storage مع احترام صلاحيات 1000:1000، ثم docker compose up -d. يحتوي .env على JWT_SECRET: احتفظ بنسخة منه مشفّرة، فقدانه يُبطل جميع الجلسات النشطة وأي رموز API.
استكشاف الأخطاء: أخطاء حقيقية ظهرت أثناء التنصيب
إليك الأخطاء الخمسة الأكثر توثيقًا عند نشر AnythingLLM v1.17.0 على VPS، مع الرسالة الدقيقة والإصلاح المُطبَّق. الخطأ الأول: EACCES: permission denied, mkdir '/app/server/storage/vector-cache' عند تشغيل الحاوية. السبب: مجلد storage مملوك لـroot والحاوية تعمل بـUID 1000. الإصلاح: chown -R 1000:1000 /opt/anythingllm/storage ثم docker compose restart. الخطأ الثاني: address already in use :::3001 في السجلات. السبب: خدمة أخرى تشغل المنفذ. الإصلاح: ss -tlnp | grep 3001 لتحديد العملية، ثم إيقافها أو تغيير SERVER_PORT في .env. الخطأ الثالث: Invalid JWT secret — all sessions invalidated بعد إعادة التشغيل. السبب: تغيير JWT_SECRET. الإصلاح: استعد القيمة الأصلية أو اطلب من المستخدمين إعادة تسجيل الدخول. الخطأ الرابع: رفع PDF محدود بـ1 ميغابايت رغم الإعداد. السبب: client_max_body_size معرّف في كتلة http من Nginx لا في كتلة server — الأكثر تخصيصًا يسود. تحقق بـnginx -T | grep client_max_body_size. الخطأ الخامس: لا يُعيد مساحة العمل أجوبةً من المصادر بعد التضمين. السبب: نموذج التضمين المستخدم عند الاستيعاب يختلف عن النموذج النشط. الإصلاح: احذف المستندات، عدّل نموذج التضمين في الإعدادات، ثم أعد الاستيعاب.
AnythingLLM مقارنةً ببدائل RAG ذاتية الاستضافة
مرّر الجدول أفقيًا
| المعيار | AnythingLLM v1.17.0 | Open WebUI | LibreChat | PrivateGPT |
|---|---|---|---|---|
| RAG وثائقي مدمج | نعم — PDF، Word، URL، Notion، GitHub | استيراد أساسي بدون خط أنابيب RAG | عبر ملحق RAG (ضبط يدوي) | نعم — محسَّن للمستندات السرية |
| وضع متعدد المستخدمين | Admin / Manager / Default — مدعوم أصيلًا، دور Manager مُعدَّل في v1.17.0 | إدارة مستخدمين أساسية | نعم بأدوار لكل محادثة | لا — مستخدم واحد افتراضيًا |
| مساحات عمل معزولة لكل عميل | نعم — عزل أصيل بحسب مساحة العمل | لا — محادثات مشتركة | محدود — لكل محادثة فقط | لا |
| موفّرو LLM المدعومون | أكثر من 20 (Ollama، OpenAI، Vertex AI، Anthropic…) | Ollama + متوافق مع OpenAI | OpenAI، Azure، Anthropic، Ollama… | Ollama والمتوافقون مع OpenAI |
| دياريزة الاجتماعات | نعم — Nemotron 3 + Parakeet Redux (v1.17.0) | لا | لا | لا |
| الحد الأدنى من RAM (API سحابية) | ~512 ميغابايت | ~256 ميغابايت | ~384 ميغابايت | ~512 ميغابايت |
| منشئ وكلاء ذكاء اصطناعي بدون كود | نعم | لا | لا | لا |
| الرخصة | MIT | MIT | MIT | Apache 2.0 |
للذهاب أبعد في بنيتك التحتية للذكاء الاصطناعي
يغطّي AnythingLLM v1.17.0 حالة الاستخدام متعدد العملاء على VPS واحد. إن تجاوز مجموعة متجهاتك عدة ملايين، فكّر في نقل قاعدة البيانات المتجهية إلى Qdrant في حاوية مجاورة — يدعم ذلك AnythingLLM بشكل أصيل من إعدادات النسخة. للفرق التي تريد مقارنة الواجهات قبل الاختيار، يفصّل مقال Open WebUI وLibreChat وDify معايير الاختيار حسب ملف الاستخدام. إن كانت مستنداتك خاضعة لمتطلبات سرية صارمة، يشرح مقال PrivateGPT كيفية العمل في وضع محلي بالكامل دون أي اتصال صادر بالشبكة.