لماذا تضيف Open-WebUI إلى خادم Ollama الخاص بك
Ollama يعرض واجهة برمجة REST متوافقة مع OpenAI — فعّالة للمطورين، غير قابلة للوصول لأعضاء الفريق الآخرين. Open-WebUI يسد هذه الفجوة: واجهة ويب متكاملة تتصل بـ Ollama (أو أي مزود متوافق مع OpenAI) وتحول خادم الاستدلال إلى أداة تعاونية.
بأكثر من 150,000 نجمة على GitHub (ترخيص MIT)، أصبح Open-WebUI الواجهة الأمامية المرجعية لـ Ollama. نما انتشاره بشكل كبير بعد جولة التمويل من السلسلة B لـ Ollama — 65 مليون دولار جُمعت في يوليو 2026 — مما سرّع اعتماد محرك الاستدلال في فرق التطوير.
المشروع نشط، يُصان بشكل مستمر، ويصدر وسوماً مستقرة (v0.6.x وقت كتابة هذا الدليل). تسمح له نضجه بتلبية احتياجات تتجاوز المحادثة: RAG على الملفات المحلية، وإدارة نماذج متعددة، ومجموعات مستخدمين، وتكامل SSO عبر OpenID Connect.
ما يضيفه Open-WebUI فعلياً إلى مجموعة Ollama الخاصة بك
- واجهة متعددة المستخدمين: لكل عضو في الفريق حسابه وسجله ومحادثاته — دون الوصول إلى API الخام أو سطر الأوامر.
- RAG أصيل: استورد ملفات PDF وMarkdown وWord مباشرة من الواجهة؛ يقوم Open-WebUI بتقسيمها وتحويلها إلى متجهات وتخزينها في قاعدة بياناته المحلية.
- إدارة النماذج: تنزيل وحذف وتفعيل نماذج Ollama من واجهة الويب، دون الحاجة إلى
docker exec. - تسجيل دخول موحد SSO عبر OpenID Connect: اربط Open-WebUI بمزود الهوية الخاص بك (Keycloak أو Authentik أو Google Workspace...) للوصول الموحد والإلغاء المركزي.
- مجموعات وأدوار: حدّد من يصل إلى النماذج، ومن يرفع الملفات، ومن يملك حقوق الإدارة.
- لا اعتماد على السحابة: جميع الرموز المميزة والمحادثات والملفات تبقى على بنيتك التحتية.
المتطلبات المادية والبرمجية
Open-WebUI يعمل في حاوية Docker ويتصل بـ Ollama عبر شبكة Docker الداخلية. يمكن لكليهما العمل على نفس خادم VPS.
لفريق من 5 إلى 10 أشخاص مع نماذج 7B المكمية (Q4)، تحتاج على الأقل إلى:
- 8 جيجابايت RAM (6 جيجابايت للنموذج + هامش لـ Open-WebUI والنظام)
- 4 vCPU: الاستدلال على المعالج بطيء مع عدد أقل من النوى؛ انتقل إلى 8 vCPU للاستخدام اليومي المريح
- 30 جيجابايت تخزين SSD على الأقل، بالإضافة إلى مساحة للنماذج (نموذج 7B Q4 ≈ 4.5 جيجابايت، نموذج 13B ≈ 8 جيجابايت)
- Docker وDocker Compose مثبَّتان
- اسم نطاق يشير إلى خادم VPS الخاص بك (مطلوب لـ TLS وSSO)
- خادم وكيل عكسي مع HTTPS — Nginx أو Traefik أو Caddy (يتطلب Open-WebUI بروتوكول HTTPS لملفات تعريف الارتباط الآمنة للجلسة)
نشر Open-WebUI وOllama باستخدام Docker Compose
إنشاء ملف Docker Compose
أنشئ دليل عمل ثم اكتب ملف التكوين:
mkdir -p /opt/openwebui && cd /opt/openwebuiمحتوى ملف compose.yml:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
depends_on:
- ollama
ports:
- "127.0.0.1:3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=غيّر-هذا-بسلسلة-عشوائية
volumes:
- open_webui_data:/app/backend/data
restart: unless-stopped
volumes:
ollama_data:
open_webui_data:يجب أن يكون WEBUI_SECRET_KEY سلسلة عشوائية طويلة: أنشئها باستخدام openssl rand -hex 32.
تشغيل المجموعة
شغّل الخدمتين:
docker compose up -dتحقق من أن الحاويتين نشطتان:
docker compose psقد يستغرق Ollama بضع ثوانٍ للبدء. ينتظر Open-WebUI جاهزية Ollama بفضل depends_on، لكن إذا رأيت أخطاء اتصال عند أول تشغيل، انتظر 15 ثانية ثم أعد التحميل.
تنزيل أول نموذج
من المضيف، نزّل نموذجاً عبر Ollama:
docker exec -it ollama ollama pull llama3.1:8bيمكنك أيضاً القيام بذلك من واجهة Open-WebUI بعد تسجيل الدخول، في لوحة الإدارة ← النماذج ← تنزيل من Ollama.com.
تكوين الخادم الوكيل العكسي Nginx مع HTTPS
Open-WebUI يستمع على 127.0.0.1:3000. أنشئ مضيفاً افتراضياً في Nginx لعرضه عبر HTTPS:
server {
listen 443 ssl;
server_name openwebui.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/openwebui.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openwebui.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
}
}احصل على الشهادة باستخدام Certbot:
certbot --nginx -d openwebui.yourdomain.comإنشاء حساب المسؤول
افتح https://openwebui.yourdomain.com في متصفحك. أول حساب يُنشأ يصبح مسؤولاً تلقائياً. أدخل بريداً إلكترونياً وكلمة مرور.
من لوحة الإدارة (أيقونة الصورة الرمزية ← لوحة الإدارة) يمكنك:
- تحديد ما إذا كان المسجلون الجدد نشطين فوراً أو بانتظار الموافقة;
- إنشاء مجموعات مستخدمين وربط النماذج بها;
- تكوين SSO.
تكوين تسجيل الدخول الموحد SSO عبر OpenID Connect
Open-WebUI يدعم المصادقة عبر OpenID Connect (OIDC) بشكل أصيل. يمكنك دمجه مع Keycloak أو Authentik أو Authelia أو أي مزود متوافق (بما في ذلك Google Workspace أو Microsoft Entra).
في ملف compose.yml، أضف متغيرات البيئة التالية إلى خدمة open-webui:
environment:
- OAUTH_CLIENT_ID=your-client-id
- OAUTH_CLIENT_SECRET=your-client-secret
- OPENID_PROVIDER_URL=https://your-idp.example.com/.well-known/openid-configuration
- OAUTH_PROVIDER_NAME=نظام SSO
- ENABLE_OAUTH_SIGNUP=trueعنوان URL للاستدعاء الراجع الذي يجب الإعلان عنه في مزود الهوية هو https://openwebui.yourdomain.com/oauth/oidc/callback.
أعد تشغيل المجموعة بعد التعديل:
docker compose up -dلتقييد وصول SSO على نطاق بريد إلكتروني محدد (مثل @your-company.com)، كوّن القيد مباشرة في مزود الهوية، لا في Open-WebUI. يتيح كل من Keycloak وAuthentik تصفية النطاقات على مستوى عميل OIDC — وهذه هي نقطة التحكم الأكثر أماناً، لأنها تغطي واجهة API أيضاً.
تفعيل RAG على مستنداتك
Open-WebUI يتضمن خط أنابيب RAG (التوليد المعزز بالاسترداد) الذي يتيح الاستفسار عن مستنداتك المحلية في المحادثة. تتم المعالجة بالكامل على خادم VPS الخاص بك — لا يُرسَل أي مستند إلى خدمة خارجية.
لتفعيل RAG:
1. من الواجهة، انقر على مشبك الورق في منطقة إدخال المحادثة، أو استخدم علامة التبويب المستندات في القائمة الجانبية.
2. استورد ملف PDF أو Markdown أو DOCX أو TXT. يقوم Open-WebUI بتقسيمه وتحويله إلى متجهات وتخزينه في قاعدة بياناته المحلية.
3. في المحادثة، ابدأ رسالتك بـ # متبوعاً باسم المستند لإدراجه كسياق.
للاستخدام المتقدم (مستندات متعددة، مجموعات موضوعية)، تتيح لك قسم مساحة العمل ← المستندات تنظيم الملفات في مجموعات وربطها بنماذج محددة.
Open-WebUI وAnythingLLM وLibreChat: أي واجهة تختار
| المعيار | Open-WebUI | AnythingLLM / LibreChat |
|---|---|---|
| واجهة LLM الخلفية | Ollama أصيل + أي نقطة OpenAI | OpenAI وOllama وAzure وLM Studio |
| إدارة المستخدمين | مدمجة، مجموعات، OIDC أصيل | مدمجة (AnythingLLM: مساحات عمل معزولة) |
| RAG | أصيل، بدون إعداد | أصيل، قابل للتكوين (LanceDB، pgvector) |
| نجوم GitHub | أكثر من 150,000 (MIT) | أكثر من 40,000 (MIT) / أكثر من 20,000 (MIT) |
| حالة الاستخدام الأساسية | فريق مع Ollama منشور مسبقاً | RAG متعدد المصادر المتقدم / محادثة متعددة الواجهات |
استكشاف الأخطاء وإصلاحها: الأخطاء الشائعة
Connection refused عند بدء تشغيل Open-WebUI.
Ollama ليس جاهزاً بعد عندما يحاول Open-WebUI الاتصال. انتظر 20 ثانية ونفذ docker compose restart open-webui. لتجنب هذا عند كل إعادة تشغيل، أضف فحص صحة على خدمة Ollama في compose.yml.
البث يتوقف بعد 60 ثانية.
يطبق الخادم الوكيل العكسي مهلة HTTP افتراضية. أضف proxy_read_timeout 300s; في كتلة Nginx location / (أو ما يعادلها من timeout في Traefik). قد تستغرق نماذج اللغة أحياناً عدة دقائق لإنشاء استجابة طويلة.
WebSocket connection failed.
تحقق من أن رؤوس Upgrade وConnection تُمرَّر بشكل صحيح من الخادم الوكيل العكسي. بدونها، يُحجب البث عبر SSE/WebSocket ولا تصل الردود في الوقت الفعلي.
مصادقة SSO تُرجع redirect_uri_mismatch.
عنوان URL للاستدعاء الراجع المُعلَن في مزود الهوية لا يطابق ما يرسله Open-WebUI. يجب أن يكون بالضبط https://openwebui.yourdomain.com/oauth/oidc/callback.
مستخدم SSO يمكنه تسجيل الدخول لكن ليس لديه وصول لأي نموذج.
تُوضع الحسابات الجديدة المنشأة عبر SSO افتراضياً في دور pending. غيّر دورهم إلى user في لوحة الإدارة ← المستخدمون، أو اضبط DEFAULT_USER_ROLE=user في متغيرات البيئة.
تأمين الوصول إلى واجهة Ollama API
Ollama يستمع على 0.0.0.0:11434 داخل حاويته. لا تنشر تكوين compose.yml المقترح أعلاه هذا المنفذ على المضيف — فقط Open-WebUI يصل إليه عبر شبكة Docker الداخلية. هذا هو الوضع الصحيح.
إذا كنت بحاجة إلى الوصول إلى Ollama API مباشرة (من IDE أو دفتر Jupyter أو تطبيق خارجي)، فثمة خياران:
1. نفق SSH: ssh -L 11434:localhost:11434 user@your-vps — الواجهة API متاحة محلياً دون تعرض عام.
2. خادم وكيل عكسي مع مصادقة: اعرض Ollama خلف Nginx مع auth_basic أو رمز Bearer، إذا كان لديك عملاء لا يدعمون نفق SSH.
لا تنشر المنفذ 11434 مباشرة على الواجهة العامة بدون مصادقة: Ollama API لا تملك حماية أصيلة ضد الوصول غير المصرح به.
للحفاظ على تحديث Open-WebUI، غيّر الصورة من ghcr.io/open-webui/open-webui:main إلى ghcr.io/open-webui/open-webui:v0.6.x (أو آخر وسم مستقر) في ملف compose.yml الخاص بك. وسم :main يتبع التطوير المستمر — مفيد لاختبار الميزات الجديدة، لكنه أقل قابلية للتوقع في الإنتاج. راجع ملاحظات الإصدار على GitHub قبل كل تحديث.
ميزات متقدمة لاستكشافها بعد النشر
- خطوط أنابيب ووظائف: يتيح Open-WebUI كتابة وظائف Python تتدخل في تدفق المحادثة — مرشحات، ومعززات السياق، وموصلات إلى واجهات API خارجية.
- نماذج مخصصة: أنشئ 'نماذج' مُعدَّة مسبقاً (تعليمات النظام، ودرجة الحرارة، والسياق) وشاركها مع مجموعات مستخدمين محددة.
- توليد الصور: اربط Open-WebUI بنسخة Stable Diffusion أو ComfyUI محلية لتوليد الصور مباشرة في المحادثة.
- التكامل مع الأدوات الخارجية: عبر بروتوكول MCP (Model Context Protocol)، يمكن لـ Open-WebUI استدعاء أدوات خارجية — قواعد البيانات وواجهات REST API والبحث على الويب.
الوثائق الرسمية
للإعداد المتقدم والخيارات الخاصة بالأداة، راجع الوثائق الرسمية لـ Open-WebUI. يتناول هذا الدليل النشر الأساسي والتكوينات الأكثر شيوعاً — المعاملات الخاصة ببيئتك (تكامل LDAP، تكوين خطوط الأنابيب، ضبط التضمينات) موجودة في وثائق المشروع.