SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-08-26

Searx или SearXNG: что выбрать и почему Searx неактивен

Оригинальный проект Searx не обновляется с 2023 года. Узнайте, почему стоит использовать SearXNG, где искать актуальные файлы конфигурации и как избежать ошибок при развертывании.

Searx или SearXNG: что выбрать для установки?

Searx и SearXNG — это два разных проекта с почти идентичными названиями, но обновления получает только один из них. Устанавливайте SearXNG. В оригинальный проект Searx не вносилось изменений с апреля 2023 года, а в его файле README прямо указано: "Searx больше не поддерживается".

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

Что такое Searx и откуда появился SearXNG

Searx — это метапоисковая система. Она не хранит собственный индекс. Система принимает ваш запрос, перенаправляет его в другие поисковые сервисы, такие как Bing, DuckDuckGo или Wikipedia, а затем объединяет полученные данные на одной странице результатов. Преимущество заключается в том, что эти сервисы видят адрес сервера, а не ваш собственный. Цена этого — необходимость обслуживания. Каждый поисковый движок представляет собой небольшой фрагмент кода, который парсит HTML или API стороннего ресурса, поэтому движок ломается при любых изменениях на стороне источника. Работоспособность метапоисковой системы напрямую зависит от людей, которые исправляют модули её движков.

Репозиторий searx был создан в октябре 2013 года. В апреле 2021 года бывший мейнтейнер запустил SearXNG как форк этого проекта. Аббревиатура "NG" означает next generation (следующее поколение). В файле README самого проекта searx оба проекта описаны рядом, и это описание остается самым точным резюме причин разделения:

SearXNG — это форк searx, созданный бывшим мейнтейнером searx.
SearXNG использует модель rolling releases, зависимости обновляются чаще, а движки исправляются быстрее.

Разногласия, приведшие к созданию форка, касались диагностики. В searx считалось, что инстанс не должен хранить данные об использовании, и настройки по умолчанию прямо об этом заявляют: enable_stats: False # activate /stats page - note: it may leak usage data. В SearXNG приняли противоположное решение и включили enable_metrics: true в настройки по умолчанию. Именно эти метрики заполняют графики времени отклика и страницы ошибок, которые позволяют легко обнаружить и исправить сломанный движок. Обе позиции имеют право на существование. Только одна из них продолжила выпускать обновления кода.

Мертв ли Searx? Как проверить самостоятельно

«Мертв» — это не статус, который отображает GitHub, поэтому проанализируйте два существующих сигнала и сделайте выводы. Первый — находится ли репозиторий в архиве и когда в него в последний раз вносились изменения (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'

22 августа 2026 года первая команда выводит false и 2026-05-14T10:02:22Z. Вторая выводит false и временную метку дня, когда вы ее запускаете. Обратите внимание на первое значение. Репозиторий searx не архивирован, и никто не закрывал доступ, поэтому вопрос периодически возникает снова.

pushed_at сам по себе является слабым сигналом, так как он меняется при любом push в любую ветку, включая изменение одной строки в документации. Вместо этого изучите список коммитов.

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

По состоянию на август 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  Bump selenium from 4.7.2 to 4.8.3 (#3490)

Читайте список снизу вверх. Обычная работа прекратилась в апреле 2023 года. Коммит за сентябрь 2023 года — это уведомление, которое мейнтейнеры добавили в README. Единственный коммит с тех пор касается документации, так как оригинальный автор перешел к работе над Hister — инструментом поиска, который индексирует выбранные вами страницы и файлы вместо запросов к другим поисковым системам. Это другая концепция, полезная, если вам на самом деле нужно персональное поисковое решение для вашего контента.

Второй сигнал — это упаковка (packaging), от которой тихо зависят большинство старых руководств.

  • В PyPI есть один релиз searx, версия 0.17.0, загруженный в июле 2020 года. pip install searx выполняется успешно и предоставляет код, написанный за девять месяцев до появления форка.
  • Debian поставлял searx 1.1.0 в Debian 12 (bookworm) и до сих пор сохраняет его в unstable. Пакет был удален из testing в октябре 2023 года, поэтому в Debian 13 (trixie) пакета searx нет вовсе.
  • Ubuntu в последний раз поставляла его в версии 22.04 (версия 1.0.0). В Ubuntu 24.04 команда sudo apt install searx завершается ошибкой E: Unable to locate package searx.
  • searx.space, каталог публичных инстансов, на который проект всегда ссылался, теперь содержит только инстансы SearXNG.

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

Что изменилось для нового экземпляра

Файл настроек перемещен и теперь является оверлеем

В 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 — это строка, которая меняет ваш подход к работе. С ней ваш файл содержит только переопределения, а все параметры, которые вы не указали, берутся из значений по умолчанию, поставляемых в пакете. Без этой строки ваш файл должен описывать всю конфигурацию целиком, движок за движком. Именно так пользователи получают экземпляр, который запускается без ошибок, но ничего не находит. Старый файл настроек Searx, скопированный по этому пути, является полной конфигурацией с другими именами ключей, поэтому он идет по второму пути и работает некорректно.

Секретный ключ останавливает процесс

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, поэтому экземпляр может нормально работать в сессии отладки, а затем отказываться запускаться под управлением systemd или в контейнере. Если контейнер перезапускается в цикле при наличии этой строки в docker compose logs, значит, срабатывает данная проверка, а не поврежден образ.

Ограничитель — новый компонент, и ему нужен Valkey

В Searx не было встроенного ограничения частоты запросов (rate limiting). Публичные экземпляры Searx использовали перед собой отдельные сервисы: filtron для фильтрации запросов и morty для проксирования контента результатов. Оба этих репозитория не обновлялись с 2023 года.

SearXNG выполняет эту работу самостоятельно. Ограничение частоты и обнаружение ботов реализованы через limiter, который включается параметром server.limiter. В стандартных настройках он имеет значение false, а в шаблоне установщика — true; для хранения счетчиков ему требуется база данных Valkey. Valkey — это форк 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 включает более строгое обнаружение ботов, необходимое для публичного экземпляра, включая метод проверки через link token. Видимый результат заключается в том, что на некоторые запросы вместо результатов возвращается HTTP 429, включая ваши собственные запросы, если вы используете скрипты для обращения к экземпляру. Этому посвящена отдельная страница: почему экземпляр SearXNG отвечает 429 Too Many Requests.

Движки приостанавливают работу, а тайм-ауты велики

Когда внешний сервис отвечает страницей с CAPTCHA или ошибкой ограничения частоты, SearXNG вызывает типизированное исключение и перестает обращаться к этому движку на определенное время, вместо того чтобы пытаться повторить запрос до блокировки. Значения по умолчанию находятся в searx/settings.yml в разделе search.suspended_times. Это опубликованные значения 6 по состоянию на август 2026 года:

ChartSearXNG default engine suspension times, in seconds
The data behind this chart
[
  {
    "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-адреса экземпляра.

Пока движок приостановлен, страница результатов пропускает его и сообщает об этом в боковой панели в блоке «Сообщения от поисковых систем», а /stats/errors перечисляет, что именно вызвало сбой. Если новый экземпляр возвращает мало результатов, обычно это означает именно такую ситуацию, а не поломку установки.

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, так как маршрут поиска вызывает flask.abort(403), когда запрашиваемый формат не указан в search.formats. Добавьте формат и перезапустите сервис:

search:
  formats:
    - html
    - json

В файле настроек searx вообще не было ключа formats, поэтому его JSON-вывод был доступен по первому требованию. Все скрипты и фрагменты кода той эпохи исходят из этого же предположения, а при ошибке возвращается просто 403 без объяснения причин. Если вы подключаете экземпляр к инструментам автоматизации, предоставление агенту конечной точки SearXNG для поиска начинается именно с этой настройки.

Почему скопированные руководства по Searx не работают

Каждая из этих строк встречается в руководствах, которые до сих пор находятся в поисковой выдаче, и каждая из них либо не работает, либо вводит в заблуждение при текущей установке.

  • sudo apt install searx на Ubuntu 24.04 останавливается на E: Unable to locate package searx, так как пакет в последний раз был выпущен в 22.04.
  • pip install searx выполняется успешно и устанавливает версию 0.17.0 от июля 2020 года. Нигде нет предупреждения, что эта версия вышла до форка.
  • git clone https://github.com/asciimoo/searx всё ещё работает, так как GitHub перенаправляет со старого имени владельца, и вы получаете дерево файлов от апреля 2023 года.
  • Шаги по редактированию searx/settings.yml в исходном дереве ничего не меняют в SearXNG, который считывает /etc/searxng/settings.yml.
  • Шаги по установке filtron или morty — это пересборка компонентов, которые уже есть в SearXNG.
  • URL redis: для ограничителя (limiter) устарел на одно переименование относительно текущего ключа valkey:.

Руководства по SearXNG также устаревают, и URL для клонирования — самый быстрый способ определить актуальность. Файлы compose раньше находились в отдельном репозитории searxng-docker. Этот репозиторий был архивирован в марте 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, виртуальное окружение в /usr/local/searxng и службу uWSGI, что является эталонной настройкой в документации SearXNG. Более подробное пошаговое руководство по этому пути доступно в разделе установка SearXNG на собственный VPS.

Публичный экземпляр или собственный экземпляр

Публичный экземпляр — это чужой сервер, который завершает ваше TLS (transport layer security) соединение, поэтому программное обеспечение на нем считывает ваш запрос как открытый текст. Собственная документация SearXNG прямо ставит вопрос доверия: вы должны доверять администратору, и вы не можете знать, регистрируются ли запросы, агрегируются ли они или передаются третьим лицам. Видимый список короток и полон. Стек оператора может видеть текст запроса, время, IP-адрес, с которого приходит запрос, user agent браузера и cookie с настройками. Оператор также контролирует код, поэтому любой патч, который он применяет, выполняется при каждом вашем поиске.

Одна настройка по умолчанию упрощает логирование по неосторожности. Searx отправлял поисковые запросы через POST. SearXNG поставляется с method: "GET", с комментарием о том, что POST сохраняет поисковые запросы вне истории браузера, но вызывает проблемы с удобством использования. При использовании GET запрос находится в строке запроса, поэтому он по умолчанию попадает в access log reverse proxy и в историю браузера. Это обычное поведение веб-сервера. Об этом стоит знать, прежде чем выбирать, на чьем сервере это происходит.

Запуск собственного экземпляра переносит доверие, а не устраняет его. Вы контролируете код и логи, и если вы не хотите публиковать hostname или TLS-сертификат для однопользовательского сервера, доступ к нему через v3 onion service позволяет скрыть экземпляр от публичного DNS, сохраняя при этом возможность доступа из любого места. Взамен вышестоящие поисковые системы видят один адрес для всех ваших запросов, и на однопользовательском экземпляре каждый запрос отслеживается до вас, вместо того чтобы смешиваться с толпой. Загруженный публичный экземпляр дает вам эту толпу и избавляет вас от ведения логов. Выберите то свойство, которое для вас важнее, а если вы хотите сначала ознакомиться с полным списком рисков, безопасен ли SearXNG для использования подробно разбирает этот вопрос.

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

Если у вас уже запущен экземпляр Searx

Ничего не сломается в день прочтения этой инструкции. Сервер продолжит работать до тех пор, пока очередное изменение в апстриме не выведет из строя какой-либо движок, после чего он останется нерабочим. Запланируйте миграцию и не переносите файл конфигурации целиком. Начните с шаблона SearXNG, а затем добавьте только те параметры, которые вы осознанно меняли: имя экземпляра, safe_search, названия включенных или отключенных движков и настройки интерфейса по умолчанию. Имена движков и опции в форке изменились, поэтому сверяйте каждый параметр с актуальной документацией, а не полагайтесь на то, что ключ всё ещё существует. Правила Filtron и URL для morty не имеют аналогов, так как эти функции теперь встроены в само приложение.

Запустите новый экземпляр на другом порту, пока старый всё ещё работает. Миграция прошла успешно, если главная страница возвращает код 200, поиск выдает результаты более чем от одного движка, а /stats/errors либо пуст, либо содержит только понятные вам ошибки. После этого переключите reverse proxy и остановите старую службу.

FAQ

Умер ли Searx в 2026 году?

Репозиторий не находится в архиве, поэтому вы можете клонировать его, но проект больше не поддерживается. Последний коммит в коде был сделан в апреле 2023 года, а в README указано: "Searx is no longer maintained". Проверьте это самостоятельно с помощью curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at', а затем изучите недавние сообщения к коммитам, так как дата пуша может относиться только к правкам документации. Для метапоисковой системы отсутствие поддержки означает постепенное ухудшение качества результатов, так как каждый модуль поиска зависит от стороннего сайта, который постоянно меняется.

Можно ли до сих пор установить Searx через apt или pip?

На современных системах — нет, а там, где это возможно, — не имеет смысла. Последний раз Ubuntu включала searx в состав дистрибутива в версии 22.04 (версия 1.0.0), поэтому sudo apt install searx в 24.04 возвращает E: Unable to locate package searx. В Debian 12 была версия 1.1.0, но в октябре 2023 года пакет был удален из тестируемой ветки, поэтому в Debian 13 его нет. В PyPI до сих пор доступна версия 0.17.0 от июля 2020 года, которая старше самого форка. Устанавливайте SearXNG.

Будет ли мой старый файл settings.yml работать в SearXNG?

Нет. Скопируйте значения, а не сам файл. SearXNG считывает /etc/searxng/settings.yml и ожидает наличие use_default_settings: true в начале файла, поэтому ваш файл работает как наложение поверх стандартных настроек. Старый файл searx — это полная конфигурация с другими именами ключей; в нем отсутствуют limiter, блок valkey и список formats. Начните с шаблона по адресу utils/templates/etc/searxng/settings.yml и добавляйте свои изменения по одному.

Почему мой экземпляр SearXNG выдает меньше результатов, чем публичный?

Некоторые поисковые движки временно приостановлены. Когда движок отвечает капчей или страницей с ограничением частоты запросов, SearXNG прекращает отправлять к нему запросы на определенное время: от 180 секунд при обычном отказе до 1,296,000 секунд при получении капчи Cloudflare. Страница результатов сообщает об этом в разделе "Messages from the search engines", а /stats/errors отображает список ошибок с причинами. IP-адреса дата-центров блокируются быстрее, чем домашние подключения, поэтому новый VPS-экземпляр сталкивается с этим почти сразу.

Что лучше: использовать публичный экземпляр SearXNG или запустить свой?

Запускайте свой, если хотите контролировать код и логи, но будьте готовы к тому, что внешние поисковые системы будут видеть один IP-адрес для всех ваших запросов. Используйте публичный экземпляр, если для вас важнее смешивать свои запросы с запросами других пользователей, чем знать, что именно логируется. На публичном экземпляре оператор видит текст запроса, время, ваш IP-адрес и User-Agent, а также может изменить код в любой момент. Заявленную политику логирования невозможно проверить извне.