لماذا تستضيف LangFlow على خادم VPS
LangFlow يتصدى لحالة استخدام محددة: تصميم مسارات الذكاء الاصطناعي بالسحب والإفلات لمكوّنات — نماذج LLM والمسترجعات والمطالبات والذاكرة والوكلاء — ثم اختبارها دون كتابة سطر كود واحد. إنه البديل البصري لـ LangChain في وضع الكود فقط، مناسب للفرق التي تريد التكرار السريع قبل تثبيت المنطق في Python.
على خادم VPS، تحصل على نسخة مستقرة ودائمة يمكن للفريق الوصول إليها، بخلاف الإعداد المحلي الذي يختفي عند إعادة التشغيل. كثيرًا ما تُشفّر مساراتك منطقًا تجاريًا حساسًا — سلاسل المطالبات ومفاتيح API والموصّلات إلى قواعد بياناتك. لا ينبغي أن تمرّ هذه البيانات عبر خدمة SaaS لا تتحكم في سياسة الاحتفاظ بها.
LangFlow يعتمد على FastAPI من جانب الخادم ويكشف كل مسار كنقطة نهاية REST: يمكن لتطبيقاتك استدعاء مسارات الذكاء الاصطناعي مباشرةً، دون كود وسيط. هذا الجمع بين الواجهة البصرية للتصميم والـ API للتكامل هو ما يجعله أداة نمذجة أوّلية جدية لحالات مثل RAG الوثائقي وروبوتات المحادثة والوكلاء متعددي الخطوات أو مسارات التصنيف.
ما الذي تكسبه بنسخة مُستضافة ذاتيًا
- واجهة بصرية للمسارات — اسحب مكوّنات LLM والمسترجع والذاكرة والمطالبة إلى اللوحة، وصِلها، واختبر بلا كود.
- موصّلات LLM متعددة — OpenAI وAnthropic وOllama (محلي) وHugging Face وأي مزوّد متوافق مع واجهة OpenAI البرمجية.
- RAG مدمج — حمّل مستندات PDF أو نصية مع التقطيع والتضمين والبحث الشعاعي في المسار ذاته.
- API تلقائية لكل مسار — يصبح كل مسار نقطة نهاية REST قابلة للاستدعاء من أي تطبيق.
- متغيّرات عامة مشفّرة — تُخزَّن مفاتيح API الخاصة بك من جانب الخادم، ولا تكشف أبدًا في كود العميل.
- مكوّنات Python مخصّصة — وسّع LangFlow بمنطقك التجاري الخاص دون نسخ المشروع.
- التحكم في إصدار المسارات — صدّر بصيغة JSON وأدرجه في Git بصرف النظر عن حالة قاعدة البيانات.
المتطلبات قبل البدء
LangFlow أكثر استهلاكًا للذاكرة من تطبيق ويب معتاد: يحمّل محرّك التنفيذ النماذج والتضمينات في RAM. خصّص 2 vCPU على الأقل و4 جيجابايت من RAM لاستخدام مريح. إذا وصلت نموذج Ollama محليًا للاستدلال على الخادم VPS نفسه، انتقل إلى 8 جيجابايت كحدٍّ أدنى.
من الناحية البرمجية، تحتاج إلى Docker (الإصدار 24 أو أحدث) وDocker Compose v2 مثبّتَين وتعملان. يجب أن يكون المنفذ 7860 متاحًا محليًا (يستمع LangFlow على هذا المنفذ بشكل افتراضي). لا تكشف هذا المنفذ مباشرةً على الإنترنت: يتولى الوكيل العكسي nginx ذلك.
جهّز نطاقًا فرعيًا يشير إلى عنوان IP لخادم VPS — مثل langflow.your-domain.com — مع سجلات DNS منشورة بالفعل قبل تشغيل certbot. أخيرًا، يُوصى بشدة بقاعدة بيانات PostgreSQL للإنتاج: قاعدة SQLite الافتراضية تتلف تحت الحمل المتزامن ولا تدعم وصول مستخدمين متعددين في آنٍ واحد.
تثبيت LangFlow باستخدام Docker Compose وPostgreSQL
إنشاء دليل العمل
سجّل الدخول إلى خادم VPS عبر SSH، ثم أنشئ المجلد الذي سيستضيف الحزمة:
mkdir -p /opt/langflow && cd /opt/langflowكتابة ملف docker-compose.yml
أنشئ ملف docker-compose.yml بخدمتين — postgres وlangflow — ومتغيّرات بيئة المصادقة:
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: langflow
POSTGRES_PASSWORD: كلمة-مرور-قوية
POSTGRES_DB: langflow
volumes:
- pgdata:/var/lib/postgresql/data
langflow:
image: langflowai/langflow:latest
restart: unless-stopped
ports:
- "127.0.0.1:7860:7860"
environment:
LANGFLOW_DATABASE_URL: postgresql://langflow:كلمة-مرور-قوية@postgres:5432/langflow
LANGFLOW_SECRET_KEY: غيّر-هذه-القيمة-بسلسلة-عشوائية
LANGFLOW_AUTO_LOGIN: "false"
LANGFLOW_SUPERUSER: admin
LANGFLOW_SUPERUSER_PASSWORD: كلمة-مرور-admin-قوية
depends_on:
- postgres
volumes:
pgdata:لاحظ أن المنفذ 7860 مرتبط بـ 127.0.0.1: لا يمكن الوصول إلى LangFlow من الخارج دون المرور بالوكيل.
تشغيل الحزمة
شغّل الحاويتين في الخلفية:
docker compose up -dتابع سجلات LangFlow خلال التهيئة الأولى (إنشاء المخطط في قاعدة البيانات، نحو 30 ثانية إلى دقيقة):
docker compose logs -f langflowانتظر السطر الذي يشير إلى أن الخادم يستمع على المنفذ 7860 قبل المتابعة.
التحقق من استجابة الواجهة
من خادم VPS، اختبر استجابة LangFlow محليًا قبل تهيئة الوكيل:
curl -s http://127.0.0.1:7860/healthالاستجابة المتوقعة هي {"status":"ok"}. إذا حصلت على خطأ رفض الاتصال، تحتوي سجلات البدء على السبب.
تهيئة الوكيل العكسي nginx مع HTTPS
ثبّت nginx وcertbot إن لم يكونا مثبّتَين، ثم أنشئ ملف تهيئة:
server {
listen 80;
server_name langflow.your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name langflow.your-domain.com;
ssl_certificate /etc/letsencrypt/live/langflow.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/langflow.your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:7860;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}رؤوس Upgrade وConnection ضرورية لدعم WebSocket الذي تستخدمه اللوحة التفاعلية. احصل على الشهادة باستخدام certbot:
certbot --nginx -d langflow.your-domain.comتسجيل الدخول وإنشاء أول مسار
افتح https://langflow.your-domain.com في متصفّحك. سجّل الدخول بالبيانات المعرّفة في LANGFLOW_SUPERUSER وLANGFLOW_SUPERUSER_PASSWORD. في الواجهة، انقر على New Flow، واختر قالبًا أو ابدأ من لوحة فارغة. أضف مكوّن LLM ومطالبة ومكوّن إخراج، صِلها، ثم انقر Run لاختبار المسار.
تخزين مفاتيح API في المتغيّرات العامة
بدلًا من إدخال مفاتيح API في كل مكوّن، استخدم المتغيّرات العامة (الأيقونة في أعلى اليمين): تُشفَّر المفتاح في قاعدة البيانات وتكون قابلة لإعادة الاستخدام في جميع مساراتك. من قائمة API الخاصة بمسار، تسترجع كود استدعاء curl أو Python لدمج هذا المسار في تطبيق خارجي.
النسخ الاحتياطي للمسارات وقاعدة البيانات
جدوِل pg_dump يوميًا لقاعدة البيانات من المضيف:
docker exec langflow-postgres-1 pg_dump -U langflow langflow > /opt/backups/langflow-$(date +%F).sqlصدّر أيضًا مساراتك بصيغة JSON من قائمة Export الخاصة بكل مسار: إنه شبكة أمان قابلة للإصدار في Git، مستقلة عن حالة قاعدة البيانات.
التهيئة المتقدمة: متغيّرات البيئة المفيدة
LangFlow يكشف عدة متغيّرات بيئة لتكييف النسخة مع سياقك. LANGFLOW_SECRET_KEY يشفّر البيانات الحساسة المخزّنة في قاعدة البيانات — غيّر القيمة الافتراضية قبل أول تشغيل، لأن الدوران اللاحق يبطل البيانات المشفّرة الموجودة. LANGFLOW_AUTO_LOGIN على false يستلزم دائمًا تسجيل دخول صريحًا، حتى من localhost. LANGFLOW_WORKERS يتحكم في عدد عمليات Uvicorn: القيمة الافتراضية (1) مناسبة للاستخدام المعتدل، ارفعها إلى 2 أو 4 إذا كان عدة مستخدمين ينفّذون مسارات في وقت واحد.
للمسارات التي تستدعي نماذج محلية عبر Ollama، عرّف OLLAMA_BASE_URL في المتغيّرات العامة لـ LangFlow بدلًا من بيئة Docker: تُدار القيمة بعد ذلك عبر الواجهة ويمكن تغييرها دون إعادة تشغيل.
إذا حدّثت LangFlow، فاعمل دائمًا pg_dump قبل docker compose pull && docker compose up -d: تمسّ بعض ترقيات الإصدارات مخطط قاعدة البيانات.
الأمان: لا تكشف LangFlow مباشرةً على الإنترنت
LangFlow لا يملك تحديدًا مدمجًا للطلبات (rate limiting) على نقاط نهاية API الخاصة به. بدون تدابير إضافية، يمكن استدعاء مسار مكشوف علنًا بلا حدود من أي شخص يعرف عنوان URL. نهجان يتكاملان.
أولًا، أبقِ LANGFLOW_AUTO_LOGIN=false بشكل دائم وأنشئ حسابات مستخدمين مستقلة لكل عضو في الفريق. ثانيًا، إذا كان ينبغي استدعاء مساراتك فقط من تطبيقاتك الخاصة (وليس من مستخدمين مباشرين)، أضف كتلة auth_basic في nginx أمام واجهة الإدارة واكشف فقط نقاط النهاية /api/v1/run/<flow-id> مع مصادقة بالرمز المميز لتطبيقاتك.
لا تترك LangFlow أبدًا في الإنتاج مع SQLite: تتلف قاعدة البيانات تحت الوصول المتزامن وتفقد مساراتك دون رسالة خطأ صريحة.
استكشاف الأخطاء الشائعة وإصلاحها
خطأ OOM (نفاد الذاكرة). إذا أعادت حاوية LangFlow التشغيل تلقائيًا، راجع docker compose logs langflow وابحث عن Killed. السبب نقص الذاكرة العشوائية. قلّل LANGFLOW_WORKERS إلى 1، وإذا استمرت المشكلة زد RAM الخادم أو تجنّب تشغيل تدفقات ثقيلة في آنٍ واحد.
رفض الاتصال بـ Ollama. إذا لم يتمكن LangFlow من الوصول إلى Ollama على نفس الخادم، تحقق أن Ollama يستمع على 0.0.0.0 لا على 127.0.0.1 فحسب. في docker-compose.yml أضف extra_hosts: ["host-gateway:host-gateway"] لخدمة LangFlow واستخدم http://host-gateway:11434 في مكونات Ollama.
سجلات التدفق مفقودة. يحتفظ LangFlow بالسجلات في قاعدة البيانات. إذا لم تكن PostgreSQL جاهزة عند البدء، تفشل الطلبات الأولى صامتةً. أضف healthcheck لخدمة postgres في docker-compose.yml لإجبار الانتظار حتى جاهزيتها.
لوحة بيضاء أو WebSocket مقطوع. تحقق من أن رأسَي Upgrade وConnection يُمرَّران عبر nginx. قد يعترض وسيط وسيط مثل Cloudflare في وضع Full Strict اتصالات WebSocket: راجع إعداد بروتوكول WebSocket في الوكيل.
الخطوات التالية: توسيع نسخة LangFlow الخاصة بك
بمجرد تشغيل LangFlow، تتيح عدة تكاملات توسيع نطاق استخدامه.
إذا أردت نموذج LLM محليًا بالكامل (بدون استدعاء API خارجي)، ثبّت Ollama على الخادم VPS نفسه وصِله بـ LangFlow عبر مكوّن Ollama: لن ترسل مساراتك بعد ذلك بيانات خارج بنيتك التحتية. يكشف Ollama واجهة برمجية متوافقة مع OpenAI على المنفذ 11434.
لـ RAG وثائقي، أضف مكوّن Chroma أو Qdrant — قاعدتا بيانات شعاعيتان مفتوحتا المصدر يمكنك نشرهما في حاوية مجاورة. استورد مستنداتك بصيغة PDF في مسار LangFlow، التقطيع والتضمين مدمجان، واستعلم عنها من روبوت محادثة أو واجهة برمجية.
أخيرًا، إذا استخدمت الفرق المتعددة النسخة، فكّر في عزل المسارات حسب مساحة العمل (ميزة متاحة حسب الإصدار) أو في نشر نسخة LangFlow واحدة لكل مشروع باستخدام قالب ServOrbit الذي يهيّئ Docker Compose وPostgreSQL والوكيل العكسي تلقائيًا.