Как развернуть SearXNG самостоятельно в 2026 году: Search API, rate limits и TLS
Разверните SearXNG самостоятельно с корректными портами, persistent storage, HTTPS, secrets, backups и проверками обновлений. Узнайте, как исправить ситуацию, когда поисковые engines блокируют IP-адрес сервера.
Большинство инструкций по установке SearXNG заканчиваются на первом открытии страницы. Это слишком рано: engines могут заблокировать IP-адрес сервера, а в форматах может отсутствовать json, необходимый API-клиентам. Полноценный production-тест требует большего — отправить поисковые запросы в форматах HTML и JSON, убедиться, что результаты поступают от нескольких engines, и активировать настроенный limiter из тестового клиента.
Роль SearXNG проста: это metasearch engine и search API с фокусом на приватность. Его эксплуатационные требования не ограничиваются web-процессом, поэтому до появления реальных данных нужно явно определить dependency, сохраняемое состояние и public route.
Сначала определите критерии готовности SearXNG
Не позволяйте образу SearXNG случайно определить production-архитектуру. Образ запускает процесс на порту 8080, но storage, routing и внешние требования по-прежнему нуждаются в продуманном lifecycle. Сетевой контракт SearXNG предусматривает Redis или Valkey, если включены limiter и функции bot detection. Приватные endpoints оставляйте во внутреннем DNS, разрешайте только необходимые исходящие вызовы и выдавайте SearXNG service credential с ограниченными правами.
Deployment готов к более глубокому тестированию, когда он умеет отправлять поисковые запросы в форматах HTML и JSON, подтверждать участие нескольких engines в выдаче и активировать настроенный limiter из тестового клиента. Отслеживайте transaction в логах и контролируйте latency upstream engines, одновременные queries, parsing результатов и блокировки IP-адреса сервера. Эти наблюдения покажут, изолирует ли текущая topology нужный компонент.
Отделите заменяемые containers от постоянных данных
Подготовьте recovery manifest для SearXNG: settings.yml, конфигурацию limiter и все локальные plugins. Подключите /etc/searxng до bootstrap, запишите безопасные sample data и замените container, чтобы убедиться, что этот path действительно persistent. Сразу проверьте ownership и свободное место: подключённый, но недоступный для записи path фактически означает отсутствие persistence.
Храните backup в failure domain, отдельном от работающего сервера. Восстановите SearXNG из pinned image и убедитесь, что custom engines, formats, limiter rules и proxy settings вернулись, а известный query возвращает результаты от нескольких engines. Руководство по persistent volumes поможет преобразовать это упражнение в snapshot и retention policy.
Закройте временный доступ для настройки
Bootstrap credentials временные, а trust model — постоянная. В случае SearXNG следите за тем, чтобы не оставить example secret_key или не отключить rate controls на public endpoint: используйте non-default secret key, включите abuse controls и открывайте JSON только тогда, когда он нужен agent или приложению.
Обращайтесь с SEARXNG_SECRET с учётом его роли в SearXNG: храните sensitive values вне Git, документируйте последствия rotation и никогда не подставляйте public example в production. Запускайте image без ненужных Linux capabilities и открывайте только public application route. Действия администраторов должны быть видимы, но без записи secret values.
Зафиксируйте эталонный deployment SearXNG
Превратите smoke test SearXNG в повторяемую release command или короткий runbook. Его результат должен подтверждать следующее: отправлены поисковые запросы в форматах HTML и JSON, несколько engines участвуют в формировании выдачи, а настроенный limiter активирован из тестового клиента. Вместе с результатом сохраните application version, container digest, route hostname и идентификатор test data.
Запускайте эту же проверку после обычной замены container и после восстановления settings.yml, конфигурации limiter и всех локальных plugins в другом окружении. Restore считается успешным, когда custom engines, formats, limiter rules и proxy settings вернулись, а известный query возвращает результаты от нескольких engines. Сравните timing и consumption, связанные с latency upstream engines, одновременными queries, parsing результатов и блокировками IP-адреса сервера; существенное изменение требует расследования, даже если итоговая проверка всё ещё завершается успешно.
Затем выполните безопасную проверку сбоя: временно запретите тестовой identity доступ к Redis или Valkey, если включены limiter и функции bot detection. Убедитесь, что SearXNG сообщает об ошибке и возвращается в нормальное состояние без разрушительных ручных изменений. Сохраните только необходимый redacted log excerpt. Этот gate из четырёх частей охватывает startup, persistence, recovery и обработку сбоев.
Запустите первый instance, максимально похожий на production
Используйте container как заменяемый runtime, а не как место хранения истины.
docker run -d \
--name searxng \
--restart unless-stopped \
-p 127.0.0.1:8080:8080 \
-v searxng-data:/etc/searxng \
-e SEARXNG_SECRET=replace-with-a-long-random-value \
searxng/searxng:latest
Добавьте проверенные connection settings для Redis или Valkey, если включены limiter и функции bot detection; для приватных сервисов используйте private names. До публикации сервиса проверьте user container, writable paths и bound listener. Выполните полный сценарий — отправьте поисковые запросы в форматах HTML и JSON, убедитесь, что результаты поступают от нескольких engines, и активируйте настроенный limiter из тестового клиента — и сохраните точную image reference, с которой был получен результат.
Не позволяйте успешной работе proxy скрыть сбой приложения
Откройте для SearXNG один HTTPS hostname, а raw port 8080 оставьте приватным. Настройте server base_url и trusted proxy headers для HTTPS. Это не позволит browsers и API-клиентам узнавать два конкурирующих адреса.
Из чистого клиента выполните эталонный transaction и изучите первый запрос, завершившийся ошибкой. Если проблема связана с DNS или TLS, воспользуйтесь руководством по custom domain. Считайте ситуацию «engines block the server IP or formats omit json for API clients» отдельной диагностикой приложения после подтверждения корректной работы route.
Логи, которые помогают понять следующий шаг
Первый полезный operational metric для SearXNG — возможность отправить поисковые запросы в форматах HTML и JSON, подтвердить участие нескольких engines в выдаче и активировать настроенный limiter из тестового клиента. Дополните его сигналами saturation для latency upstream engines, одновременных queries, parsing результатов и блокировок IP-адреса сервера. Probe, проверяющий только процесс, не должен вызывать дорогие dependencies или перезапускать container из-за кратковременной недоступности upstream.
Считайте upgrades изменениями данных: syntax settings, definitions engines и поведение limiter могут измениться, поэтому configuration и image changes следует deploy как единый review. Фиксируйте версии, репетируйте процедуру на restored state и сохраняйте предыдущий image доступным, пока rollback остаётся возможным. Если engines блокируют IP-адрес сервера или в форматах отсутствует json для API-клиентов, сохраните логи до restart — обычно именно в них находится причинное сообщение.
Подключите SearXNG к lifecycle Dockup
Platform layer для SearXNG включает port 8080, ingress, TLS, runtime configuration, storage и доступность dependencies. Dockup может воспроизвести эти компоненты для собственной инфраструктуры или сервера, который подключает клиент.
Затем оператор завершает product layer: настраивает server base_url и trusted proxy headers для HTTPS; применяет это access rule — использовать non-default secret key, включить abuse controls и открывать JSON только тогда, когда он нужен agent или приложению; и выполняет сценарий «отправить поисковые запросы в форматах HTML и JSON, подтвердить участие нескольких engines в выдаче и активировать настроенный limiter из тестового клиента». Запись этого теста вместе с deployment помогает не путать автоматический provisioning с готовностью приложения.
Часто задаваемые вопросы
Что нужно SearXNG для production deployment?
Направьте SearXNG container на port 8080 через один HTTPS origin. Supporting network requirement — Redis или Valkey, если включены limiter и функции bot detection. Не объявляйте SearXNG готовым, пока не сможете отправить поисковые запросы в форматах HTML и JSON, подтвердить участие нескольких engines в выдаче и активировать настроенный limiter из тестового клиента.
Какие данные SearXNG нужно включить в backup?
Сохраняйте /etc/searxng и добавьте settings.yml, конфигурацию limiter и все локальные plugins в единый recovery manifest. Чистый restore SearXNG считается успешным только тогда, когда custom engines, formats, limiter rules и proxy settings вернулись, а известный query возвращает результаты от нескольких engines.
Требуется ли SearXNG HTTPS за reverse proxy?
Используйте HTTPS для public origin SearXNG, а port 8080 оставьте во внутреннем route. Корректно примените настройку SearXNG: задайте server base_url и trusted proxy headers для HTTPS. В SearXNG HTTPS защищает credentials и пользовательский контент при передаче и обеспечивает согласованное поведение клиентов, зависящее от origin.
Как тестировать upgrade SearXNG?
Восстановите текущее состояние SearXNG в isolated deployment, примените candidate version и повторите acceptance transaction. Обратите особое внимание на то, что syntax settings, definitions engines и поведение limiter могут измениться, поэтому configuration и image changes следует deploy как единый review. Сохраняйте предыдущий SearXNG image, пока не будут понятны границы его data migration и rollback.
