SearXNG چیست و چگونه موتور جست‌وجوی خود را روی VPS نصب کنیم

2 دقیقه خواندن
Tropic
SearXNG چیست و چگونه موتور جست‌وجوی خود را روی VPS نصب کنیم

Language: fa

SearXNG: موتور جست‌وجوی شخصی بدون ردیابی روی VPS

یک موتور جست‌وجوی معمولی می‌تواند query را به آدرس IP، کوکی‌ها و سابقه فعالیت متصل کند. SearXNG مسیر دیگری دارد: مرورگر به نمونه شما وصل می‌شود، نمونه از چند موتور جست‌وجوی خارجی query می‌فرستد و پاسخ‌ها را در یک صفحه ترکیب می‌کند.

منابع خارجی به‌جای کوکی‌های کاربر، آدرس سرور SearXNG را می‌بینند. خود سرویس نیز پروفایل تبلیغاتی نمی‌سازد. بااین‌حال، این به معنای ناشناس‌بودن کامل نیست: صاحب یک نمونه عمومی از نظر فنی می‌تواند logها را نگه دارد و بعد از باز کردن یک لینک، وب‌سایت مقصد دوباره با مرورگر ارتباط برقرار می‌کند.

در این مقاله قابلیت‌های SearXNG را بررسی می‌کنیم و نمونه خود را روی VPS، همراه با HTTPS و محافظت با password، نصب می‌کنیم.

SearXNG چیست و چگونه کار می‌کند

SearXNG یک metasearch engine رایگان و open-source است. این سرویس index وب‌سایت‌ها را خودش نگهداری نمی‌کند؛ نتایج را از موتورهای جست‌وجوی تنظیم‌شده و منابع تخصصی می‌گیرد، آن‌ها را یکسان‌سازی می‌کند و در یک interface نمایش می‌دهد.

Browser → your SearXNG → search engines
                         ↓
                  combined results

SearXNG برای هر query:

  1. دسته جست‌وجو را تعیین می‌کند: web، images، news، videos یا دسته‌ای دیگر؛
  2. از طرف سرور با منابع انتخاب‌شده ارتباط برقرار می‌کند؛
  3. کوکی‌های کاربر را برای آن‌ها نمی‌فرستد و برای درخواست‌های خروجی از browser profile تصادفی استفاده می‌کند؛
  4. پاسخ‌ها را در یک صفحه نتایج ترکیب می‌کند.

سرعت به سیستم‌های خارجی وابسته است: ممکن است آن‌ها کند پاسخ دهند، CAPTCHA نشان دهند یا آدرس IP را مسدود کنند. SearXNG یک لایه واسط مدیریت‌شده است، نه یک index مستقل.

چرا SearXNG از یک موتور جست‌وجو جالب‌تر است

منابع مختلف در یک صفحه نتایج

می‌توانید موتورهای جست‌وجوی عمومی را با منابع تخصصی ترکیب کنید: دانشنامه‌ها، نقشه‌ها، انتشارات علمی، repositoryها، سرویس‌های خبری یا catalogهای تصویر. این قابلیت زمانی مفید است که صفحه نتایج معمولی با صفحات SEO اشباع شده باشد یا در یافتن مطالب تخصصی مشکل داشته باشد.

در زمان آماده‌سازی این مقاله، مستندات 272 integration را فهرست می‌کرد که 83 مورد آن‌ها به‌صورت پیش‌فرض فعال بودند. این به معنای پایداری یکسان همه آن‌ها نیست.

این مجموعه به configuration بستگی دارد. چند منبع پایدار معمولاً سریع‌تر از فعال‌کردن همه منابع با هم کار می‌کنند.

فرمان‌های سریع

میان‌برها به شما اجازه می‌دهند موقتاً یک engine، category یا language را انتخاب کنید:

!wp docker compose       — search Wikipedia
!images northern lights  — search for images
:en !wp proxy server     — search Wikipedia in English

فرمان !! کاربر را مستقیماً به یک موتور جست‌وجوی خارجی می‌فرستد. در این حالت محافظت SearXNG دیگر اعمال نمی‌شود.

جست‌وجو برای مرورگر و ابزارهای خودتان

SearXNG از OpenSearch پشتیبانی می‌کند، بنابراین می‌توان آن را به‌عنوان موتور جست‌وجوی پیش‌فرض مرورگر قرار داد. اگر administrator قالب‌های لازم را فعال کرده باشد، HTTP API با پاسخ‌های JSON، CSV یا RSS نیز در دسترس است.

یک نمونه می‌تواند backend جست‌وجو برای dashboard داخلی، bot، research script یا local AI assistant باشد. API را فقط پس از فعال‌کردن authentication و rate limit در معرض دسترسی قرار دهید.

SearXNG چقدر خصوصی است

کاری که انجام می‌دهدکاری که انجام نمی‌دهد
کوکی‌های مرورگر را برای موتورهای جست‌وجوی خارجی نمی‌فرستدناشناس‌بودن کامل فراهم نمی‌کند
IP کاربر را پشت IP سرور پنهان می‌کندبعد از باز کردن وب‌سایت نتیجه، از کاربر محافظت نمی‌کند
تبلیغات شخص ثالث و برخی tracking parameterها را حذف می‌کندتضمین نمی‌کند صاحب سرور دیگر log نگه ندارد
می‌تواند تصویرها را proxy کندجای VPN، Tor یا محافظت مرورگر را نمی‌گیرد

یک نمونه عمومی برای امتحان سرویس راحت است، اما باید به administrator آن اعتماد کنید و IP مشترک با احتمال بیشتری rate-limit می‌شود.

سرور شخصی کنترل logها، منابع و دسترسی را در اختیار شما می‌گذارد، اما مرورگر را ناشناس نمی‌کند.

نمونه عمومی، سرور خانگی یا VPS

گزینهمزایامحدودیت‌ها
نمونه عمومینیازی به نصب نیستاعتماد به مالک، overload و CAPTCHA
سرور خانگیکنترل کامل بدون اجاره VPSدستگاه باید همیشه روشن باشد؛ تنظیم دسترسی خارجی دشوارتر است
VPS شخصیکارکرد 24/7، دامنه، HTTPS و دسترسی از دستگاه‌های مختلفباید containerها را به‌روزرسانی و امنیت را پایش کنید

نمونه شخصی SearXNG برای خانواده، تیم، توسعه‌دهنده یا ابزارهای local AI مفید است. برای جست‌وجوهای گاه‌به‌گاه، نمونه عمومی ساده‌تر خواهد بود.

SearXNG به چه نوع VPS نیاز دارد

بار سیستم به تعداد کاربران، منابع و queryهای هم‌زمان بستگی دارد. configurationهای عملی برای شروع:

سناریوCPURAMStorage
یک کاربر1 vCPU1 GB10 GB
خانواده یا تیم کوچک2 vCPU2 GB20 GB
API و سرویس‌های اضافی2–4 vCPUاز 4 GBاز 30 GB

به دیسک بزرگی نیاز ندارید. کیفیت شبکه، IP پایدار و RAM آزاد اهمیت بیشتری دارند.

یک Linux VPS از tropic.host برای این سناریو مناسب است: می‌توانید با configuration کوچک شروع کنید و با اضافه‌شدن کاربران یا API منابع را افزایش دهید. هنگام انتخاب plan، سرمایه‌گذاری روی RAM و کیفیت شبکه از پرداخت هزینه اضافی برای ظرفیت storage مفیدتر است.

نصب SearXNG روی VPS با Docker Compose

در این مثال از Ubuntu 24.04 LTS، زیردامنه search.example.com، Valkey و Caddy استفاده می‌کنیم. رکورد DNS نوع A را به سرور متصل کنید و پورت‌های 80 و 443 را باز کنید.

1. Docker را نصب و یک directory ایجاد کنید

sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker

sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng

یک فایل .env با دامنه و secret تصادفی بسازید:

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. docker-compose.yml را بسازید

name: searxng

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
      SEARXNG_SECRET: ${SEARXNG_SECRET}
      SEARXNG_VALKEY_URL: valkey://valkey:6379/0
    volumes:
      - ./searxng:/etc/searxng:rw
      - searxng-cache:/var/cache/searxng
    depends_on: [valkey]

  valkey:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    command: valkey-server --save 30 1 --loglevel warning
    volumes:
      - valkey-data:/data

  caddy:
    image: docker.io/caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on: [searxng]

volumes:
  searxng-cache:
  valkey-data:
  caddy-data:
  caddy-config:

3. SearXNG را پیکربندی کنید

فایل searxng/settings.yml را بسازید:

use_default_settings: true

general:
  instance_name: "Private Search"

search:
  safe_search: 1
  autocomplete: ""
  formats: [html]

server:
  limiter: true
  image_proxy: true

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

فایل searxng/limiter.toml را بسازید:

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

limiter خطر overload کردن نمونه توسط botها و محدودکردن زودتر IP توسط موتورهای جست‌وجوی خارجی را کاهش می‌دهد.

4. password و HTTPS را اضافه کنید

برای یک password قوی hash تولید کنید:

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'REPLACE_WITH_PASSWORD'

hash به‌دست‌آمده را در Caddyfile قرار دهید:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSERT_HASH_HERE
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

Caddy به‌جای password متن ساده، hash را ذخیره می‌کند. به‌جای Basic Auth می‌توانید دسترسی سرویس را به VPN نیز محدود کنید.

5. containerها را اجرا کنید

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

https://search.example.com را باز کنید. Caddy به‌صورت خودکار TLS certificate می‌گیرد و پس از آن مرورگر نام کاربری و password searchuser را می‌خواهد. logهای SearXNG با این command در دسترس هستند:

sudo docker compose logs -f searxng

بعد از راه‌اندازی چه چیزهایی را تنظیم کنیم

فقط منابع مفید را نگه دارید، language و SafeSearch را انتخاب کنید و سپس SearXNG را از طریق OpenSearch به مرورگر اضافه کنید. برای به‌روزرسانی آن اجرا کنید:

sudo docker compose pull
sudo docker compose up -d

از .env، Caddyfile و directory مربوط به searxng backup بگیرید. JSON API را فقط در صورت نیاز فعال کنید و آن را بدون password و rate limiting رها نکنید.

اشتباهات رایج

اشتباهپیامدراه‌حل
عمومی‌کردن نمونهbotها بار ایجاد می‌کنند و IP بیشتر محدود می‌شوداز password، VPN یا single sign-on استفاده کنید
فعال‌کردن منابع بیش از حدنتایج کند و timeoutچند engine پایدار را نگه دارید
تصور اینکه SearXNG index خودش را داردهنگام خرابی سیستم‌های خارجی برخی نتایج ناپدید می‌شوندوابستگی آن به منابع را در نظر بگیرید
انتظار ناشناس‌بودن کاملوب‌سایت مقصد همچنان می‌تواند مرورگر را ردیابی کنداز محافظت مرورگر، VPN یا Tor استفاده کنید
اجرا بدون HTTPSqueryها و password ناامن منتقل می‌شونداز reverse proxy با TLS استفاده کنید

نتیجه‌گیری

SearXNG منابع مختلف را در یک interface ترکیب می‌کند، شخصی‌سازی را کاهش می‌دهد و یک سرویس جست‌وجوی واحد برای مرورگر، scriptها یا local AI فراهم می‌سازد. برای امتحان‌کردن، نمونه عمومی کافی است. برای استفاده منظم، سرور شخصی با HTTPS، authentication، limiter و چند منبع پایدار انتخاب بهتری است.

می‌توانید با 1 GB RAM شروع کنید. با افزایش تعداد کاربران، فعال‌کردن API یا اجرای containerهای اضافی منابع را بیشتر کنید.

FAQ

آیا SearXNG کاملاً ناشناس است؟

خیر. بخشی از داده‌ها را از موتورهای جست‌وجوی خارجی پنهان می‌کند، اما administrator نمونه می‌تواند log نگه دارد. پس از باز کردن یک وب‌سایت، مکانیزم‌های ردیابی همان سایت اعمال می‌شوند.

آیا SearXNG از Google بهتر است؟

این دو مسئله متفاوتی را حل می‌کنند. Google معمولاً سریع‌تر است و نتایج را بیشتر شخصی‌سازی می‌کند. SearXNG کنترل بیشتری می‌دهد، امکان ترکیب منابع را فراهم می‌کند و کمتر به پروفایل کاربر وابسته است.

آیا می‌توان SearXNG را بدون VPS استفاده کرد؟

بله. می‌توانید از نمونه عمومی، کامپیوتر خانگی، NAS یا mini server استفاده کنید. برای دسترسی 24/7 از هر شبکه‌ای به VPS نیاز دارید.

چه مقدار RAM لازم است؟

برای یک کاربر، شروع با 1 GB منطقی است. برای خانواده، تیم، API یا containerهای اضافی، 2–4 GB بهتر است.

آیا SearXNG به مرورگر یا AI متصل می‌شود؟

بله. مرورگر می‌تواند از OpenSearch استفاده کند و برنامه‌ها از HTTP API بهره ببرند. دسترسی API باید با authentication و limiter محافظت شود.