Tropic Host

SearXNG: собственная поисковая система без слежки на VPS

5 мин чтения
Tropic
SearXNG: собственная поисковая система без слежки на VPS

Language: ru

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, если администратор включил необходимые форматы.

Один экземпляр может работать поисковым бэкендом для внутренней панели, бота, исследовательского скрипта или локального ИИ-помощника. API следует открывать только после настройки аутентификации и ограничений частоты запросов.

Насколько приватен SearXNG

Что он делаетЧего он не делает
Не отправляет файлы cookie браузера внешним поисковым системамНе обеспечивает полной анонимности
Скрывает IP-адрес пользователя за IP-адресом сервераНе защищает пользователя после открытия сайта из результатов
Убирает стороннюю рекламу и часть параметров отслеживанияНе гарантирует, что владелец чужого сервера не ведёт журналы
Может проксировать изображенияНе заменяет VPN, Tor или защиту браузера

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

Собственный сервер даёт контроль над журналами, источниками и доступом, но не делает браузер анонимным.

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

ВариантПреимуществаОграничения
Публичный экземплярНичего не нужно устанавливатьДоверие владельцу, перегрузка, CAPTCHA
Домашний серверПолный контроль без аренды VPSУстройство должно работать постоянно; внешний доступ сложнее настроить
Собственный VPSРабота 24/7, домен, HTTPS, доступ с разных устройствКонтейнеры нужно обновлять, а безопасность — контролировать

Собственный экземпляр SearXNG полезен для семьи, команды, разработчика или локальных ИИ-инструментов. Для редких поисковых запросов проще использовать публичный экземпляр.

Какой VPS нужен SearXNG

Нагрузка зависит от количества пользователей, источников и одновременных запросов. Практические стартовые конфигурации:

СценарийCPURAMДиск
Один пользователь1 vCPU1 GB10 GB
Семья или небольшая команда2 vCPU2 GB20 GB
API и дополнительные сервисы2–4 vCPUот 4 GBот 30 GB

Большой диск не нужен. Качество сети, стабильный IP-адрес и запас оперативной памяти важнее.

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",
]

Ограничитель снижает риск того, что боты перегрузят экземпляр и из-за этого внешние поисковые системы раньше начнут ограничивать его 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Запросы и пароль передаются небезопасноИспользовать обратный прокси с TLS

Заключение

SearXNG объединяет разные источники в одном интерфейсе, уменьшает персонализацию и предоставляет единую поисковую службу для браузера, скриптов или локального ИИ. Для знакомства достаточно публичного экземпляра. Для регулярного использования лучше выбрать собственный сервер с HTTPS, аутентификацией, ограничителем и небольшим набором стабильных источников.

Начать можно с 1 GB RAM. Увеличивайте ресурсы по мере роста числа пользователей, при включении API или запуске дополнительных контейнеров.

FAQ

Обеспечивает ли SearXNG полную анонимность?

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

SearXNG лучше Google?

Он решает другую задачу. Google обычно работает быстрее и сильнее персонализирует результаты. SearXNG даёт больше контроля, позволяет объединять источники и меньше зависит от профиля пользователя.

Можно ли использовать SearXNG без VPS?

Да. Подойдёт публичный экземпляр, домашний компьютер, NAS или мини-сервер. VPS нужен для круглосуточного доступа из любой сети.

Сколько оперативной памяти требуется?

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

Можно ли подключить SearXNG к браузеру или ИИ?

Да. Браузер может использовать OpenSearch, а приложения — HTTP API. Доступ к API следует защищать аутентификацией и ограничителем запросов.