دليل النشر

استضافة SearXNG على VPS: بحث خاص للمطورين ووكلاء الذكاء

انشر على VPS Cloud ←

دليل عملي

الاستضافة الذاتية

استضافة SearXNG على VPS: بحث خاص للمطورين ووكلاء الذكاء

كل بحث تُرسله لـ‎Google يترك أثرًا. كل استدعاء ‎API لخدمة بحث تجارية يضيف لفاتورتك. ‎SearXNG يحل المشكلتين في آنٍ: محرك بحث شامل مستضاف ذاتيًا يستعلم من 280+ محرك ويُعيد النتائج المجمَّعة — على ‎VPS خاصّتك، تحت سيطرتك، بتكلفة صفر لكل استعلام.

10 دقائق للقراءةعدد الخطوات: 8
المحتويات· المشكلة: لماذا APIs البحث التجارية ليست الحل1/11
  1. 01المشكلة: لماذا APIs البحث التجارية ليست الحل
  2. 02ما يوفره SearXNG خارج الصندوق
  3. 03المعمارية: حاويتان، أقل من 512 MB ذاكرة
  4. 04استضافة SearXNG ذاتيًا على VPS: خطوة بخطوة
  5. 05الإعداد المتقدم لـ SearXNG
  6. 06استخدام SearXNG مصدراً للبحث في وكلاء الذكاء الاصطناعي
  7. 07تأمين مثيلك وتحسين أدائه
  8. 08SearXNG مقابل البدائل: أي محرك بحث مستضاف ذاتيًا تختار؟
  9. 09قيّد الوصول على المثيلات العامة
  10. 10استكشاف الأخطاء: 4 أخطاء شائعة
  11. 11SearXNG كعمود فقري للبحث في مجموعة الذكاء الاصطناعي

المشكلة: لماذا APIs البحث التجارية ليست الحل

هل تبني عميل ذكاء اصطناعي يحتاج للبحث على الويب؟ خياراتك: ادفع $5 لكل ألف استعلام لـ‎Google، أو اصطدم بحدود معدل ‎Bing API، أو استخدم ‎API غير الرسمي لـ‎DuckDuckGo الذي ينكسر دون إشعار. لا شيء من هذا يمنحك التحكم الكامل، وجميعها ترسل استعلاماتك — واستعلامات مستخدميك — لخوادم طرف ثالث.

لفرق التطوير في المغرب ومنطقة الشرق الأوسط وشمال أفريقيا، هناك إضافة: الحجب الإقليمي، والرقابة، وكون نتائج المحركات الأمريكية غالبًا غير ذات صلة بالبحث المحلي. محرك البحث الشامل المستضاف ذاتيًا يتجاوز كل هذا.

ما يوفره SearXNG خارج الصندوق

  • 280+ محرك في آنٍ واحد — ‎Google وBing وDuckDuckGo وBrave وWikipedia وReddit وGitHub وarXiv وYouTube وTwitter/X وغيرها المئات.
  • لا تتبع — لا ملفات ارتباط، لا تنميط للمستخدم، لا سجل بحث محفوظ. خصوصية معمارية: المحرك يُرسِل الاستعلامات للمحركات الأصلية، لا أنت.
  • JSON API — أضف ?format=json لأي استعلام واحصل على نتائج قابلة للقراءة آليًا. مدعوم أصلًا في ‎Open WebUI وn8n وFlowise وLangChain وCrewAI.
  • تخزين مؤقت ‎Redis — ذاكرة مشتركة للنتائج تقلل الحِمل؛ الحد من المعدل يمنع الإساءة على المثيلات العامة.
  • AGPL-3.0 — 33 ألف نجمة+ على ‎GitHub، إصدارات متجددة، صورة ‎Docker تُحدَّث أسبوعيًا.

المعمارية: حاويتان، أقل من 512 MB ذاكرة

يعمل ‎SearXNG كحاويتَي ‎Docker: محرك ‎Python نفسه (أقل من 256 ‎MB ذاكرة) ومثيل ‎Redis (~30 ‎MB) للتخزين المؤقت والحد من المعدل. لا قاعدة بيانات، لا حالة دائمة خارج ذاكرة ‎Redis المؤقتة. مع 1 GB من الذاكرة، يترك ‎SearXNG مساحة وفيرة لـ‎Nginx ونظام التشغيل — ‎VPS بـ 2 ‎GB مريح للفرق مع مستخدمين متزامنين أو حركة كثيفة من عملاء الذكاء الاصطناعي.

استضافة SearXNG ذاتيًا على VPS: خطوة بخطوة

  1. اطلب VPS

    اختر ‎VPS ServOrbit Cloud بذاكرة لا تقل عن 1 ‎GB (Ubuntu 22.04). يتولى المُجهِّز تثبيت ‎Docker وDocker Compose تلقائيًا.

  2. أنشئ ملف docker-compose.yml

    أنشئ مجلد /opt/searxng وضع فيه ملف docker-compose.yml كما يلي:

    services:
      redis:
        image: redis:7-alpine
        restart: unless-stopped
        command: redis-server --save "" --appendonly no
        volumes:
          - redis-data:/data
      searxng:
        image: searxng/searxng:latest
        restart: unless-stopped
        ports:
          - "127.0.0.1:8080:8080"
        volumes:
          - ./settings:/etc/searxng:rw
        environment:
          - SEARXNG_BASE_URL=https://search.yourdomain.com/
          - SEARXNG_SECRET_KEY=CHANGE_THIS_32_CHAR_SECRET_MIN
        depends_on:
          - redis
    volumes:
      redis-data:

    أنشئ مفتاحًا سريًا بأمر openssl rand -hex 32 واستبدل CHANGE_THIS_32_CHAR_SECRET_MIN.

  3. اضبط settings.yml

    أنشئ مجلد ./settings واستخرج ملف الإعداد الافتراضي:

    mkdir -p /opt/searxng/settings
    docker run --rm searxng/searxng:latest cat /etc/searxng/settings.yml \
      > /opt/searxng/settings/settings.yml

    افتح settings.yml وعدّل المفاتيح الأساسية:

    search:
      formats:
        - html
        - json
    server:
      limiter: true
    redis:
      url: redis://redis:6379/0
  4. اضبط Nginx كـ Reverse Proxy مع TLS

    ثبّت ‎Nginx وCertbot، ثم أنشئ /etc/nginx/sites-available/searxng بكتلتَي ‎server: الأولى تعيد توجيه ‎HTTP إلى HTTPS، والثانية تستمع على المنفذ 443 مع شهادة ‎Let's Encrypt وتوجّه الطلبات إلى http://127.0.0.1:8080 مع تعيين ترويسات Host وX-Real-IP وX-Forwarded-For وX-Forwarded-Proto.

    فعّل الموقع واحصل على الشهادة: certbot --nginx -d search.yourdomain.com.

  5. شغّل الحاويات

    من /opt/searxng نفّذ docker compose up -d. تحقق من أن كلا الحاويتين في حالة Up بالأمر docker compose ps.

  6. فعّل JSON API واختبرها

    تأكد من وجود json في قائمة formats في settings.yml. اختبر من الخادم:

    curl -s 'https://search.yourdomain.com/search?q=SearXNG&format=json' \
      | jq '.results[0] | {title, url, content}'

    إذا ظهر خطأ 403، تحقق من formats وأعد تشغيل الحاوية.

  7. فعّل محدّد المعدل لمكافحة البوتات

    محدّد المعدل المدمج (مبني على ‎Redis) يحجب العملاء كثيري الطلبات. فعّله عبر limiter: true في settings.yml. لتعزيز الحماية على مستوى ‎Nginx، أضف:

    limit_req_zone $binary_remote_addr zone=searxng:10m rate=10r/m;

    وهذا يقيّد كل ‎IP بـ 10 طلبات في الدقيقة.

  8. اربط Open WebUI أو n8n

    في Open WebUI: الإعدادات ← البحث على الويب ← المزوّد: ‎SearXNG ← العنوان: https://search.yourdomain.com. وفي n8n: عقدة ‎HTTP Request ← طلب ‎GET مع المعامل q. تحصل وكلاؤك الذكية عندئذ على بحث ويب خاص ومحدّث وبلا ترشيح.

الإعداد المتقدم لـ SearXNG

يوفّر ملف settings.yml خيارات تُحوّل ‎SearXNG إلى أداة مُصمَّمة لاحتياجاتك.

تفعيل أو تعطيل المحركات: تحت مفتاح engines: يحمل كل محرك حقل disabled: true لإيقافه. عطّل المحركات البطيئة أو المحجوبة إقليميًا.

تنسيق الاستجابة JSON لعملاء الذكاء الاصطناعي: تحتوي النتائج على results[].title وresults[].url وresults[].content وresults[].engine. مرّر &categories=general,news للتصفية حسب الفئة، أو &language=ar لاستهداف العربية.

SafeSearch: يقبل مفتاح safe_search القيم 0 (معطّل) أو 1 (متوسط) أو 2 (صارم).

اللغات والمناطق: أضف &language=ar-MA للحصول على نتائج بالعربية المغربية.

استخدام SearXNG مصدراً للبحث في وكلاء الذكاء الاصطناعي

نقطة النهاية /search?q=...&format=json هي المدخل الشامل لجميع أطر عمل الوكلاء الذكية.

n8n: أنشئ عقدة *HTTP Request* بطريقة ‎GET، العنوان https://search.yourdomain.com/search، مع المعاملات q وformat=json. يمكن لعقدة ‎Code التالية استخراج $json.results.slice(0,5).map(r => r.url + ' — ' + r.content) لتغذية نموذجك اللغوي.

LangChain (Python): تتضمن حزمة مجتمع ‎LangChain أداة SearxSearchWrapper:

from langchain_community.utilities import SearxSearchWrapper

search = SearxSearchWrapper(
    searx_host="https://search.yourdomain.com",
    k=5
)
results = search.results("أخبار الذكاء الاصطناعي", num_results=5)

Open WebUI: بعد ضبط العنوان في الإعدادات، يمكن لكل محادثة تفعيل البحث على الويب بنقرة واحدة. ‎Open WebUI يستعلم ‎SearXNG ويحقن المقتطفات في سياق النموذج تلقائيًا.

تأمين مثيلك وتحسين أدائه

مثيل ‎SearXNG المفتوح على الإنترنت يجذب الزواحف والمُخترقين سريعًا. إليك الروافع الأربعة للتفعيل.

محدّد معدل ‎Redis: مع limiter: true في settings.yml، يحصي ‎Redis الطلبات بحسب عنوان ‎IP على نافذة زمنية منزلقة.

مصادقة HTTP Basic: للمثيلات المخصصة لفريقك أو وكلائك الذكية، أضف في كتلة location / في ‎Nginx:

auth_basic "SearXNG خاص";
auth_basic_user_file /etc/nginx/.htpasswd;

أنشئ الملف بأمر htpasswd -c /etc/nginx/.htpasswd user. تُمرَّر بيانات الاعتماد في العنوان: https://user:[email protected]/search?....

ذاكرة ‎Redis المؤقتة وTTL: ‎Redis مُعدّ بلا استمرارية (--save "") لتجنب التراكم على القرص. لضبط ‎TTL، عدّل مفتاح cache: في settings.yml.

تدوير User-Agent: يُدوّر ‎SearXNG ‎User-Agents تلقائيًا لتجنب الحجب من المحركات الأصلية.

SearXNG مقابل البدائل: أي محرك بحث مستضاف ذاتيًا تختار؟

مرّر الجدول أفقيًا

المعيارSearXNGSearx (الأصلي)WhoogleBrave Search API
المصادر المُجمَّعة280+ محرك100+ محركGoogle فقطBrave فقط
JSON API أصلينعم (`?format=json`)نعملانعم (مفتاح مطلوب)
الحد الأدنى من RAM~300 MB (مع Redis)~200 MB~128 MBصفر (SaaS)
صيانة فعّالةنعم (2026)متروك (مؤرشف)نعم (2026)نعم (SaaS)
تكلفة لكل استعلامصفرصفرصفر$3 / 1,000 استعلام

قيّد الوصول على المثيلات العامة

إذا كان مثيل ‎SearXNG متاحًا للعموم، أضف ‎HTTP Basic Auth في ‎Nginx أو اضبط limiter: true في settings.yml (‎Redis مطلوب للحد من المعدل). لاستخدام ‎API فقط، يمكن تعطيل واجهة ‎HTML كليًا.

استكشاف الأخطاء: 4 أخطاء شائعة

1. 429 Too Many Requests — حجب من محرك أصلي: اكتشف ‎Google أو ‎Bing حجمًا غير اعتيادي وحجب مؤقتًا عنوان ‎IP خادمك الافتراضي. الإصلاح الفوري: عطّل المحرك المعني في settings.yml وانتظر 2-6 ساعات.

2. Error: Connection refused to Redis (127.0.0.1:6379): حاوية ‎SearXNG تحاول الوصول لـ‎Redis عبر 127.0.0.1 بدلاً من اسم الخدمة redis. الإصلاح: تأكد أن settings.yml يحتوي url: redis://redis:6379/0.

3. 403 Forbidden على /search?format=json: JSON API معطّل. الإصلاح: تحقق من وجود json في قائمة formats وأعد تشغيل الحاوية.

4. مثيل بطيء (أكثر من 5 ثوانٍ للاستعلام): محركات كثيرة مُفعَّلة في آنٍ أو محركات محجوبة إقليميًا تصل للمهلة. التشخيص: راجع السجلات بأمر docker compose logs searxng | grep timeout. الإصلاح: قلّص المحركات النشطة إلى 5-8 المحركات الأكثر صلة باستخدامك.

SearXNG كعمود فقري للبحث في مجموعة الذكاء الاصطناعي

أصبح ‎SearXNG الواجهة الخلفية الفعلية للبحث في مجموعات الذكاء الاصطناعي المستضافة ذاتيًا في 2026. ‎Open WebUI وn8n وFlowise وLangChain وCrewAI ومعظم أطر عمل تنسيق ‎LLM تدعم ‎SearXNG أصلًا. النمط دائمًا واحد: يقرر ‎LLM أنه يحتاج معلومات حالية، يستدعي نقطة نهاية ‎SearXNG باستعلام، يحصل على مصفوفة ‎JSON من النتائج، ويستخدمها لتأريض استجابته.

هذا يُزيل ثلاث نقاط ألم في نشر واحد: لا فوترة لكل استعلام، لا تسرب بيانات لـ‎Google أو ‎Bing، ولا مفاجآت حدود المعدل الساعة 2 صباحًا عندما يشغّل عميلك دفعة بحث.

بحث خاص، على خادمك الخاص

انشر SearXNG على VPS ServOrbit وامنح فريقك وعملاء الذكاء الاصطناعي نقطة بحث خاصة وغير محجوبة — بلا تتبع، بلا مفاتيح API، بلا فوترة لكل استعلام.