استكشاف الأخطاء وإصلاحها
ابدأ بالطبقة التي تفشل: المتصفح أو الواجهة أو الخادم الخلفي أو Ollama أو مكوّن المزوّد أو شبكة النشر.
فحوص سريعة
# App branch and local changes
git status
# Backend process liveness
curl http://localhost:3001/health/live
# Backend dependency readiness (SQLite, schema, and writable data storage)
curl http://localhost:3001/health/ready
# Ollama health
curl http://localhost:11434/api/tags
# Installed Ollama models
ollama list
تعمل الواجهة في التطوير عادة على http://localhost:5173 والخادم على http://localhost:3001. ويقدم مسار npx libre-webui المعبأ التطبيق على http://localhost:8080.
لا يبدأ Libre WebUI
تحقق من Node والتبعيات
node --version
npm install
npm run dev
يلزم Node.js 22.22 أو أحدث.
المنفذ مستخدم
lsof -i :3001
lsof -i :5173
lsof -i :8080
أوقف العملية القديمة أو هيئ منفذًا آخر.
لا يستطيع الخادم كتابة البيانات
يخزن الخادم البيانات تحت DATA_DIR إن ضُبطت، وإلا تحت backend/data. تحل عمليات المصدر DATA_DIR النسبية من دليل الخادم لا دليل الصدفة، ولذلك تختار DATA_DIR=./data المسار backend/data، بينما تختار القيمة التاريخية DATA_DIR=./backend/data المسار backend/backend/data. تحقق من قابلية الكتابة. وعند غياب DATA_DIR يحافظ Libre على الدليل التاريخي إذا كان المخزن الوحيد. وإذا احتوى الموقعان بيانات، أوقف Libre وانسخهما احتياطيًا واختر أو رحّل عمدًا؛ لا يدمج Libre قواعد متباينة أو ينسخها.
تميز نقاط الصحة بين عملية تعمل وتطبيق قابل للاستخدام:
- يعيد
/healthو/health/liveالرمز200ما دام الخادم يقدم HTTP. لا يؤثر مزوّد اختياري في الحيوية. - يعيد
/health/readyالرمز503إذا غابت قاعدة أو مخطط أو تخزين أو تبعية منصة مطلوبة. ولا ينتظر المزوّدين الاختياريين، وتحذف استجابته العامة الأخطاء والتفاصيل. - ينفذ
/health/deepفحوص سلامة SQLite والمفاتيح الخارجية في عامل محدود ويجمع فحوص المزوّدين الاختيارية مثل Ollama. تظهر أعطالهم تحذيرًا ولا تجعل المطلوب غير جاهز. يتطلب النقطة رمز Bearer لمسؤول حالي ولا تصلح لفحص منسق متكرر.
curl -H "Authorization: Bearer $LIBRE_ADMIN_TOKEN" \
http://localhost:3001/health/deep
لا يستطيع المتصفح الوصول إلى الخادم
في التطوير المحلي تستخدم الواجهة VITE_API_BASE_URL عند ضبطها، وإلا تعود إلى خادم التطوير.
مثال .env للواجهة:
VITE_API_BASE_URL=http://localhost:3001/api
VITE_WS_BASE_URL=ws://localhost:3001
VITE_WS_BASE_URL اختيارية، لكنها تصبح أساس مقابس Chat وطرفية Work عند ضبطها. استخدم URL مطلقة ws: أو wss:؛ وتُدعم بادئة مثل wss://example.com/libre. لا تضع بيانات اعتماد أو معاملات أو جزءًا. أعد تشغيل/بناء الواجهة بعد تغيير متغير Vite.
مثال .env للخادم:
CORS_ORIGIN=http://localhost:5173,http://127.0.0.1:5173
للهاتف أو LAN أو Tailscale، لا توجه متصفح الهاتف إلى localhost؛ استخدم IP الحاسوب في LAN أو Tailscale وشغّل خادم التطوير بربط المضيف:
npm run dev:host
يقدّم هذا الأمر الواجهة الأمامية على المنفذ 8080 ويمرر حركة API وWebSocket إلى الخادم الخلفي المحلي على المنفذ 3001. يلزم أن يكون المنفذ 8080 وحده قابلًا للوصول من الجهاز الآخر. إذا كانت VITE_API_BASE_URL أو VITE_WS_BASE_URL معرّفة في frontend/.env، فتأكد من أن هذه العناوين قابلة للوصول من الجهاز الآخر أو أزلها لاستخدام وكيل خادم التطوير.
لا يتدفق Chat خلف وكيل عكسي
العَرَض المعتاد إرسال الرسالة بلا ظهور رد، مع خطأ WebSocket في وحدة المتصفح. تحقق من سماح الوكيل بالترقية وعدم إغلاق الاتصالات الطويلة.
عند تهيئة أي قيمة، تُفحص ترقيات المتصفح ذات Origin مقابل CORS_ORIGIN وBASE_URL. اضبط واحدة على الأقل للنشر البعيد؛ ومن دونهما يبقى المرشح متساهلًا للتطوير. قد يحذف Electron والعملاء الآخرون Origin، لكن يجب أن يستبدلوا Authorization بتذكرة قصيرة لمرة واحدة. أبقِ الخادم خلف TLS وضوابط الوصول نفسها لـ HTTP API.
لاسم مضيف عام، اسمح بأصل المتصفح في الخدمة:
services:
libre-webui:
environment:
CORS_ORIGIN: https://chat.example.com
BASE_URL: https://chat.example.com
تفترض أمثلة nginx وCaddy تشغيل الوكيل على مضيف Docker، حيث ينشر Compose التطبيق على 8080. وإذا انضم الوكيل إلى الشبكة، استخدم libre-webui:3001 للأعلى.
nginx
يتطلب nginx تمرير ترويسات الترقية صراحة. وتبقي مهلة القراءة الطويلة اتصالًا خاملًا مفتوحًا أثناء عمل النموذج.
location /ws {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}
أعد تحميل nginx بعد التحقق باستخدام nginx -t.
Caddy
يدعم reverse_proxy في Caddy WebSockets بلا ترويسات إضافية:
chat.example.com {
reverse_proxy 127.0.0.1:8080
}
Traefik
يتعامل Traefik مع الترقية افتراضيًا. عندما يشارك مزوّد Docker شبكة Libre WebUI، تكفي تسميات الموجه والخدمة، مثل:
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.libre-webui.rule=Host(`chat.example.com`)'
- 'traefik.http.routers.libre-webui.entrypoints=websecure'
- 'traefik.http.routers.libre-webui.tls=true'
- 'traefik.http.services.libre-webui.loadbalancer.server.port=3001'
إذا اتصل التدفق ثم انقطع، افحص مهلة الخمول في أي وكيل أو موازن أمام Traefik. وإذا فرضها Traefik، عدّل transport.respondingTimeouts في نقطة الدخول.
لم يُكتشف Ollama
تحقق من تشغيل Ollama
curl http://localhost:11434/api/tags
هيئ عنوان Ollama مخصصًا
ملف .env للخادم:
OLLAMA_BASE_URL=http://localhost:11434
إذا كان Libre WebUI في Docker وOllama على المضيف، استخدم ملف Compose الخارجي أو وجّه OLLAMA_BASE_URL إلى عنوان مضيف تراه الحاوية.
مشكلات تنزيل النماذج
نزّل من الطرفية أولًا
ollama pull gemma4:12b
إذا فشل، فالمشكلة خارج Libre WebUI.
نماذج السحابة
استخدم مرشح السحابة في مدير النماذج لنماذج Ollama Cloud. يوحد Libre WebUI اللواحق المطلوبة في ذلك المسار، فلا حاجة لإضافة :cloud يدويًا للمدعوم.
لا يستطيع المستخدم تنزيل النماذج
يمكن للمسؤول تعطيل التنزيل للمستخدمين. افحص إعدادات الإدارة إذا استطاع غير المسؤول التصفح لا التثبيت.
Chat بطيء أو يفشل
- استخدم نموذجًا أصغر.
- افحص المحمل باستخدام
ollama ps. - قلل طول السياق.
- قلل أقصى رموز للردود الطويلة.
- تحقق من ملاءمة النموذج لـ RAM/VRAM.
- للمكونات، تحقق من المفتاح وحصة المزوّد.
توليد صور OpenAI غير متاح
- نشّط OpenAI المضمّن. احفظ مفتاحًا للمستخدم الحالي أو هيئ بديل
OPENAI_API_KEYالموثوق. - افتح إعدادات الصور وفعّلها واختر نموذج GPT Image معلنًا.
- فضّل
gpt-image-2. تبقى المعرفات القديمة للتوافق وهي مهملة في المصدر. - اترك
image_endpointفارغًا إلا إذا شغلت نقطة صور متوافقة. لا تعالج/responsesأو/chat/completionsطلبات Image API. - إذا رفض OpenAI الطلب مع مفتاح وحصة صالحين، تحقق من أهلية مؤسسة API لاستخدام GPT Image.
يُقيّم التوفر بمفتاح المستخدم أو بديل البيئة الموثوق. مفتاح مستخدم آخر لا يعرض النماذج.
مشكلات نقاط المزوّد
إذا تلقى مزوّد متوافق الطلبات في المسار الخطأ، افحص الإعدادات ← المكونات الإضافية:
- اختر Chat Completions لحمولات
/chat/completionsأو Responses لـ/responses. - أدخل جذر API مثل
https://provider.example/v1في عنوان الأساس. - اترك مسار API فارغًا لافتراضي الوضع أو أدخل مسارًا يبدأ بشرطة مائلة.
- يظل العنوان الكامل المخصص حقًا أعلى أولوية؛ امسحه للعودة إلى Base URL وAPI Path. تُتجاهل القيم المطابقة لافتراضي البيان القديم تلقائيًا بعد الترقية. كما يحدد لاحق
/chat/completionsأو/responsesتنسيق الطلب لمنع حمولة خاطئة.
يدعم JSON المستورد تنسيقات OpenAI Chat Completions وOpenAI Responses وAnthropic وGemini. ويحتاج البروتوكول الاحتكاري المختلف في الحمولة أو التدفق أو الأدوات أو الاستجابة إلى مهايئ؛ لا يترجمه تغيير العنوان.
يمكن للعناوين استخدام HTTP أو HTTPS. يرسل HTTP البيانات بلا تشفير، فاحصره في بوابة موثوقة وفضّل HTTPS. لا تقبل عناوين الأساس استعلامًا أو جزءًا، ولا تقبل المسارات مقاطع اجتياز حرفية أو معادة الترميز أو استعلامًا أو جزءًا. ويُرفض الترميز المفرط الذي لا يستقر ضمن حد التحقق.
يستبدل تحديث النماذج اللواحق المعروفة ومنها /responses بـ /models. يستخدم التنشيط والتحديث والتجاوزات نقطة المستخدم ومفتاحه. كما يحدث حفظ المفتاح أو حذفه وإعادة ضبط الاتصال القائمة؛ ولا تفعل معاملات التوليد غير المتعلقة. تُخزن IDs لكل مستخدم ولا تكتب JSON. وإذا لم يدعم المزوّد المسار المشتق، اضبط model_map يدويًا.
لا تتبع طلبات المزوّد إعادة توجيه HTTP، بما فيها الاكتشاف وChat وWork والصور والتضمينات وTTS. اضبط الوجهة النهائية. يمنع السلوك الآمن انتقال Authorization إلى وجهة غير متحققة.
إذا أبلغ Work أن التوجيه تغير أثناء التشغيل، ابدأ تشغيلًا جديدًا بعد إنهاء التعديل. يتوقف Work قبل الطلب التالي كي لا يُعاد إرسال حالة أدوات قديمة عبر حد وضع أو عنوان أو مفتاح مختلف.
تأتي الطلبات من الخادم، ولذلك يعني localhost حاوية Libre WebUI عند الحاوية، لا المضيف. استخدم DNS الخدمة مثل http://ai-gateway:8080/v1. واستخدم http://host.docker.internal:8080/v1 فقط إذا وفرته البيئة. HTTP نص صريح حتى على اسم خاص.
تُحل صور ونقاط ومفاتيح المستخدم الحالي أيضًا. إذا بدا الطلب يستخدم إعدادات حساب آخر، تحقق من هويته.
تنطبق قواعد الأمان والملكية التالية:
- ادخل كمسؤول لتغيير التوجيه. التعريفات وحقول الاتصال تهيئة للمثيل؛ ويستطيع المستخدم حفظ التوليد والبيانات والتنشيط.
- مع
endpointأوapi_urlالقديم، أدخل URL العملية كاملًا مثلhttps://provider.example/v1/chat/completions. ضع جذر API فيbase_urlفقط معapi_modeوapi_pathاختياري. - تُقبل HTTP وHTTPS المطلقة. استخدم HTTP لبوابة ذاتية موثوقة فقط لأن المفاتيح والمطالبات والاستجابات غير مشفرة.
- التجاوز الفارغ يستخدم نقطة التعريف. أما الصريح المشوه أو غير الآمن فيُرفض ولا يعود بصمت إلى المزوّد.
- لا يُستخدم مفتاح البيئة إلا لتعريف مضمّن غير محجوب يحتفظ بجذره وحقوله ونقاط قدراته ومحدداته وافتراضيات توجيهه. تتطلب التعريفات المستوردة أو القابلة للكتابة ذات ID مضمّن والمسارات المخصصة بيانات الحساب نفسه. يبلغ Libre عدم التوفر ويتجاوز الاكتشاف إن وُجد مفتاح البيئة وحده.
- تُحجر التعريفات المخصصة السابقة للترقية لغياب أصل اعتماد المسؤول. أعد استيراد JSON كمسؤول، ثم ليُنشطه كل مستخدم. يعيد التعديل المباشر الحجر؛ استخدم التثبيت/التحديث لتسجيل المسار والتجزئة.
- تُربط البيانات بالمسار وعقد المصادقة والتعريف والمصدر وقت الإدخال. احفظها ثانية بعد التغيير. لا يهاجر القديم غير المرتبط إلا على مسار مضمّن مطابق.
- قد يستخدم المستورد
api_urlكاسم مستعار كامل؛ يتقدمendpoint. وإذا كانت القائمة في مكان آخر، اضبطmodels_endpointكاملًا؛ يُتحقق منه ولا تُتبع إعادة التوجيه. - نشّط المكوّن بعد حفظ النقطة والبيانات. يشتق التنشيط
/modelsويستخدم بيانات المستخدم ما لم توجدmodels_endpoint. يؤدي الحفظ/إعادة الضبط إلى تحديث الاكتشاف وينتظر الطلب قبل إعادة تحميل الواجهة. التنشيط خاص بالحساب. - اختر تحديث النماذج لفحص الكتالوج. الجدول للقراءة فقط ويعرض IDs الحالية. يحتفظ الفشل المؤقت بالكتالوج السابق أو
model_mapعند غيابه؛ فلا يثبت اكتمال الفحص سلامة البعيد. - يتطلب الاكتشاف مصفوفة
dataمتوافقة. تُخزن النتائج لكل مستخدم. يحتفظ التنشيط العادي بالسابق عند الفشل؛ أما تغيير الاتصال فيمسحه أولًا، فيعود الفشل إلىmodel_map. - تُحل الصور والنقاط والمفاتيح للمستخدم الحالي؛ تحقق من المصادقة إن بدت من حساب آخر.
- إذا كان حساب غير مسؤول قد خزّن توجيهًا قديمًا، استخدم إعادة الضبط. تُحذف القيمة المتجاهلة حتى لا تنشط بعد ترقية الدور، وتُمسح النماذج المكتشفة.
- الطلبات من الخادم؛
localhostفي الحاوية يعني الحاوية. - لا تُتبع إعادة التوجيه؛ اضبط URL النهائي.
يستخدم Chat المزوّد الخطأ أو يعرضه غير متاح
قد يوجد ID نفسه في Ollama ومكونات عدة. تحفظ الجلسات والتفضيلات الحالية المزوّد مع ID، فتظل الأسماء اختيارات مستقلة.
- إذا ظهر غير متاح، أعد تنشيط أو تثبيت المكوّن الدقيق وتحقق من وجود ID في خريطته.
- إذا حُذف عمدًا، اختر بديلًا صراحة. لا يعيد Libre توجيه الاختيار الدقيق إلى اسم مطابق.
- قد تفتقر السجلات القديمة إلى بيانات المزوّد. تظل تستخدم التوجيه بالاسم لأن المقصود مجهول، وتظهر «المزوّد غير مسجل». أعد اختيار Ollama أو المكوّن لتثبيت المستقبل.
- تبقى الشخصيات
persona:<id>. تسجل الجديدة Ollama خلفية لها؛ وتظل القديمة متوافقة.
مشكلات Work
Work مفقود أو البيئة غير متاحة
يتطلب Work حسابًا موثقًا له وصول — مسؤولًا أو مستخدمًا نشطًا بعد فتحه للجميع. ويجب أن تكون بيئة الحاويات متاحة للخادم:
docker info
docker version
لـ Docker الافتراضي، تحقق من تشغيله وقدرة مستخدم النظام على استدعاء WORK_DOCKER_COMMAND. تثبيت npx لا يثبت Docker. وإذا غابت البيئة يبقى التطبيق متاحًا ولا ينفذ Libre أوامر النموذج على المضيف.
تفعل ملفات Compose Work بتركيب مقبس المضيف. على Kubernetes فعّل Pod/PVC بـ work.enabled=true، ولا تركب مقبس العقدة. وإذا ظل Runtime unavailable، تعرض الصفحة الحالة:
| الرسالة | السبب والحل |
|---|---|
The "docker" CLI is not installed… | صورة مخصصة بلا docker-cli. استخدم الرسمية أو وجّه WORK_DOCKER_COMMAND إلى CLI. |
No Docker daemon is reachable… | أزيل تركيب المقبس أو توقف العفريت. استعد التركيب وشغّل Docker. |
The Docker socket is mounted but…cannot open | تختلف مجموعة المقبس. اضبط DOCKER_GID في .env وأعد إنشاء الحاوية. |
تُغلق شاشة Work أو صوتها برمز WebSocket 1006 مع تسجيل screen is unreachable | يتصل الخادم الخلفي داخل الحاوية بحلقته المحلية. على Docker Desktop استخدم القيمة المرفقة WORK_DOCKER_PUBLISHED_HOST=host.docker.internal؛ وعلى Docker Engine الأصلي اضبط أيضًا WORK_PREVIEW_BIND على بوابة جسر Docker غير العامة، ثم أعد إنشاء Libre WebUI. |
اقرأ مجموعة المقبس داخل حاوية لأن macOS يعرض غيرها:
echo "DOCKER_GID=$(docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
alpine stat -c '%g' /var/run/docker.sock)" >> .env
docker compose up -d --force-recreate
يمنح المقبس تحكمًا يعادل الجذر؛ راجع Work: مساحات العمل المعزولة.
لا يدعم النموذج الأدوات
يتطلب Work نموذج محادثة بأدوات. في Ollama اختر نموذجًا مثبتًا قدراته tools. وللمكوّن:
- تحقق من نشاط مكوّن chat أو completion.
- تحقق من وجود النموذج في قائمته.
- تحقق من مفتاح المسؤول الحالي.
- تحقق من دعم النموذج الدقيق للأدوات.
لا يعيد Libre توجيه التشغيل الفاشل إلى مزوّد آخر.
يعيد طلب Work HTTP 429
بلغ المثيل حد المهام أو البيئات النشطة. يسمح Libre افتراضيًا بمهمتين مدعومتين بالحاوية في المثيل وواحدة لكل مستخدم. وتشغل المعاينة سعة أيضًا. انتظر أو أوقف معاينة أو راجع WORK_MAX_ACTIVE_RUNTIMES_* وWORK_MAX_TASKS_*.
يفشل تثبيت الحزم أو الشبكة
تستخدم المهام الجديدة شبكة جسر Docker لتنزيل الحزم وتشغيل المعاينات. افحص DNS والوكيل والسجل ومخرجات النشاط. لا يركب Libre مفاتيح SSH أو بيانات السحابة أو ملفات المتصفح أو مقبس Docker في حاوية المهمة.
لا تبدأ معاينة Work
- اجعل الخادم يرتبط بـ
0.0.0.0علىWORK_PREVIEW_PORT(4173افتراضيًا). - اترك الأمر الاختياري فارغًا لاكتشاف سكربت
devفيpackage.jsonأوindex.html، بما فيه تطبيق متداخل واحد. - عند عدة تطبيقات أو غياب نقطة، أدخل أمر التطوير الصريح. يبدأ في
/workspace، فاستخدمcd <app-directory> && ...للتداخل. - وسع تفاصيل الخطأ لرؤية المخرجات.
- أوقف معاينة قائمة قبل أمر يحتاج الحاوية.
تستخدم عناوين المعاينة منفذ التفاف ديناميكيًا، ولذلك يجب أن يكون المتصفح والخادم على الجهاز نفسه. لا يصل متصفح متصل بخادم بعيد إلى التفافه، وقد تحظر صفحة HTTPS معاينة HTTP كمحتوى مختلط.
لا يمكن فتح ملف أو حفظه
تقبل API ملفات نص UTF-8 حتى 2 MB. إذا تغير الملف بعد فتحه، أعد تحميله قبل الحفظ. يقتصر التنسيق على الأنواع المدعومة تحت 100,000 حرف و4,000 سطر؛ ويتوقف إبراز النحو للملفات الكبيرة.
تُحفظ التعديلات غير المحفوظة كمسودة في المتصفح الحالي، وليست بديلًا عن حفظ مساحة العمل.
توقفت مهمة أو معاينة
يوقف إيقاف التشغيل أو المعاينة أو إعادة Libre عمليات الحاوية المؤقتة ويحفظ الوحدة المسماة. أعد فتح المهمة والمعاينة. أما حذف المهمة فيزيلها ومساحتها نهائيًا بعد التأكيد.
مشكلات الدخول والتسجيل
أول مستخدم ليس مسؤولًا
الحساب الأول في قاعدة جديدة وحده يصبح مسؤولًا. تحتفظ القواعد القائمة بأدوارها.
أخطاء JWT
اضبط سرًا ثابتًا في الإنتاج:
JWT_SECRET=replace-with-a-long-random-secret
تغيير JWT_SECRET يبطل الجلسات.
يحظر Turnstile التسجيل
لا يُفعّل إلا بالمفتاحين:
TURNSTILE_SITE_KEY=...
TURNSTILE_SECRET_KEY=...
تحقق من مطابقة مفتاح الموقع للنطاق وصحة السر.
تفشل إعادة توجيه OAuth
اضبط عناوين الاستدعاء في لوحة المزوّد و.env:
BASE_URL=https://your-domain.example
GITHUB_CALLBACK_URL=https://your-domain.example/api/auth/oauth/github/callback
HUGGINGFACE_CALLBACK_URL=https://your-domain.example/api/auth/oauth/huggingface/callback
مشكلات المحادثة مع المستندات
يقبل Libre PDF وOffice (DOCX/PPTX/XLSX) وMarkdown وHTML والشيفرة وCSV حتى 10 MB.
إذا عمل البحث لا الاسترجاع الدلالي:
- ثبّت نموذجًا مثل
nomic-embed-text. - فعّل التضمينات في الإعدادات.
- أعد إنشاءها من إعدادات المستند أو API.
ollama pull nomic-embed-text
يظل البحث بالكلمات يعمل عند تعطيل التضمينات.
مشكلات معاينة العناصر المنشأة
للألعاب أو HTML التفاعلي، اطلب ملف HTML كاملًا مستقلًا مع CSS وJavaScript مضمنين.
إذا احتاج إدخال لوحة:
- انقر داخل المعاينة أولًا.
- استخدم فتح في تبويب مستقل.
- لا تعتمد على ملفات محلية غير مرفقة.
يمكن لـ Libre تجميع كتل index.html + CSS + JavaScript الشائعة، لكن HTML المستقل أوثق.
مشكلات Docker
لا تصل الحاوية إلى Ollama
استخدم ملف Ollama الخارجي عندما لا يكون في الحزمة نفسها:
docker compose -f docker-compose.external-ollama.yml up -d
لا تستمر البيانات
ركّب وحدة دائمة واضبط DATA_DIR عند الحاجة. يُخزن مفتاح التشفير دائمًا عند استخدام DATA_DIR أو Docker.
إعادة ضبط البيانات المحلية
أوقف التطبيق، ثم انسخ دليل البيانات المستخدم واحذفه. افتراضي التطوير backend/data.
cp -R backend/data backend/data.backup
rm -rf backend/data
أعد تشغيل الخادم وأنشئ حسابًا جديدًا.
ما زلت عالقًا؟
افتح مشكلة تتضمن:
- إصدار Libre WebUI وcommit
- طريقة التثبيت
- نظام التشغيل
- إصدار Node.js
- إصدار Ollama
- إصدار Docker ونتيجة
docker infoلمشكلات Work - سجلات الخادم حول الفشل
- أخطاء وحدة المتصفح
- النموذج أو المزوّد الدقيق
- مخرجات نشاط Work عند فشل مهمة أو معاينة