دليل النشر

استضافة LangFlow على خادم VPS: دليل Docker وHTTPS الشامل

انشر على VPS Cloud ←

دليل عملي

استضافة LangFlow على خادم VPS: دليل Docker وHTTPS الشامل

الذكاء الاصطناعي13 دقيقةً للقراءةعدد الخطوات: 8

‏LangFlow محرّر بصري لمسارات الذكاء الاصطناعي — ‏RAG وروبوتات المحادثة ووكلاء LangChain — يعمل في متصفّحك ويكشف كل مسار كواجهة ‏REST برمجية. باستضافته على خادم ‏VPS الخاص بك، يصبح ورشة عمل خاصة ومشتركة: تبقى مساراتك ومفاتيح ‏API وسجل التنفيذ تحت سيطرتك، دون المرور بخدمة ‏SaaS خارجية. يغطّي هذا الدليل التثبيت الكامل باستخدام ‏Docker Compose وPostgreSQL ووكيل عكسي ‏nginx وHTTPS — ثم يتجاوز ذلك: استدعاء مسار من ‏Python أو ‏curl، وأنبوب ‏RAG على المستندات، والمكوّنات المخصّصة، والتحديث دون فقدان البيانات.

المحتويات· لماذا تستضيف LangFlow على خادم VPS1/12
  1. 01لماذا تستضيف LangFlow على خادم VPS
  2. 02ما الذي تكسبه بنسخة مُستضافة ذاتيًا
  3. 03المتطلبات قبل البدء
  4. 04تثبيت LangFlow باستخدام Docker Compose وPostgreSQL
  5. 05استدعاء مسار من تطبيق: واجهة REST البرمجية
  6. 06أنبوب RAG: فهرسة مستنداتك والاستعلام عنها
  7. 07المكوّنات المخصّصة: توسيع LangFlow بـ Python
  8. 08تحديث LangFlow دون فقدان البيانات
  9. 09التهيئة المتقدمة: متغيّرات البيئة المفيدة
  10. 10الأمان: لا تكشف LangFlow مباشرةً على الإنترنت
  11. 11استكشاف الأخطاء الموسّع: الأخطاء الشائعة
  12. 12الخطوات التالية: توسيع نسخة LangFlow الخاصة بك

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

‏LangFlow يتصدى لحالة استخدام محددة: تصميم مسارات الذكاء الاصطناعي بالسحب والإفلات لمكوّنات — نماذج ‏LLM والمسترجعات والمطالبات والذاكرة والوكلاء — ثم اختبارها دون كتابة سطر كود واحد. إنه البديل البصري لـ ‏LangChain في وضع الكود فقط، مناسب للفرق التي تريد التكرار السريع قبل تثبيت المنطق في ‏Python.

على خادم ‏VPS، تحصل على نسخة مستقرة ودائمة يمكن للفريق الوصول إليها، بخلاف الإعداد المحلي الذي يختفي عند إعادة التشغيل. كثيرًا ما تُشفّر مساراتك منطقًا تجاريًا حساسًا — سلاسل المطالبات ومفاتيح ‏API والموصّلات إلى قواعد بياناتك. لا ينبغي أن تمرّ هذه البيانات عبر خدمة ‏SaaS لا تتحكم في سياسة الاحتفاظ بها.

‏LangFlow يعتمد على ‏FastAPI من جانب الخادم ويكشف كل مسار كنقطة نهاية ‏REST: يمكن لتطبيقاتك استدعاء مسارات الذكاء الاصطناعي مباشرةً، دون كود وسيط. هذا الجمع بين الواجهة البصرية للتصميم والـ ‏API للتكامل هو ما يجعله أداة نمذجة أوّلية جدية.

ما الذي تكسبه بنسخة مُستضافة ذاتيًا

  • واجهة بصرية للمسارات — اسحب مكوّنات ‏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 متاحًا محليًا. جهّز نطاقًا فرعيًا يشير إلى عنوان ‏IP لخادم ‏VPS — مثل ‏langflow.your-domain.com — مع سجلات ‏DNS منشورة قبل تشغيل ‏certbot. يُوصى بشدة بقاعدة بيانات ‏PostgreSQL للإنتاج.

تثبيت LangFlow باستخدام Docker Compose وPostgreSQL

  1. إنشاء دليل العمل

    سجّل الدخول إلى خادم ‏VPS عبر ‏SSH، ثم أنشئ المجلد الذي سيستضيف الحزمة:

    mkdir -p /opt/langflow && cd /opt/langflow
  2. كتابة ملف docker-compose.yml

    أنشئ ملف docker-compose.yml بخدمتين — postgres وlangflow — مع ‏healthcheck لضمان جاهزية قاعدة البيانات:

    services:
      postgres:
        image: postgres:16
        restart: unless-stopped
        environment:
          POSTGRES_USER: langflow
          POSTGRES_PASSWORD: كلمة-مرور-قوية
          POSTGRES_DB: langflow
        volumes:
          - pgdata:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U langflow"]
          interval: 10s
          retries: 5
    
      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:
            condition: service_healthy
    
    volumes:
      pgdata:
  3. تشغيل الحزمة

    شغّل الحاويتين في الخلفية:

    docker compose up -d

    تابع سجلات ‏LangFlow خلال التهيئة الأولى:

    docker compose logs -f langflow

    انتظر السطر الذي يشير إلى أن الخادم يستمع على المنفذ 7860 قبل المتابعة.

  4. التحقق من استجابة الواجهة

    من خادم ‏VPS، اختبر استجابة ‏LangFlow محليًا قبل تهيئة الوكيل:

    curl -s http://127.0.0.1:7860/health

    الاستجابة المتوقعة هي {"status":"ok"}. إذا حصلت على خطأ رفض الاتصال، تحتوي سجلات البدء على السبب.

  5. تهيئة الوكيل العكسي 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;
        }
    }

    احصل على الشهادة باستخدام ‏certbot:

    certbot --nginx -d langflow.your-domain.com
  6. تسجيل الدخول وإنشاء أول مسار

    ‏افتح https://langflow.your-domain.com في متصفّحك. سجّل الدخول بالبيانات المعرّفة في LANGFLOW_SUPERUSER وLANGFLOW_SUPERUSER_PASSWORD. انقر على New Flow، واختر قالبًا أو ابدأ من لوحة فارغة.

  7. تخزين مفاتيح API في المتغيّرات العامة

    استخدم المتغيّرات العامة (الأيقونة في أعلى اليمين) لتشفير مفاتيح ‏API وإعادة استخدامها في جميع مساراتك. من قائمة API الخاصة بمسار، تسترجع كود استدعاء curl أو ‏Python لدمج هذا المسار في تطبيق خارجي.

  8. النسخ الاحتياطي للمسارات وقاعدة البيانات

    جدوِل pg_dump يوميًا لقاعدة البيانات من المضيف:

    docker exec langflow-postgres-1 pg_dump -U langflow langflow > /opt/backups/langflow-$(date +%F).sql

استدعاء مسار من تطبيق: واجهة REST البرمجية

كل مسار ‏LangFlow متاح عبر نقطة النهاية /api/v1/run/<flow-id>. تجد معرّف المسار في ‏URL المحرر أو في قائمة API الخاصة بالمسار. مثالان عمليان.

‏باستخدام curl:

curl -s -X POST \
  https://langflow.your-domain.com/api/v1/run/YOUR-FLOW-ID \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR-API-KEY" \
  -d '{
    "input_value": "ما عاصمة فرنسا؟",
    "input_type": "chat",
    "output_type": "chat"
  }'

‏باستخدام Python (مكتبة requests):

import requests

FLOW_ID = "YOUR-FLOW-ID"
BASE_URL = "https://langflow.your-domain.com"
API_KEY = "YOUR-API-KEY"

response = requests.post(
    f"{BASE_URL}/api/v1/run/{FLOW_ID}",
    headers={
        "Content-Type": "application/json",
        "x-api-key": API_KEY,
    },
    json={
        "input_value": "ما عاصمة فرنسا؟",
        "input_type": "chat",
        "output_type": "chat",
    },
    timeout=60,
)

result = response.json()
print(result["outputs"][0]["outputs"][0]["results"]["message"]["text"])

تُولَّد مفتاح ‏API من Settings → API Keys في واجهة ‏LangFlow.

أنبوب RAG: فهرسة مستنداتك والاستعلام عنها

‏RAG (التوليد المُعزَّز بالاسترجاع) هو حالة الاستخدام الأساسية في ‏LangFlow: تحمّل مستندات (‏PDF، نص، ‏Markdown)، تقطّعها إلى أجزاء، تضمّنها في قاعدة بيانات شعاعية، ثم يُجيب ‏LLM على الأسئلة مستندًا إلى هذا السياق.

أي ‏VectorStore على خادم ‏VPS؟ على خادم بموارد محدودة، ‏Chroma هو الخيار الأخف: يعمل في نفس حاوية ‏LangFlow دون خدمة إضافية ويُثبّت بياناته في دليل محلي. ‏Qdrant مناسب إذا كانت لديك ذاكرة ‏RAM أكبر وتريد خدمة مخصّصة في حاوية مجاورة.

بناء أنبوب الفهرسة في ‏LangFlow:

1. ‏File (أو Directory) → يحمّل ‏PDF أو مجلد المستندات.
2. ‏Split Text → يقطّع إلى أجزاء (حجم موصى به: 500 إلى 800 رمز، تداخل 50).
3. ‏OpenAI Embeddings (أو Ollama Embeddings للبقاء محليًا بالكامل) → يحوّل كل جزء إلى متّجه.
4. ‏Chroma DB → يخزّن المتّجهات. اضبط حقل Persist Directory على مجلد مثبّت في ‏Docker.

أضف في docker-compose.yml:

  langflow:
    volumes:
      - chromadb:/data/chroma

volumes:
  pgdata:
  chromadb:

ثم عرّف المتغيّر العام CHROMA_PERSIST_DIR بالقيمة /data/chroma في ‏LangFlow.

المكوّنات المخصّصة: توسيع LangFlow بـ Python

‏يتيح ‏LangFlow إنشاء مكوّنات ‏Python مخصّصة دون نسخ المشروع. المكوّن هو فئة ترث من Component وتُعلن مدخلاتها ومخرجاتها ومنطقها.

مثال بسيط — مكوّن يحوّل النص إلى حروف كبيرة:

from langflow.custom import Component
from langflow.io import MessageTextInput, Output
from langflow.schema import Data

class UpperCaseComponent(Component):
    display_name = "Uppercase Text"
    description = "تحويل النص إلى حروف كبيرة."

    inputs = [
        MessageTextInput(
            name="input_text",
            display_name="نص الإدخال",
        )
    ]

    outputs = [
        Output(
            display_name="النص المعالَج",
            name="output_text",
            method="process_text",
        )
    ]

    def process_text(self) -> Data:
        result = self.input_text.strip().upper()
        return Data(text=result)

لإضافة هذا المكوّن: في واجهة ‏LangFlow، انتقل إلى Settings → Custom Components، الصق الكود واحفظ. يظهر المكوّن فورًا في الشريط الجانبي جاهزًا للسحب إلى أي مسار.

تحديث LangFlow دون فقدان البيانات

‏يُصدر ‏LangFlow تحديثات منتظمة (فرع ‏1.x هو فرع الاستقرار النشط في أكتوبر 2026). قبل أي تحديث، احتِط بنسخة احتياطية لقاعدة البيانات:

docker exec langflow-postgres-1 pg_dump -U langflow langflow \
  > /opt/backups/langflow-before-update-$(date +%F).sql

ثم حدّث الصورة وأعد تشغيل الحزمة:

cd /opt/langflow
docker compose pull
docker compose up -d

تابع السجلات للكشف عن أي ترحيلات تلقائية للمخطط:

docker compose logs -f langflow

لتثبيت إصدار محدد (موصى به في الإنتاج)، استبدل latest بالوسم المطلوب:

image: langflowai/langflow:1.12.4

التهيئة المتقدمة: متغيّرات البيئة المفيدة

‏LangFlow يكشف عدة متغيّرات بيئة لتكييف النسخة مع سياقك. LANGFLOW_SECRET_KEY يشفّر البيانات الحساسة — غيّر القيمة الافتراضية قبل أول تشغيل. LANGFLOW_AUTO_LOGIN على false يستلزم دائمًا تسجيل دخول صريحًا. LANGFLOW_WORKERS يتحكم في عدد عمليات ‏Uvicorn.

للمسارات التي تستدعي نماذج محلية عبر ‏Ollama، عرّف OLLAMA_BASE_URL في المتغيّرات العامة لـ ‏LangFlow بدلًا من بيئة ‏Docker.

إذا حدّثت ‏LangFlow، فاعمل دائمًا pg_dump قبل docker compose pull && docker compose up -d.

الأمان: لا تكشف LangFlow مباشرةً على الإنترنت

‏LangFlow لا يملك تحديدًا مدمجًا للطلبات على نقاط نهاية ‏API. أبقِ LANGFLOW_AUTO_LOGIN=false بشكل دائم وأنشئ حسابات مستخدمين مستقلة لكل عضو. إذا كان ينبغي استدعاء مساراتك فقط من تطبيقاتك الخاصة، أضف كتلة auth_basic في ‏nginx أمام واجهة الإدارة.

لا تترك ‏LangFlow أبدًا في الإنتاج مع ‏SQLite: تتلف قاعدة البيانات تحت الوصول المتزامن.

استكشاف الأخطاء الموسّع: الأخطاء الشائعة

خطأ ‏OOM (نفاد الذاكرة). إذا أعادت حاوية ‏LangFlow التشغيل تلقائيًا، ابحث عن Killed في السجلات. قلّل LANGFLOW_WORKERS إلى 1.

‏RuntimeError: CUDA out of memory. يحدث عندما يحاول مكوّن استخدام ‏GPU غير متاح. أجبر التنفيذ على ‏CPU بإضافة المتغيّر البيئي CUDA_VISIBLE_DEVICES="" لخدمة ‏langflow في docker-compose.yml.

‏المنفذ 7860 مشغول. إذا فشل docker compose up -d بسبب address already in use، شغّل ss -tlnp | grep 7860 لتحديد العملية المشغِلة وأوقفها، أو غيّر المنفذ في docker-compose.yml.

‏ImportError: No module named 'torch'. بعض المكوّنات المتقدمة تتطلب مكتبات غير مضمّنة في الصورة الأساسية. أنشئ Dockerfile مشتقًا يثبّت التبعيات المفقودة.

رفض الاتصال بـ ‏Ollama. تحقق أن ‏Ollama يستمع على 0.0.0.0. في docker-compose.yml أضف extra_hosts: ["host-gateway:host-gateway"] لخدمة ‏LangFlow.

لوحة بيضاء أو ‏WebSocket مقطوع. تحقق من أن رأسَي Upgrade وConnection يُمرَّران عبر ‏nginx.

الخطوات التالية: توسيع نسخة LangFlow الخاصة بك

بمجرد تشغيل ‏LangFlow، تتيح عدة تكاملات توسيع نطاق استخدامه.

إذا أردت نموذج ‏LLM محليًا بالكامل، ثبّت ‏Ollama على الخادم ‏VPS نفسه وصِله بـ ‏LangFlow عبر مكوّن Ollama. لـ ‏RAG وثائقي أكثر قوة، انتقل من ‏Chroma إلى Qdrant.

إذا استخدمت الفرق المتعددة النسخة، فكّر في عزل المسارات حسب مساحة العمل أو في نشر نسخة ‏LangFlow واحدة لكل مشروع باستخدام قالب ‏ServOrbit.

استضف LangFlow على خادم VPS خاص

انشر نسختك الخاصة من LangFlow في دقائق على خادم ServOrbit VPS — خصوصية تامة، بلا قيود على واجهة API، وصول HTTPS آمن مع شهادة TLS مدمجة.

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

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

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة