أنفاق Ollama - وثائق Entity Enricher

أنفاق Ollama

اربط Ollama المحلي على حاسوبك المحمول بـ Entity Enricher بأمر واحد. استخدم النماذج التي تمتلكها بالفعل، واحتفظ ببعض المدخلات على جهازك، وألغِ الوصول فورًا — كل ذلك عبر اتصال HTTPS صادر واحد.

            Production (Hetzner)          Your Laptop / your server
        ┌─────────────────────────┐         ┌────────────────────┐
        │  Org enrichment         │         │  ee-tunnel CLI     │
        │     │                   │         │     │              │
        │     ▼                   │         │     ▼              │
        │  Ollama provider URL:   │         │  Ollama :11434     │
        │  http://ollama.<org>    │         │  ┌──────────────┐  │
        │       .tunnel/v1/chat   │         │  │ qwen3:36b    │  │
        │     │                   │         │  │ llama3:70b   │  │
        │     ▼                   │         │  │ ...          │  │
        │  WebSocket bridge       │◀───────▶│  └──────────────┘  │
        └─────────────────────────┘         └────────────────────┘
                                  one outbound :443/wss connection

اسم المضيف الاصطناعي ollama.<org-slug>.tunnel لا يُحلَّل أبدًا عبر DNS. يعترض ناقل مخصّص في عملية Entity Enricher الطلبات المُوجّهة إلى *.tunnel ويُمرّرها عبر اتصال WebSocket النشط المُطابق.

لماذا استخدام نفق؟

استخدم النماذج التي تمتلكها بالفعل

شغّل عمليات الإثراء مقابل النماذج مفتوحة الأوزان التي سبق تنزيلها على حاسوبك المحمول (Llama 3، Qwen، DeepSeek، Mistral، …) دون إعادة تنزيلها على الخادم.

احتفظ ببعض المدخلات على جهازك

بالنسبة إلى الموجّهات الحساسة، وجّه عمليات إثراء محددة عبر وحدة معالجة الرسومات الخاصة بك. لا تزال المنصة تسجّل التكلفة والرموز والبيانات الوصفية — الاستدلال نفسه فقط هو ما يبقى محلياً.

جرّب نموذجًا جديدًا في 30 ثانية

اسحب نموذجًا باستخدام `ollama pull` على حاسوبك المحمول، وانقر على «اكتشاف النماذج»، فيظهر في محدّد Entity Enricher بطول سياق وقدرات حقيقية.

تفريغ الأعمال المتقطعة

عندما يفرض عليك مزوّد مُستضاف حدًّا للمعدّل، انتقل تلقائيًا إلى نموذج محلي عبر النفق لبقية الدفعة.

بدء سريع

أمران على حاسوبك المحمول، ونقرة واحدة في المتصفح. تستغرق العملية بأكملها نحو دقيقة.

  1. 1

    إنشاء نفق في واجهة المستخدم

    افتح مفاتيح API ← أنفاق Ollama وانقر على نفق Ollama جديد. اكتب تسمية لتتعرّف على هذا الجهاز لاحقًا (مثل "MacBook الخاص بأنطوني").

    [عنصر نائب للقطة شاشة — علامة تبويب الأنفاق مع تمييز زر "New Ollama Tunnel"]
  2. 2

    ثبّت واجهة سطر الأوامر على حاسوبك المحمول

    الصق هذا في الطرفية. يتحقق البرنامج النصي من توقيع cosign قبل التثبيت.

    curl -fsSL https://entityenricher.ai/install.sh | sh

    يطبع المُثبِّت ما هو على وشك القيام به (رابط التنزيل، والتوقيع، ومسار التثبيت) ويتوقّف مؤقتًا لمدة 5 ثوانٍ لتتيح لك نافذة للضغط على Ctrl+C. يوجد الكود المصدري في TOT-Concept/ee-tunnel (رخصة MIT). يستخدم مستخدمو Windows ملف install.ps1 بدلاً من ذلك.

  3. 3

    الإقران عبر متصفحك

    شغّل ee-tunnel pair. تُفتح علامة تبويب في المتصفح على /tunnel/connect برمز مكوّن من 6 أحرف. أكّد اسم الجهاز وانقر Connect.

    ee-tunnel pair --server https://entityenricher.ai
    
    Open this URL in your browser to confirm pairing:
       https://entityenricher.ai/tunnel/connect?code=9KV-DU6
    
      Code: 9KV-DU6
    
    Waiting for confirmation...
    [عنصر نائب للقطة شاشة — صفحة تأكيد /tunnel/connect مع رمز الجهاز]

    لا تنسخ رمزًا وتلصقه أبدًا. لا يرى المتصفح سوى بيانات التعريف الخاصة بالنفق؛ وتتلقى واجهة سطر الأوامر بيانات اعتمادها عبر قناة الاستقصاء الخاصة بها.

  4. 4

    اتصل واكتشف النماذج

    شغّل ee-tunnel. تتحوّل شارة الحالة في علامة تبويب الأنفاق إلى Connected خلال ثوانٍ. ثم انقر Discover Models على مزوّد Ollama في Models & Pricing لاستيراد كل نماذج المحادثة المثبَّتة محليًا تلقائيًا.

    [عنصر نائب لفيديو — اكتشاف النماذج يسحب 4 نماذج Ollama محلية إلى المنصة]

كيف يعمل الاقتران

يستخدم الإقران تدفق رمز جهاز بأسلوب OAuth (بصيغة RFC 8628). يكتب المستخدم رمزًا قصيرًا في المتصفح بدلًا من نسخ رمز مميز ولصقه. يرى المتصفح البيانات الوصفية للنفق فقط؛ أما واجهة سطر الأوامر (CLI) فتتلقى رمز التحديث الخاص بها مباشرةً عبر قناة الاستقصاء الخاصة بها — استرداد لمرة واحدة.

 laptop                  entity-enricher                  browser
   │                          │                              │
   │── ee-tunnel pair ──────▶ │                              │
   │   --server URL           │                              │
   │                          │                              │
   │  POST /api/tunnel/       │                              │
   │       device-code        │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { device_code,       │                              │
   │     user_code='9KV-DU6', │                              │
   │     verification_uri }   │                              │
   │                          │                              │
   │  prints URL, opens       │                              │
   │  browser at /tunnel/     │                              │
   │  connect?code=… ──────────────────────────────────────▶│
   │                          │                              │
   │                          │  POST /api/tunnel/confirm/   │
   │                          │       {user_code}            │
   │                          │  body: { label }             │
   │                          │  Authorization: Bearer       │
   │                          │   <user JWT, role=owner>     │
   │                          │ ◀──────────────────────────── │
   │                          │  • create tunnel_credentials │
   │                          │  • mark device_code complete │
   │                          │    with refresh_token        │
   │                          │ ────────────────────────────▶│
   │                          │  200 { tunnel metadata }     │
   │                          │                              │
   │  POST /api/tunnel/poll   │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { status:'ok',       │                              │
   │     refresh_token,       │                              │
   │     server_url,          │                              │
   │     tunnel_id }          │                              │
   │                          │                              │
   │  persist token mode 0600 │                              │
   │  ✓ Paired                │                              │

كيف يتدفق الطلب عبر النفق

بمجرد الاتصال، يصبح Ollama المتصل عبر النفق مجرد مزوّد LLM آخر بالنسبة لبقية المنصة. تعدد مجالات الخبرة، والدمج، والدُفعات — كل شيء يعمل دون تغيير.

  enrichment job
       │
       ▼
  agent_factory  →  Ollama provider, base_url=http://ollama.acme.tunnel
       │
       ▼
  custom httpx transport  ← intercepts *.tunnel hosts
       │
       ▼
  TunnelSession (one per laptop)
       │ frames request: { id, method, path, headers, body_b64 }
       ▼
  WebSocket  ──────────────────────▶  ee-tunnel CLI
                                          │
                                          ▼
                                     localhost:11434
                                     (your local Ollama)
                                          │
                          response_start, response_chunk, ...
       ◀──────────────────────────────────┘
       │
       ▼
  pydantic_ai consumes streaming body  →  enrichment record

الإرسال المتعدد

تتشارك عدة عمليات إثراء جارية نفق WebSocket واحداً. يحصل كل طلب على UUID؛ وتُفصل الإطارات حسب المعرّف على الطرفين بحيث تعمل الاستدعاءات المتزامنة (مثل تعدد مجالات الخبرة) بشكل طبيعي.

تنتقل استجابات البث (stream=true في Ollama) كسلسلة من إطارات response_chunk، بحيث تظل تحديثات الواجهة رمزًا برمز تدريجية حتى عبر النفق.

دورة الحياة

01

إنشاء

ينقر مالك المؤسسة على «نفق Ollama جديد»، ويكتب تسمية، ثم يؤكد. تخصص المنصة بيانات الاعتماد.

02

إقران

على حاسوبك المحمول، شغّل المثبّت المكوّن من سطر واحد ثم `ee-tunnel pair`. ستُفتح علامة تبويب في المتصفح — أكّد باستخدام حساب Entity Enricher نفسه.

03

اتصال

شغّل `ee-tunnel`. تفتح واجهة سطر الأوامر اتصال WebSocket صادرًا واحدًا عبر HTTPS. يظهر المزوّد الجديد في قائمة نماذجك خلال ثوانٍ.

04

استخدام

انقر على "اكتشاف النماذج" — يُستورَد كل نموذج في Ollama المحلي لديك تلقائيًا مع طول السياق الفعلي والقدرات. أثرِ البيانات كالمعتاد.

05

إبطال

نقرة واحدة في الواجهة تُنهي اتصال WebSocket وتُبطل بيانات الاعتماد فورًا.

الأمان

صُمِّم النفق لإضافة أقل قدر ممكن من سطح الهجوم. استخدمت المسودة السابقة للميزة خادم SSH عامًا على منفذ جديد؛ استبدلناه بمُضاعِف WebSocket داخل العملية لإزالة سطح هجوم SSH بالكامل.

لا توجد منافذ عامة جديدة

يمرّ كل شيء عبر مدخل :443 القائم — نقطة نهاية TLS نفسها الخاصة بتطبيق الويب. لا خادم SSH، ولا منفذ Ollama مكشوف.

صادر فقط

يبدأ CLI اتصال WebSocket. لا يقبل حاسوبك المحمول أبدًا اتصالات واردة — لا حاجة لتغيير جدار الحماية لشبكتك المنزلية.

على نطاق المؤسسة

يرتبط النفق بمؤسسة واحدة. لا يمكن للمستأجرين الآخرين على المنصة رؤيته أو اختياره أو استدعاؤه. ويتمتع مسؤولو النظام برؤية عبر المؤسسات بحكم التصميم.

قابلة للإبطال فورًا

يؤدي الإبطال إلى إزالة بيانات الاعتماد من قاعدة البيانات. سيفشل الطلب التالي بالخطأ 401. ويُطرد اتصال WebSocket النشط خلال ثانية واحدة تقريبًا.

بدون أسرار منسوخة ولصقها

يتولى تدفق OAuth عبر المتصفح إدارة بيانات الاعتماد من البداية إلى النهاية. لا يرى المتصفح أبدًا رمز التحديث الخاص بك؛ إذ يستقبله CLI مباشرة عبر قناة الاستطلاع الخاصة به.

الحصة وحدود الإطارات

5 أنفاق نشطة لكل منظمة افتراضيًا؛ حد أقصى لإطار WebSocket الوارد يبلغ 16 ميجابايت؛ أخطاء 402 منظّمة عند تجاوز الحصة.

حماية من SSRF. تسدّ خاصية النفق (tunnel) أيضًا ثغرة قائمة مسبقًا: يُتحقَّق الآن من حقل specific_endpoint في مزوّدي Ollama مقابل تعبير نمطي لقائمة السماح، بحيث لا يمكن أبدًا استخدام عناوين IP الخاصة أو الاسترجاع الذاتي (loopback) أو أسماء خدمات Docker compose كعنوان URL لمزوّد.

مرجع واجهة سطر الأوامر

الأمرماذا يفعل
ee-tunnel pair --server URLإقران المتصفح عبر OAuth. يفتح رابط التحقق تلقائيًا.
ee-tunnel pair --server URL <token>إقران يدوي باستخدام رمز تحديث منسوخ من واجهة المستخدم (بديل للبيئات بلا واجهة).
ee-tunnelاتصل وقدّم الخدمة. يعيد الاتصال بتراجع أُسّي (1 ثانية ← 30 ثانية) عند الانقطاعات العابرة.
ee-tunnel statusإظهار حالة الاقتران وعنوان URL للخادم وعنوان Ollama المُهيَّأ والتسمية.
ee-tunnel disconnectنسيان بيانات الاعتماد المحلية. لا يُلغيها من جانب الخادم؛ استخدم الواجهة لذلك.
ee-tunnel versionنسخة للطباعة.

عنوان Ollama مخصّص

إذا كان Ollama لديك يستمع على منفذ مختلف، فاضبط EE_TUNNEL_OLLAMA_URL أو مرّر --ollama URL عند الاقتران.

أين تُخزَّن الملفات

macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\

الحدود والتوقيت

الأنفاق النشطة لكل مؤسسة5 (افتراضي)
مدة بقاء رمز التحديث365 يومًا
مدة صلاحية رمز الوصول15 دقيقة
مدة صلاحية الإقران (TTL)10 دقائق
الحد الأقصى لإطار WebSocket الوارد16 ميغابايت
حجم الحزمة الصادرة (CLI)16 كيلوبايت
فترة نبضة القلب30 ثانية

الأسئلة الشائعة

هل Ollama الخاص بي معرَّض للإنترنت؟

لا. تبدأ واجهة سطر الأوامر اتصال WebSocket صادرًا. لا يقبل حاسوبك المحمول أبدًا اتصالات واردة، ويظل منفذ Ollama مرتبطًا بـ localhost.

ماذا يحدث عندما يدخل حاسوبي المحمول في وضع السكون؟

يخرج CLI بسلاسة عند قطع الاتصال. يؤدي استئناف الحاسوب المحمول وإعادة تشغيل ee-tunnel إلى إعادة الاتصال باستخدام بيانات الاعتماد الحالية. تفشل عمليات الإثراء الجارية أثناء تعطل النفق مع ظهور خطأ ConnectError واضح.

هل يمكن للمؤسسات الأخرى استخدام النفق الخاص بي؟

لا. يرتبط كل نفق بمؤسسة واحدة. لا يمكن للمستأجرين الآخرين على المنصة رؤيته أو تحديده أو استدعاءه. يمكن لمشرفي النظام رؤية جميع الأنفاق حسب التصميم (مثل مفاتيح API العامة).

هل يعمل هذا خلف جدار حماية مؤسسي؟

في الغالب دائمًا — يلزم فقط المنفذ الصادر :443. نفس المسار الذي يستخدمه تطبيق الويب.

كيف أُدوّر بيانات الاعتماد؟

انقر على "تدوير الرمز" في علامة تبويب الأنفاق. يُبطَل الرمز القديم فورًا؛ تعرض النافذة أمر إقران جديدًا لجهازك المحمول.

هل يمكنني استخدام هذا بدون Ollama؟

نعم — تعيد واجهة سطر الأوامر (CLI) توجيه أي طلبات HTTP. عيّن EE_TUNNEL_OLLAMA_URL إلى أي نقطة نهاية محلية متوافقة مع OpenAI. سيعمل أي شيء يتحدث بلغة ‎/v1/chat/completions‎ أو ‎/api/tags‎ الخاصة بـ Ollama.

مفتوح المصدر

يخضع CLI والمُثبِّت لرخصة MIT ويوجدان في مستودع عام حتى يتمكن أي شخص من تدقيق ما يعمل على جهازه.

المصدر: github.com/TOT-Concept/ee-tunnel

الإصدارات: github.com/TOT-Concept/ee-tunnel/releases — يُوقَّع كل ملف ثنائي باستخدام cosign قبل النشر.

دقّق في المُثبِّت: curl -fsSL https://entityenricher.ai/install.sh | less