SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor

تفاوت Searx و SearXNG؛ آیا پروژه Searx متوقف شده است؟

پروژه Searx از سال 2023 هیچ آپدیتی دریافت نکرده و اکنون SearXNG جایگزین آن است. در این مطلب وضعیت فعلی، تفاوت فایل‌های پیکربندی و نحوه راه‌اندازی نسخه جدید را بررسی می‌کنیم.

Searx یا SearXNG: کدام را باید نصب کنید؟

Searx و SearXNG دو پروژه متفاوت با نامی تقریباً یکسان هستند و تنها یکی از آن‌ها همچنان به‌روزرسانی دریافت می‌کند. SearXNG را نصب کنید. پروژه اصلی Searx از آوریل 2023 هیچ commit کدی دریافت نکرده است و فایل README آن نیز وضعیت را در یک جمله مشخص کرده است: "Searx دیگر نگهداری نمی‌شود."

این موضوع بیش از آنکه یک مسئله فلسفی باشد، یک مشکل عملی است. این دو پروژه از یک اسکرین‌شات، بخش بزرگی از فایل پیکربندی و نیمی از نام مشترک استفاده می‌کنند، بنابراین راهنمایی که برای یکی نوشته شده، به نظر می‌رسد برای دیگری نیز کاربرد دارد. اما این‌طور نیست. فایل تنظیمات در مسیر متفاوتی قرار دارد، سیستم محافظت در برابر ربات‌ها جدید است و نام بسته آن در نسخه‌های فعلی Ubuntu دیگر وجود ندارد. در ادامه، تفاوت‌های این دو، دستوراتی برای بررسی وضعیت توسط خودتان و فهرستی از تغییرات برای کسی که قصد راه‌اندازی یک instance را دارد، آورده شده است.

Searx چیست و SearXNG از کجا آمده است

Searx یک موتور جستجوی متا (metasearch engine) است. این سرویس هیچ ایندکس مستقلی از خود ندارد. Searx پرس‌وجوی شما را دریافت کرده، آن را به سایر سرویس‌های جستجو مانند Bing، DuckDuckGo یا Wikipedia ارسال می‌کند و سپس نتایج بازگشتی را در یک صفحه واحد ادغام می‌نماید. مزیت این کار این است که آن سرویس‌ها به جای آدرس IP شما، آدرس سرور را مشاهده می‌کنند. هزینه این کار، نگهداری است. هر موتور جستجو در واقع قطعه‌کد کوچکی است که HTML یا API یک سرویس دیگر را تجزیه (parse) می‌کند؛ بنابراین هر زمان که آن سرویس بالادستی تغییری ایجاد کند، موتور مربوطه از کار می‌افتد. سلامت یک موتور جستجوی متا مستقیماً به افرادی وابسته است که ماژول‌های موتور آن را اصلاح می‌کنند.

مخزن searx در اکتبر 2013 ایجاد شد. در آوریل 2021، یکی از نگهداران سابق، SearXNG را به عنوان یک انشعاب (fork) از آن آغاز کرد. عبارت "NG" مخفف next generation است. فایل README خودِ Searx هر دو پروژه را در کنار هم توصیف می‌کند و آن توصیف همچنان واضح‌ترین خلاصه از این جدایی است:

SearXNG یک انشعاب از searx است که توسط یکی از نگهداران سابق searx ایجاد شده است.
SearXNG دارای انتشار‌های غلتان (rolling releases) است، وابستگی‌های آن با تناوب بیشتری به‌روزرسانی می‌شوند و موتورهای آن سریع‌تر اصلاح می‌گردند.

اختلاف‌نظری که منجر به این انشعاب شد، بر سر تشخیص خطاها (diagnostics) بود. Searx داده‌های استفاده را چیزی می‌دانست که یک نمونه (instance) نباید نگهداری کند و تنظیمات پیش‌فرض آن نیز صراحتاً همین موضوع را بیان می‌کنند: enable_stats: False # activate /stats page - note: it may leak usage data. پروژه SearXNG تصمیم متفاوتی گرفت و در تنظیمات پیش‌فرض خود enable_metrics: true را ارائه می‌دهد. این معیارها همان مواردی هستند که نوارهای زمان پاسخ‌دهی و صفحات خطا را پر می‌کنند و باعث می‌شوند شناسایی و رفع یک موتور خراب آسان‌تر شود. هر دو دیدگاه قابل دفاع هستند. تنها یکی از آن‌ها به انتشار کد ادامه داد.

آیا Searx مرده است؟ نحوه بررسی توسط خودتان

«مرده» وضعیتی نیست که GitHub گزارش کند، بنابراین دو سیگنال موجود را بخوانید و تصمیم بگیرید. اولین مورد این است که آیا مخزن (repository) آرشیو شده است و آخرین باری که یک push دریافت کرده چه زمانی بوده است.

curl -s https://api.github.com/repos/searx/searx | jq -r '.archived, .pushed_at'
curl -s https://api.github.com/repos/searxng/searxng | jq -r '.archived, .pushed_at'

در تاریخ 18 اکتبر 2026، دستور اول false و 2026-05-14T10:02:22Z را چاپ می‌کند. دستور دوم false و یک مهر زمانی (timestamp) اخیر را چاپ می‌کند که معمولاً مربوط به یکی دو روز گذشته است. مقدار اول را یادداشت کنید. مخزن searx آرشیو نشده است و کسی در آن را قفل نکرده است، به همین دلیل است که این سوال مدام تکرار می‌شود.

pushed_at به تنهایی سیگنال ضعیفی است، زیرا برای هر push به هر شاخه‌ای (branch)، از جمله یک تغییر یک‌خطی در مستندات، تغییر می‌کند. در عوض، لیست commitها را بخوانید.

curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
  | jq -r '.[] | .commit.committer.date[:10] + "  " + (.commit.message | split("\n")[0])'

تا تاریخ 18 اکتبر 2026، این دستور خروجی زیر را می‌دهد:

2026-05-14  [doc] add hister reference
2023-09-07  Searx is no longer maintained
2023-04-05  Fix quoting issue in search_operator plugin (#3479)
2023-04-04  Bump pallets-sphinx-themes from 2.0.2 to 2.0.3 (#3450)
2023-04-04  Update searx.data - update_wikidata_units.py (#3454)

آن را از پایین به بالا بخوانید. کار عادی در آوریل 2023 متوقف شده است. commit سپتامبر 2023 مربوط به نگهدارندگان پروژه است که اطلاعیه را در README درج کرده‌اند. تنها commit پس از آن مربوط به مستندات است، زیرا نویسنده اصلی به Hister نقل مکان کرده است؛ ابزاری برای جستجو که به جای پرس‌وجو از موتورهای دیگر، صفحات و فایل‌هایی را که شما انتخاب می‌کنید، نمایه‌سازی (index) می‌کند. این یک ایده متفاوت است و اگر در واقع به دنبال یک موتور جستجوی شخصی برای محتوای خودتان هستید، ابزار مفیدی است.

سیگنال دوم بسته‌بندی (packaging) است و بسته‌بندی همان چیزی است که اکثر آموزش‌های قدیمی بی‌سروصدا به آن وابسته‌اند.

  • PyPI دارای بیست نسخه searx است، از 0.1.2 در ژانویه 2014 تا 0.17.0 در ژوئیه 2020، و همه آن‌ها هنوز قابل دانلود هستند. pip install searx با موفقیت اجرا می‌شود و جدیدترین آن‌ها یعنی 0.17.0 را به شما می‌دهد که کدی مربوط به نه ماه پیش از ایجاد fork است.
  • دبیان نسخه 1.1.0 از searx را در Debian 12 (bookworm) عرضه کرد و هنوز آن را در نسخه unstable نگه می‌دارد. این بسته در اکتبر 2023 از نسخه testing حذف شد، بنابراین Debian 13 (trixie) اصلاً بسته searx را ندارد.
  • اوبونتو آخرین بار آن را در نسخه 23.10 (mantic) با نسخه 1.1.0 عرضه کرد. آخرین نسخه LTS که آن را دارد 22.04 با نسخه 1.0.0 است و این بسته قبل از انتشار Ubuntu 24.04 از آن حذف شد. در Ubuntu 24.04، دستور sudo apt install searx با E: Unable to locate package searx پایان می‌یابد.
  • searx.space، دایرکتوری نمونه‌های عمومی که پروژه همیشه کاربران را به آن ارجاع می‌داد، اکنون نمونه‌های SearXNG را فهرست می‌کند.

بنابراین وضعیت صادقانه این است: کد عمومی است، هنوز اجرا می‌شود و شما می‌توانید همین امروز آن را clone کرده و راه‌اندازی کنید. چیزی که دریافت نمی‌کنید، اصلاحات موتورهای جستجو یا به‌روزرسانی‌های امنیتی است و برای یک موتور جستجوی متا (metasearch)، این تمام وظیفه است. موتورها طبق زمان‌بندی دیگران از کار می‌افتند. یک نمونه نگهداری‌نشده، هر ماه نتایج کمتری برمی‌گرداند، بدون اینکه کسی به سرور دست بزند.

تغییرات نسخه جدید برای یک instance تازه

فایل تنظیمات جابه‌جا شده و اکنون یک overlay است

در Searx شما فایل searx/settings.yml را در داخل درخت منبع ویرایش می‌کردید. در SearXNG این فایل در مسیر /etc/searxng/settings.yml قرار دارد و پردازش آن از طریق متغیر محیطی SEARXNG_SETTINGS_PATH پیدا می‌شود. قالبی که نصب‌کننده در آنجا کپی می‌کند کوتاه است:

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'
  formats:
    - html

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true

valkey:
  # URL to connect valkey database. Is overwritten by ${SEARXNG_VALKEY_URL}.
  url: valkey://localhost:6379/0

use_default_settings: true خطی است که نحوه کار شما را تغییر می‌دهد. با وجود آن، فایل شما فقط شامل جایگزینی‌ها (overrides) است و هر کلیدی که در آن نیاورید، از مقادیر پیش‌فرض موجود در بسته خوانده می‌شود. بدون این خط، فایل شما باید کل پیکربندی را موتور به موتور توصیف کند. به همین دلیل است که برخی کاربران با instanceای مواجه می‌شوند که به‌درستی بالا می‌آید اما هیچ نتیجه‌ای پیدا نمی‌کند. فایل تنظیمات قدیمی Searx که در این مسیر کپی شود، یک پیکربندی کامل با نام‌های کلید متفاوت است، بنابراین مسیر دوم را انتخاب کرده و با مشکل مواجه می‌شود.

کلید مخفی (secret key) پردازش را متوقف می‌کند

sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \
              "/etc/searxng/settings.yml"

پس از کپی کردن قالب، این دستور را یک بار اجرا کنید. اگر آن را نادیده بگیرید، SearXNG یک خط در لاگ می‌نویسد و با وضعیت 1 خارج می‌شود، زیرا webapp.py پیش از ارائه هرگونه سرویس، کلید را با مقدار قالب مقایسه می‌کند:

server.secret_key is not changed. Please use something else instead of ultrasecretkey.

این بررسی زمانی که general.debug برابر با true باشد نادیده گرفته می‌شود، بنابراین یک instance ممکن است در یک نشست دیباگ به‌خوبی کار کند و سپس تحت systemd یا در یک کانتینر از شروع به کار امتناع ورزد. کانتینری که در یک حلقه با آن خط در docker compose logs ری‌استارت می‌شود، به دلیل فعال شدن همین بررسی است، نه خرابی image.

محدودکننده (limiter) جدید است و به Valkey نیاز دارد

Searx هیچ محدودیت نرخ (rate limiting) داخلی در برنامه نداشت. instanceهای عمومی Searx سرویس‌های جداگانه‌ای را در مقابل آن قرار می‌دادند؛ filtron برای فیلتر کردن درخواست‌ها و morty برای پروکسی کردن محتوای نتایج. هیچ‌کدام از این مخازن از ژانویه 2023 هیچ commitای دریافت نکرده‌اند: آخرین commit برای filtron مربوط به همان ماه و برای morty مربوط به آوریل 2021 است.

SearXNG این کار را خودش انجام می‌دهد. محدودیت نرخ و تشخیص ربات توسط limiter انجام می‌شود که با server.limiter فعال می‌گردد. این مقدار در پیش‌فرض‌های ارائه‌شده false و در قالب نصب‌کننده true است و برای نگهداری شمارنده‌های خود به یک دیتابیس Valkey نیاز دارد. Valkey یک fork از Redis است و در Ubuntu 24.04 بسته‌بندی شده است:

sudo apt install -y valkey-server
server:
  limiter: true

valkey:
  url: valkey://localhost:6379/0

راهنماهایی که پیش از این تغییر نام نوشته شده‌اند، یک بلوک redis: را پیکربندی می‌کنند، بنابراین نام کلید را از مستندات فعلی limiter کپی کنید. تنظیمات دقیق در فایل دوم یعنی /etc/searxng/limiter.toml قرار دارد و server.public_instance: true تشخیص سخت‌گیرانه‌تر ربات را که یک instance عمومی به آن نیاز دارد، از جمله روش link token فعال می‌کند. نتیجه قابل مشاهده این است که برخی درخواست‌ها به‌جای نتیجه، با HTTP 429 پاسخ داده می‌شوند، که شامل درخواست‌های خود شما در صورت اسکریپت‌نویسی علیه instance نیز می‌شود. این موضوع صفحه مخصوص به خود را دارد: چرا یک instance SearXNG پاسخ 429 Too Many Requests می‌دهد.

موتورها خود را تعلیق می‌کنند و زمان‌های انتظار طولانی هستند

هنگامی که یک سرویس بالادستی با CAPTCHA یا صفحه محدودیت نرخ پاسخ می‌دهد، SearXNG یک استثنای تایپ‌شده ایجاد می‌کند و به‌جای تلاش مجدد و مسدود شدن، پرسش از آن موتور را برای مدت مشخصی متوقف می‌کند. پیش‌فرض‌ها در searx/settings.yml تحت search.suspended_times ارائه می‌شوند. این‌ها مقادیر 6 هستند که تا اکتبر 2026 منتشر شده‌اند:

نمودارSearXNG default engine suspension times, in seconds
داده‌های پشت این نمودار
[
  {
    "label": "SearxEngineAccessDenied",
    "suspend_seconds": "180"
  },
  {
    "label": "SearxEngineCaptcha",
    "suspend_seconds": "3,600"
  },
  {
    "label": "SearxEngineTooManyRequests",
    "suspend_seconds": "180"
  },
  {
    "label": "cf_SearxEngineCaptcha",
    "suspend_seconds": "1,296,000"
  },
  {
    "label": "cf_SearxEngineAccessDenied",
    "suspend_seconds": "86,400"
  },
  {
    "label": "recaptcha_SearxEngineCaptcha",
    "suspend_seconds": "604,800"
  }
]

یک پاسخ ساده "دسترسی ممنوع" آن موتور را برای 180 ثانیه پارک می‌کند. یک CAPTCHA آن را برای 3,600 ثانیه پارک می‌کند. یک Cloudflare CAPTCHA آن را برای 1,296,000 ثانیه پارک می‌کند که پانزده روز است، و Google reCAPTCHA برای 604,800 ثانیه که یک هفته است. مقادیر طولانی عمدی هستند، زیرا پرسش مجدد پس از اینکه سرویس آدرس IP را علامت‌گذاری کرده است، باعث می‌شود IP instance برای همیشه مسدود شود.

در حالی که یک موتور تعلیق شده است، صفحه نتایج از آن عبور می‌کند و آن را در بلوک کناری با عنوان "پیام‌هایی از موتورهای جستجو" گزارش می‌دهد و /stats/errors موارد شکست‌خورده را فهرست می‌کند. یک instance تازه که نتایج کمی برمی‌گرداند معمولاً این وضعیت را نشان می‌دهد، نه یک نصب خراب.

رابط JSON API به‌صورت پیش‌فرض غیرفعال است

پیش‌فرض ارائه‌شده formats: [html] و هیچ چیز دیگری نیست، بنابراین APIای که هر اسکریپتی به آن نیاز دارد تا زمانی که آن را باز نکنید بسته است.

curl -s -o /dev/null -w '%{http_code}\n' \
  'http://127.0.0.1:8888/search?q=test&format=json'

این دستور 403 را چاپ می‌کند، زیرا مسیر جستجو زمانی که فرمت درخواستی در search.formats فهرست نشده باشد، flask.abort(403) را فراخوانی می‌کند. فرمت را اضافه کرده و سرویس را ری‌استارت کنید:

search:
  formats:
    - html
    - json

فایل تنظیمات searx اصلاً کلید formats را ندارد، بنابراین خروجی JSON آن به‌سادگی با درخواست در دسترس بود. هر اسکریپت و قطعه کدی از آن دوران همین فرض را دارد و حالت شکست آن یک خطای 403 ساده بدون توضیح است. اگر در حال متصل کردن یک instance به ابزارهای خود هستید، دادن یک endpoint SearXNG به یک عامل برای جستجو با همین یک تنظیم شروع می‌شود.

چرا آموزش‌های کپی‌شده Searx با شکست مواجه می‌شوند

هر یک از این خطوط در راهنماهایی دیده می‌شوند که هنوز در نتایج جستجو رتبه دارند، اما هر کدام در یک نصب فعلی یا شکست می‌خورند یا گمراه‌کننده هستند.

  • دستور sudo apt install searx در Ubuntu 24.04 در مرحله E: Unable to locate package searx متوقف می‌شود، زیرا این بسته آخرین بار در نسخه 23.10 عرضه شد و پیش از انتشار نسخه 24.04 از مخازن حذف گردید.
  • دستور pip install searx با موفقیت اجرا شده و نسخه 0.17.0 مربوط به ژوئیه 2020 را نصب می‌کند. هیچ هشداری به شما نمی‌دهد که این نسخه پیش از ایجاد fork اصلی است.
  • دستور git clone https://github.com/asciimoo/searx همچنان کار می‌کند، زیرا GitHub نام مالک قدیمی را تغییر مسیر می‌دهد. این دستور شاخه پیش‌فرض فعلی را دریافت می‌کند، جایی که یک کامیت مستندات مربوط به مه 2026 روی کدی قرار دارد که توسعه آن در آوریل 2023 متوقف شده است.
  • مراحلی که فایل searx/settings.yml را در درخت منبع ویرایش می‌کنند، هیچ تغییری در SearXNG ایجاد نمی‌کنند، زیرا این برنامه فایل /etc/searxng/settings.yml را می‌خواند.
  • مراحلی که filtron یا morty را نصب می‌کنند، در حال بازسازی بخش‌هایی هستند که SearXNG از قبل شامل آن‌هاست.
  • یک URL با نام redis: برای محدودکننده (limiter)، یک نام‌گذاری عقب‌تر از کلید فعلی valkey: است.

راهنماهای SearXNG نیز دچار فرسودگی می‌شوند و URL کلون، سریع‌ترین راه برای تشخیص قدمت آن‌هاست. فایل‌های compose قبلاً در یک مخزن جداگانه به نام searxng-docker قرار داشتند. آن مخزن اکنون آرشیو شده است، آخرین push آن در مارس 2026 بوده و فایل‌هایش به container/ در مخزن اصلی منتقل شده‌اند. راهنمای شروع سریع کانتینر در مستندات فعلی به شرح زیر است:

mkdir -p ./searxng/core-config/
cd ./searxng/
curl -fsSL \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .env
nano .env
docker compose up -d

پیش از اجرای آخرین دستور، فایل .env را ویرایش کنید. این ایمیج، متغیرهای محیطی را به کلیدهای تنظیمات نگاشت می‌کند، بنابراین SEARXNG_SECRET به server.secret_key و SEARXNG_BASE_URL به server.base_url تبدیل می‌شود. نصب اسکریپتی روی هاست، مسیر متفاوتی است که نتیجه مشابهی دارد:

git clone https://github.com/searxng/searxng.git searxng
cd searxng
sudo -H ./utils/searxng.sh install all

این دستور کاربر searxng، محیط مجازی (virtual environment) در مسیر /usr/local/searxng و سرویس uWSGI را ایجاد می‌کند که پیکربندی مرجع در مستندات SearXNG است. راهنمای گام‌به‌گام طولانی‌تر برای این مسیر در نصب SearXNG روی VPS شخصی موجود است.

نمونه عمومی یا نمونه شخصی خودتان

یک نمونه عمومی در واقع سرور شخص دیگری است که اتصال TLS (امنیت لایه انتقال) شما را خاتمه می‌دهد، بنابراین نرم‌افزار موجود در آن، پرس‌وجوی شما را به‌صورت متن ساده (plain text) می‌خواند. مستندات خود SearXNG مسئله اعتماد را به‌صراحت مطرح می‌کند: شما باید به مدیر سرور اعتماد کنید و نمی‌توانید بدانید که آیا درخواست‌ها ثبت، تجمیع یا به شخص ثالثی ارسال می‌شوند یا خیر. لیست قابل‌مشاهده، کوتاه و کامل است. پشته نرم‌افزاری اپراتور می‌تواند متن پرس‌وجو، زمان، آدرس IP مبدأ درخواست، user agent مرورگر و کوکی تنظیمات حاوی ترجیحات شما را ببیند. اپراتور همچنین کنترل کد را در دست دارد، بنابراین هر وصله‌ای که اعمال کند، روی تک‌تک جستجوهای شما در آنجا اجرا می‌شود.

یک تنظیم پیش‌فرض، ثبت لاگ را به‌طور تصادفی آسان‌تر می‌کند. Searx جستجوها را به‌صورت POST ارسال می‌کرد. SearXNG با method: "GET" عرضه می‌شود، با این توضیح که POST پرس‌وجوهای جستجو را از تاریخچه مرورگر دور نگه می‌دارد اما مشکلات کاربری ایجاد می‌کند. با GET، پرس‌وجو در خط درخواست قرار می‌گیرد، بنابراین به‌طور پیش‌فرض در لاگ دسترسی reverse proxy و در تاریخچه مرورگر ثبت می‌شود. این رفتار عادی یک وب‌سرور است. دانستن این موضوع پیش از انتخاب اینکه جستجوهای شما روی سرور چه کسی انجام شود، ارزشمند است.

اجرای نمونهٔ شخصی، اعتماد را حذف نمی‌کند؛ فقط آن را منتقل می‌کند. شما کد و لاگ‌ها را کنترل می‌کنید. اگر ترجیح می‌دهید برای یک سرور تک‌کاربره اصلاً hostname یا گواهی TLS عمومی نکنید، دسترسی از طریق سرویس onion نسخهٔ 3 نمونه را از DNS عمومی دور نگه می‌دارد و همچنان از هر مکانی به آن دسترسی خواهید داشت. در مقابل، موتورهای upstream یک آدرس را برای همهٔ جست‌وجوهای شما می‌بینند. در یک نمونهٔ تک‌کاربره، هر query به شما نسبت داده می‌شود و با فعالیت جمعی از کاربران دیگر ترکیب نمی‌شود. یک نمونهٔ عمومیِ پرترافیک این جمع را در اختیار شما می‌گذارد و لاگ‌ها را از کنترل شما خارج می‌کند. ویژگی‌ای را انتخاب کنید که برایتان اهمیت دارد. اگر ابتدا فهرست کامل ریسک‌ها را می‌خواهید، آیا استفاده از SearXNG ایمن است این موضوع را بررسی می‌کند. دربارهٔ تاریخچهٔ موقعیت مکانی نیز باید با همین رویکرد، اما با حساسیت بیشتر، فکر کنید؛ زیرا تلفنی که تمام روز موقعیت خود را گزارش می‌کند، اطلاعاتی بیش از هر لاگ جست‌وجو افشا می‌کند. اگر می‌خواهید این داده‌ها روی سروری تحت کنترل خودتان باشند، مقایسهٔ ردیاب‌های موقعیت مکانی self-hosted نقطهٔ شروع مناسبی است.

یک نکته عملی درباره VPS: محدوده‌های آدرس datacentre سریع‌تر از اتصال‌های خانگی علامت‌گذاری می‌شوند؛ بنابراین یک instance جدید ممکن است در برخی موتورهای جست‌وجو، ظرف چند جست‌وجوی نخست با CAPTCHA مواجه شود. این همان رفتار suspension در بخش بالا است و نشان‌دهنده misconfiguration نیست. اگر پس از پایان suspension، دسترسی به همان موتورهای جست‌وجو همچنان مسدود بماند، خواندن خطای واقعی پیش از تغییر هر چیز شما را از حدس‌زدن راه‌حل‌ها بی‌نیاز می‌کند.

اگر در حال حاضر یک نمونه Searx را اجرا می‌کنید

هیچ‌چیز در روزی که این متن را می‌خوانید از کار نمی‌افتد. سرور تا زمانی که تغییر بعدی در بالادست (upstream) باعث از کار افتادن یک موتور جستجو شود به کار خود ادامه می‌دهد و پس از آن، همان‌طور خراب باقی می‌ماند. برای انتقال برنامه‌ریزی کنید و فایل پیکربندی قدیمی را مستقیماً منتقل نکنید. کار را با قالب SearXNG شروع کنید و سپس فقط مواردی را که آگاهانه تغییر داده‌اید دوباره اضافه کنید: نام نمونه، safe_search، موتورهایی که به نام فعال یا غیرفعال کرده‌اید و تنظیمات پیش‌فرض رابط کاربری. نام موتورها و گزینه‌ها در این انشعاب (fork) تغییر کرده‌اند، بنابراین به‌جای فرض اینکه کلیدها هنوز وجود دارند، هر کدام را با مستندات فعلی تطبیق دهید. قوانین Filtron و آدرس URL برای morty معادل ندارند، زیرا این وظایف به داخل خود برنامه منتقل شده‌اند.

نمونه جدید را روی پورت متفاوتی اجرا کنید در حالی که نمونه قدیمی هنوز فعال است. زمانی که صفحه اصلی کد 200 برمی‌گرداند، جستجو نتایجی از بیش از یک موتور ارائه می‌دهد و /stats/errors یا خالی است یا فقط خطاهایی را فهرست می‌کند که از آن‌ها آگاه هستید، یعنی سیستم به‌درستی کار می‌کند. سپس reverse proxy را به سمت نمونه جدید هدایت کرده و سرویس قدیمی را متوقف کنید.

FAQ

آیا Searx در سال 2026 مرده است؟

مخزن (repository) پروژه آرشیو نشده است، بنابراین مانعی برای کلون کردن آن وجود ندارد، اما پروژه دیگر نگهداری نمی‌شود. آخرین commit کد در آوریل 2023 ثبت شده و فایل README شامل این جمله است: "Searx دیگر نگهداری نمی‌شود." خودتان این موضوع را با curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at' بررسی کنید و سپس پیام‌های commit اخیر را بخوانید، زیرا تاریخ push به تنهایی ممکن است ناشی از ویرایش مستندات باشد. برای یک موتور جستجوی متا (metasearch engine)، عدم نگهداری به معنای افت کیفیت خودکار نتایج است، زیرا هر ماژول موتور جستجو به یک سایت بالادستی وابسته است که دائماً در حال تغییر است.

آیا هنوز می‌توانم Searx را با apt یا pip نصب کنم؟

در سیستم‌های فعلی خیر، و در جایی که امکان‌پذیر باشد نیز کاربردی ندارد. اوبونتو آخرین بار searx را در نسخه 23.10 با ورژن 1.1.0 بسته‌بندی کرد و آخرین نسخه LTS که آن را دارد 22.04 با ورژن 1.0.0 است. این بسته قبل از انتشار 24.04 حذف شد، بنابراین sudo apt install searx در 24.04 خروجی E: Unable to locate package searx را برمی‌گرداند. دبیان نسخه 1.1.0 را در Debian 12 ارائه کرد و آن را در اکتبر 2023 از نسخه testing حذف نمود، بنابراین Debian 13 هیچ بسته‌ای برای آن ندارد. PyPI هنوز تمام نسخه‌های searx را ارائه می‌دهد و جدیدترین آن‌ها 0.17.0 مربوط به ژوئیه 2020 است که از خودِ fork قدیمی‌تر است. به جای آن SearXNG را نصب کنید.

آیا فایل settings.yml قدیمی searx من در SearXNG کار می‌کند؟

خیر. مقادیر را کپی کنید، نه فایل را. SearXNG فایل /etc/searxng/settings.yml را می‌خواند و انتظار دارد use_default_settings: true در ابتدای آن باشد، بنابراین فایل شما به عنوان یک لایه روی پیش‌فرض‌های موجود عمل می‌کند. یک فایل قدیمی searx یک پیکربندی کامل با نام‌های کلیدی متفاوت است و فاقد limiter، بلوک valkey و لیست formats است. از قالب موجود در utils/templates/etc/searxng/settings.yml شروع کنید و تغییرات خود را یکی‌یکی اضافه کنید.

چرا نمونه (instance) شخصی SearXNG من نتایج کمتری نسبت به یک نمونه عمومی برمی‌گرداند؟

برخی موتورها تعلیق شده‌اند. هنگامی که یک موتور با CAPTCHA یا صفحه محدودیت نرخ (rate limit) پاسخ می‌دهد، SearXNG پرس‌وجو از آن را برای مدت زمان مشخصی متوقف می‌کند؛ از 180 ثانیه برای امتناع ساده تا 1,296,000 ثانیه برای CAPTCHA کلودفلر. صفحه نتایج این موضوع را در بخش "Messages from the search engines" گزارش می‌دهد و /stats/errors خطاها را به همراه دلایل آن‌ها فهرست می‌کند. آدرس‌های دیتاسنتر سریع‌تر از اتصالات خانگی پرچم‌گذاری می‌شوند، بنابراین یک نمونه VPS جدید زودتر با این مشکل مواجه می‌شود.

آیا باید از یک نمونه عمومی SearXNG استفاده کنم یا نمونه شخصی خودم را اجرا کنم؟

اگر کنترل کد و لاگ‌ها را می‌خواهید، نمونه خودتان را اجرا کنید و بپذیرید که موتورهای بالادستی در این حالت، یک آدرس واحد برای تمام جستجوهای شما می‌بینند. اگر ترکیب پرس‌وجوهای شما با پرس‌وجوهای دیگران برایتان مهم‌تر از دانستن آنچه ثبت (log) می‌شود است، از یک نمونه عمومی استفاده کنید. در یک نمونه عمومی، اپراتور می‌تواند متن پرس‌وجو، زمان، آدرس IP و user agent شما را ببیند و هر زمان که بخواهد کد را تغییر دهد. یک سیاست ثبت لاگِ اعلام‌شده، از بیرون قابل راستی‌آزمایی نیست.