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, поэтому проанализируйте два существующих сигнала и сделайте вывод. Первый — находится ли репозиторий в архиве и когда в него в последний раз вносились изменения.
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'10 октября 2026 года первая команда выводит false и 2026-05-14T10:02:22Z. Вторая выводит false и недавнюю метку времени, обычно за последние день или два. Обратите внимание на первое значение. Репозиторий searx не архивирован, и никто не закрывал доступ, поэтому вопрос продолжает возникать.
pushed_at сам по себе является слабым сигналом, так как он меняется при пуше в любую ветку, включая изменение одной строки в документации. Вместо этого изучите список коммитов.
curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
| jq -r '.[] | .commit.committer.date[:10] + " " + (.commit.message | split("\n")[0])'По состоянию на 10 октября 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 года. Коммит за сентябрь 2023 года — это уведомление, добавленное мейнтейнерами в README. Единственный коммит с тех пор касается документации, так как оригинальный автор переключился на Hister — инструмент поиска, который индексирует выбранные вами страницы и файлы вместо запросов к другим поисковикам. Это другая концепция, и она полезна, если вам на самом деле нужен персональный поисковый движок по вашему собственному контенту.
Второй сигнал — это упаковка, и именно от нее молчаливо зависят большинство старых руководств.
- PyPI содержит двадцать релизов
searx, от 0.1.2 в январе 2014 года до 0.17.0 в июле 2020 года, и каждый из них до сих пор доступен для загрузки.pip install searxвыполняется успешно и устанавливает самый новый из них, 0.17.0 — это код, написанный за девять месяцев до появления форка. - 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/0use_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 года: последний коммит в filtron был в том месяце, а в morty — в апреле 2021 года.
SearXNG выполняет эту работу самостоятельно. Ограничение частоты и обнаружение ботов реализованы через limiter, который включается параметром server.limiter. В поставляемых настройках по умолчанию он имеет значение false, а в шаблоне установщика — true; для хранения счетчиков ему нужна база данных Valkey. Valkey — это форк Redis, который доступен в репозиториях Ubuntu 24.04:
sudo apt install -y valkey-serverserver:
limiter: true
valkey:
url: valkey://localhost:6379/0Руководства, написанные до этого переименования, предлагают настраивать блок redis:, поэтому копируйте имя ключа из актуальной документации по limiter. Тонкая настройка выполняется во втором файле, /etc/searxng/limiter.toml, а server.public_instance: true включает более строгую проверку ботов, необходимую для публичного экземпляра, включая метод с токеном ссылки. Видимый результат заключается в том, что на некоторые запросы вместо результатов возвращается HTTP 429, включая ваши собственные запросы, если вы используете скрипты для обращения к экземпляру. Этому посвящена отдельная страница: почему экземпляр SearXNG отвечает 429 Too Many Requests.
Движки приостанавливают работу, а тайм-ауты велики
Когда вышестоящий сервис отвечает страницей с CAPTCHA или сообщением об ограничении частоты, SearXNG вызывает типизированное исключение и перестает обращаться к этому движку на заданное время, вместо того чтобы пытаться повторить запрос до блокировки. Значения по умолчанию находятся в searx/settings.yml в разделе search.suspended_times. Это опубликованные значения 6 по состоянию на октябрь 2026 года:
Данные, на которых построен график
[
{
"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 экземпляра.
Пока движок приостановлен, страница результатов пропускает его и сообщает об этом в боковом блоке под названием "Сообщения от поисковых систем", а /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 перенаправляет запросы со старого имени владельца. Команда загружает текущую ветку по умолчанию, где документация от мая 2026 года ссылается на код приложения, разработка которого прекратилась в апреле 2023 года.- Действия по редактированию
searx/settings.ymlв дереве исходного кода никак не влияют на SearXNG, так как он считывает/etc/searxng/settings.yml. - Установка filtron или morty — это попытка пересобрать компоненты, которые уже включены в состав SearXNG.
- URL
redis:для ограничителя запросов устарел и не соответствует текущему ключу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 и в историю браузера. Это обычное поведение веб-сервера. Об этом стоит знать, прежде чем выбирать, на чьем сервере это происходит.
Запуск собственного экземпляра не устраняет необходимость доверия, а переносит её. Вы контролируете код и журналы. Если вы не хотите публиковать имя хоста или TLS-сертификат для отдельного пользовательского сервера, доступ к нему через onion service v3 оставляет экземпляр вне публичной DNS, но позволяет подключаться к нему из любой точки. Взамен upstream-движки видят один адрес для всех ваших поисковых запросов. В экземпляре для одного пользователя каждый запрос можно связать с вами, а не скрыть среди запросов других пользователей. Загруженный публичный экземпляр даёт такую анонимизацию и избавляет вас от хранения журналов. Выберите свой приоритет. Если сначала нужен полный список рисков, ознакомьтесь с материалом насколько безопасно использовать 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 по-прежнему хранит все релизы searx, но самый новый — 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-адрес и User-Agent, а также может изменить код в любой момент. Заявленную политику логирования невозможно проверить извне.