Tropic Host

SearXNG: що це таке і як встановити власну пошукову систему на VPS

5 хв. читання
Tropic
SearXNG: що це таке і як встановити власну пошукову систему на VPS

SearXNG: власна пошукова система без трекінгу на VPS

Звичайна пошукова система може пов'язати запит з IP-адресою, файлами cookie та історією активності. SearXNG змінює маршрут: браузер підключається до вашого екземпляра, який звертається до кількох зовнішніх пошукових систем і об'єднує їхні відповіді на одній сторінці.

Зовнішні джерела бачать адресу сервера SearXNG, а не cookie користувача. Сам сервіс не створює рекламний профіль. Проте це не повна анонімність: власник публічного екземпляра технічно може зберігати журнали, а після переходу за посиланням сайт призначення знову взаємодіє з браузером.

Розглянемо можливості SearXNG і встановимо власний екземпляр на VPS із HTTPS та захистом паролем.

Що таке SearXNG і як він працює?

SearXNG — безкоштовна метапошукова система з відкритим кодом. Вона не підтримує власний індекс сайтів: отримує результати від налаштованих пошукових систем і спеціалізованих джерел, нормалізує їх і показує в єдиному інтерфейсі.

Browser → your SearXNG → search engines
                         ↓
                  combined results

Для кожного запиту SearXNG:

  1. визначає категорію пошуку: веб, зображення, новини, відео або іншу;
  2. звертається до вибраних джерел від імені сервера;
  3. не передає їм cookie користувача та використовує рандомізований профіль браузера для вихідних запитів;
  4. об'єднує відповіді на одній сторінці результатів.

Швидкість залежить від зовнішніх систем: вони можуть відповісти повільно, показати CAPTCHA або заблокувати IP-адресу. SearXNG — керований проміжний шар, а не автономний індекс.

Чому SearXNG цікавіший за одну пошукову систему

Різні джерела на одній сторінці результатів

Можна об'єднати універсальні пошукові системи зі спеціалізованими джерелами: енциклопедіями, картами, науковими публікаціями, репозиторіями, новинними сервісами або каталогами зображень. Це допомагає, коли звичайна сторінка переповнена SEO-матеріалами або погано знаходить вузьку інформацію.

На момент підготовки статті документація містила 272 інтеграції, 83 з яких увімкнено за замовчуванням. Це не означає, що всі вони однаково стабільні.

Набір залежить від конфігурації. Кілька стабільних джерел зазвичай працюють швидше, ніж увімкнення всього одразу.

Швидкі команди

Скорочення дають змогу тимчасово вибрати рушій, категорію або мову:

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

Команда !! перенаправляє користувача безпосередньо до зовнішньої пошукової системи. У цьому режимі захист SearXNG більше не діє.

Пошук для браузера та власних інструментів

SearXNG підтримує OpenSearch, тому його можна встановити пошуковою системою браузера за замовчуванням. Також доступний HTTP API з відповідями JSON, CSV або RSS, якщо адміністратор увімкнув потрібні формати.

Один екземпляр може бути пошуковим бекендом для внутрішньої панелі, бота, дослідницького скрипта або локального AI-помічника. API слід відкривати лише після налаштування автентифікації та обмеження частоти запитів.

Наскільки приватний SearXNG?

Що він робитьЧого він не робить
Не надсилає cookie браузера зовнішнім пошуковим системамНе забезпечує повної анонімності
Приховує IP користувача за IP сервераНе захищає після відкриття сайту результату
Видаляє сторонню рекламу та деякі параметри відстеженняНе гарантує, що власник чужого сервера не веде журнали
Може проксувати зображенняНе замінює VPN, Tor або захист браузера

Публічний екземпляр зручний для випробування сервісу, але потрібно довіряти його адміністратору, а спільну IP-адресу частіше обмежують за частотою запитів.

Власний сервер дає контроль над журналами, джерелами та доступом, але не робить браузер анонімним.

Публічний екземпляр, домашній сервер чи VPS

ВаріантПеревагиОбмеження
Публічний екземплярНічого не потрібно встановлюватиДовіра до власника, перевантаження, CAPTCHA
Домашній серверПовний контроль без оренди VPSПристрій має працювати постійно, зовнішній доступ складніше налаштувати
Власний VPSРобота 24/7, домен, HTTPS, доступ із різних пристроївПотрібно оновлювати контейнери й контролювати безпеку

Власний екземпляр SearXNG корисний для родини, команди, розробника або локальних AI-інструментів. Для випадкового пошуку простіше використовувати публічний екземпляр.

Який VPS потрібен SearXNG?

Навантаження залежить від кількості користувачів, джерел і паралельних запитів. Практичні стартові конфігурації:

СценарійCPURAMСховище
Один користувач1 vCPU1 GB10 GB
Родина або невелика команда2 vCPU2 GB20 GB
API та додаткові сервіси2–4 vCPUвід 4 GBвід 30 GB

Великий диск не потрібен. Важливіші якість мережі, стабільна IP-адреса та запас RAM.

Для цього сценарію підійде Linux VPS від tropic.host: можна почати з невеликої конфігурації та збільшити ресурси в міру додавання користувачів або доступу до API. Під час вибору тарифу корисніше інвестувати в RAM і якість мережі, ніж переплачувати за місткість сховища.

Встановлення SearXNG на VPS за допомогою Docker Compose

У прикладі використано Ubuntu 24.04 LTS, search.example.com, Valkey і Caddy. Спрямуйте DNS-запис A на сервер і відкрийте порти 80 та 443.

1. Встановіть Docker і створіть каталог

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 із доменом і випадковим секретом:

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 зменшує ризик, що боти перевантажать екземпляр і зовнішні пошукові системи швидше обмежать його IP-адресу.

4. Додайте пароль і HTTPS

Згенеруйте хеш для надійного пароля:

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

Вставте отриманий хеш у Caddyfile:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSERT_HASH_HERE
    }

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

Caddy зберігає хеш, а не пароль у відкритому вигляді. Замість Basic Auth сервіс також можна обмежити VPN.

5. Запустіть контейнери

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

Відкрийте https://search.example.com. Caddy автоматично отримає TLS-сертифікат, після чого браузер попросить ім'я користувача searchuser і пароль. Журнали SearXNG доступні цією командою:

sudo docker compose logs -f searxng

Що налаштувати після запуску?

Залиште лише корисні джерела, виберіть мову та параметр SafeSearch, а потім додайте SearXNG до браузера через OpenSearch. Для оновлення виконайте:

sudo docker compose pull
sudo docker compose up -d

Зробіть резервні копії .env, Caddyfile і каталогу searxng. Вмикайте JSON API лише за потреби та не залишайте його без пароля й обмеження частоти запитів.

Поширені помилки

ПомилкаНаслідокРішення
Зробити екземпляр публічнимБоти створюють навантаження, а IP частіше обмежуютьВикористовуйте пароль, VPN або єдиний вхід
Увімкнути надто багато джерелПовільні результати й тайм-аутиЗалиште кілька стабільних рушіїв
Вважати SearXNG власним індексомЧастина результатів зникає за збою зовнішніх системВраховуйте залежність від джерел
Очікувати повної анонімностіСайт призначення все одно може відстежувати браузерВикористовуйте захист браузера, VPN або Tor
Запускати без HTTPSЗапити й пароль передаються небезпечноВикористовуйте reverse proxy з TLS

Висновок

SearXNG об'єднує різні джерела в одному інтерфейсі, зменшує персоналізацію та надає єдиний пошуковий сервіс для браузера, скриптів або локального ШІ. Для ознайомлення достатньо публічного екземпляра. Для регулярного використання краще мати власний сервер із HTTPS, автентифікацією, limiter і кількома стабільними джерелами.

Почати можна з 1 GB RAM. Збільшуйте ресурси в міру зростання кількості користувачів, під час увімкнення API або запуску додаткових контейнерів.

Поширені запитання

SearXNG повністю анонімний?

Ні. Він приховує частину даних від зовнішніх пошукових систем, але адміністратор екземпляра може вести журнали. Після відкриття сайту діють його власні механізми відстеження.

SearXNG кращий за Google?

Він розв'язує іншу задачу. Google зазвичай швидший і сильніше персоналізує результати. SearXNG дає більше контролю, дозволяє об'єднувати джерела й менше залежить від профілю користувача.

Чи можна використовувати SearXNG без VPS?

Так. Можна скористатися публічним екземпляром, домашнім комп'ютером, NAS або мінісервером. VPS потрібен для цілодобового доступу з будь-якої мережі.

Скільки RAM потрібно?

Для одного користувача розумно почати з 1 GB. Для родини, команди, API або додаткових контейнерів краще мати 2–4 GB.

Чи можна підключити SearXNG до браузера або ШІ?

Так. Браузер може використовувати OpenSearch, а застосунки — HTTP API. Доступ до API слід захистити автентифікацією та limiter.