Установка SearXNG: быстро и приватно

О чём эта инструкция
В этой статье вы найдёте пошаговое руководство по установке и запуску SearXNG на Debian 11 (пример — VPS от DigitalOcean). Материал включает практические команды, конфигурацию Nginx, включение SSL через Certbot, рекомендации по безопасности и чек-листы для администратора. Если вы хотите минимально собирать личные данные при поиске — это решение для вас.
Сопутствующие поисковые форматы и альтернативные подходы также описаны ниже.
Почему стоит установить SearXNG
Поисковые системы делают поиск по вебу удобным, но часто это платный удобством вашей приватностью: крупные компании анализируют запросы, чтобы строить подробные профили пользователей.

Если вы цените анонимность — например, журналисты, активисты или просто заботливые о приватности пользователи — частный поисковый инстанс помогает исключить привязку запросов к вашей личности.

Самостоятельный хостинг SearXNG гарантирует, что логами сервер будет управлять только владелец инстанса.
Также читайте: 4 способа, как Google отслеживает вас и как это остановить
Что потребуется
Перед началом подготовьте следующее:
- Полностью квалифицированное доменное имя (FQDN) — например example.com.
- Сервер, доступный извне: статический публичный IP или арендованный VPS (пример — DigitalOcean droplet).
- root-доступ или привилегированный sudo-пользователь на сервере.
В примере ниже подразумевается Debian 11 на VPS.

Короткая методология установки (мини-метод)
- Создать отдельного пользователя для SearXNG.
- Установить системные зависимости (nginx, uwsgi, certbot и т.д.).
- Клонировать репозиторий SearXNG и запустить штатный инсталлятор.
- Настроить веб-сервер (Nginx) для проксирования к Unix-сокету.
- Выпустить SSL-сертификат через Let’s Encrypt.
- Проверить работоспособность и настроить мониторинг/логи.
Установка зависимостей SearXNG
Рекомендуется изоляция: создайте системного пользователя для процесса SearXNG. Это уменьшит риск доступа к другим сервисам и файлам сервера.
Примеры команд (скорректированы для корректного выполнения):
# Создание пользователя searx с домашней директорией и оболочкой bash, добавление в группу sudo
sudo useradd -s /bin/bash -d /home/searx -m -G sudo searx
sudo passwd searx
Переключитесь на нового пользователя и установите требуемые пакеты:
# Выполните от root или sudo-пользователя
su - searx
# Установка пакетов (выполнять от sudo)
sudo apt update
sudo apt install git nginx iptables iptables-persistent ufw certbot python3-certbot-nginx python3-venv build-essential -y
Пояснения:
- python3-venv и build-essential полезны для виртуального окружения и сборки зависимостей Python.
- nginx выступает как обратный прокси и веб-сервер.
Настройка брандмауэра (firewall)
Настройка firewall не обязательна, но помогает ограничить доступ к портам и защитить сервер от нежелательных подключений.
# iptables: разрешаем входящий HTTP/HTTPS
sudo iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
# ufw: упрощённая настройка
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Короткие пояснения:
- netfilter-persistent сохраняет правила iptables между перезагрузками.
- ufw удобно использовать как простой интерфейс для netfilter.
Важно: если вы управляете сервером через SSH, убедитесь, что правило для порта SSH (обычно 22) не блокируется.
Клонирование и установка SearXNG
Официальный репозиторий содержит утилиту установки, которая автоматизирует большую часть задач.
# Клонируем репозиторий и переходим в каталог
git clone https://github.com/searxng/searxng searxng && cd searxng
# Запускаем инсталлятор (выполняется с sudo)
sudo -H ./utils/searxng.sh install all
Во время установки скрипт может запрашивать подтверждение на установку дополнительных пакетов — отвечайте “Y” для продолжения.

Совет: если вы планируете кастомизировать плагины или подключать специфичные движки — сначала установите всё в тестовом окружении.
Конфигурация SearXNG
SearXNG сам по себе — это служба, принимающая запросы и возвращающая результаты. Для взаимодействия с браузером нужен веб-сервер (Nginx или Apache). В этой инструкции — настройка для Nginx.

Настройка Nginx
Создайте новый конфиг в /etc/nginx/sites-available/:
sudo nano /etc/nginx/sites-available/searxngПример базовой серверной конфигурации для проксирования к Unix-сокету uwsgi:
server {
# Порты
listen 80;
listen [::]:80;
# Домен
server_name yetanothersearxserver.xyz;
# Логи: /dev/null — чтобы не сохранять запросы на диск
access_log /dev/null;
error_log /dev/null;
# Проксирование к uwsgi (socket), путь зависит от инсталляции
location / {
uwsgi_pass unix:///usr/local/searxng/run/socket;
include uwsgi_params;
uwsgi_param HTTP_HOST $host;
uwsgi_param HTTP_CONNECTION $http_connection;
# см. flaskfix.py — передаём схему и путь
uwsgi_param HTTP_X_SCHEME $scheme;
uwsgi_param HTTP_X_SCRIPT_NAME /searxng;
# см. limiter.py — реальные IP клиента
uwsgi_param HTTP_X_REAL_IP $remote_addr;
uwsgi_param HTTP_X_FORWARDED_FOR $proxy_add_x_forwarded_for;
}
}- Параметр listen указывает порты, которые прослушивает Nginx.
- server_name должен содержать ваш FQDN.
- access_log и error_log можно направить в /dev/null, если вы не хотите хранить логи. Рекомендуется настроить ротацию логов для продакшена.
После сохранения активируйте сайт и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/searxng /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Включение SSL (Let’s Encrypt) и активация SearXNG
Шифрование HTTPS критично для приватных поисковых инстансов — оно защищает запросы от перехвата по сети.

Выпуск сертификата через certbot + nginx:
sudo certbot --nginx -d yetanothersearxserver.xyzКоманда настроит редиректы и обновит конфигурацию Nginx.
Затем перезагрузите сервисы:
sudo systemctl reload nginx
sudo service uwsgi restart searxngЕсли uwsgi установлен как systemd-сервис, можно использовать systemctl restart uwsgi@searxng или другую единицу, соответствующую вашей инсталляции.
Тестирование и базовая проверка
- Откройте в браузере https://ваш-домен/ и убедитесь, что загружается интерфейс SearXNG.
- Выполните несколько поисковых запросов и проверьте поведение (время ответа, источники результатов).
- Просмотрите текущие процессы: systemctl status searxng или ps aux | grep searx.
- Если что-то не работает, смотрите логи uwsgi и nginx (если вы не сбрасываете их в /dev/null).
Часто задаваемые вопросы
Можно ли обновлять SearXNG после установки?
Да. Обновление производится утилитой из репозитория. Пример команды:
sudo /home/$USER/searxng/utils/searxng.sh instance updateПоявилось сообщение, что Redis недоступен. Упала ли установка?
Нет — установка могла завершиться, но отсутствие Redis повлияет на стабильность. Redis используется для кеша и анти-бота. Рекомендуется установить и запустить Redis и перезапустить инстанс. Если нужно удалить и переустановить:
sudo /home/$USER/searxng/utils/searxng.sh remove all
sudo systemctl --version # проверяем, что используется systemdКак увидеть текущее состояние SearXNG?
Встроенная утилита инспекции помогает понять, что делает инстанс:
sudo /home/$USER/searxng/utils/searxng.sh instance inspectОна покажет логи и статус подчинённых процессов.
Роли и чек-листы (кто что делает)
Администратор сервера:
- Подготовить домен и DNS A/AAAA записи.
- Обновить систему и установить зависимости.
- Настроить firewall и бэкапы.
- Настроить мониторинг и ротацию логов.
Разработчик / интегратор:
- Проверить конфигурации движков и плагинов SearXNG.
- Настроить виртуальное окружение Python при необходимости.
- Тестировать интеграции с внешними поисковыми движками.
Обычный пользователь:
- Проверить, что сайт открывается по HTTPS.
- Проверить корректность результатов и отсутствие персонализации.
Критерии приёмки
- Сайт открывается по HTTPS и отвечает на поисковые запросы в браузере.
- Запросы не записываются в системные логи (если вы указали /dev/null) или логируются в управляемые файлы с ротацией.
- Службы uwsgi и nginx работают и перезапускаются без ошибок.
- Certbot успешно обновляет сертификаты (cron/timer создан автоматом).
Техническая галерея пограничных случаев (edge cases)
- NAT с динамическим IP: используйте DDNS или разверните на VPS с публичным IP.
- Ограниченные ресурсы (Raspberry Pi): уменьшите количество одновременных воркеров uwsgi и используйте swap с осторожностью.
- Ограничения поставщика хостинга: некоторые хосты блокируют исходящие запросы к целевым поисковым движкам — проверьте политику провайдера.
Безопасность и приватность
- Минимизируйте хранение логов — отправляйте их в централизованный сервис с шифрованием или в /dev/null для полной «безлоговой» конфигурации.
- Используйте fail2ban или rate-limiter в Nginx для защиты от брутфорса и бот-атак.
- Подумайте об изоляции сети (например, запуск SearXNG в LXC/контейнере) для дополнительной безопасности.
План отката и runbook при инциденте
- Проблема: SearXNG не отвечает/падает.
- Проверить статус systemd: sudo systemctl status searxng, sudo journalctl -u searxng -b
- Проверить логи nginx: sudo tail -n 200 /var/log/nginx/error.log
- Проверить доступность unix-сокета/uwsgi: ls -l /usr/local/searxng/run/socket
- Если проблема связана с недоступностью Redis или зависимостей — восстановить из резервной копии или выполнить sudo /home/$USER/searxng/utils/searxng.sh remove all и заново install all на тестовом инстансе.
- В экстренных случаях отключить сайт: sudo nginx -s stop, затем откат конфигураций из резервной копии.
Тест-кейсы и критерии приёмки
- Поисковый запрос возвращает результаты менее чем за 3 секунды при нормальной нагрузке.
- При перезапуске uwsgi инстанс восстанавливается и обслуживает запросы под тем же FQDN.
- Certbot автоматически продлевает сертификаты (проверяется вручную за 30 дней до окончания).
Короткий глоссарий (1 строка на термин)
- FQDN — полное доменное имя, указывающее на ваш сервер (например, example.com).
- VPS — виртуальный частный сервер, арендуемый в облаке.
- uwsgi — интерфейс и сервер для запуска Python-приложений под Nginx.
- certbot — утилита для автоматического получения сертификатов Let’s Encrypt.
Пример дерева решений для выбора хоста (Mermaid)
flowchart TD
A[Есть ли статический IP?] -->|Да| B[Можно хостить на домашнем сервере]
A -->|Нет| C[Использовать VPS]
B --> D{Ресурсы Raspberry Pi?}
D -->|Достаточно| E[Развернуть SearXNG локально]
D -->|Недостаточно| C
C --> F[Арендовать VPS 'Debian/Ubuntu']
F --> G[Следовать этой инструкции]Альтернативы и когда SearXNG не подходит
- Если вам нужен поисковый сервис с полным контролем индексации и собственным краулингом — SearXNG не заменит полнофункциональный поисковый движок (например, ElasticSearch с кастомным краулером).
- Для корпоративного использования с требованиями к SLA и масштабированию лучше рассмотреть решения с балансировкой нагрузки и HA.
Советы по миграции и обновлениям
- Тестируйте обновления на стейджинг-инстансе перед продакшеном.
- Используйте систему контроля версий для конфигураций (git для /etc/nginx и конфигов searxng).
- Планируйте окна обслуживания и предупреждайте пользователей о перезапусках.
Приватность и соответствие требованиям (GDPR и проч.)
SearXNG по умолчанию больше ориентирован на приватность, но ответственность за соблюдение правил обработки данных остаётся за владельцем сервера. Если вы обрабатываете персональные данные граждан ЕС, убедитесь, что держите минимальные логи и реализуете запрашиваемые правки/удаления по требованиям GDPR.
Заключение и краткий план действий
SearXNG — практичное решение для приватного поиска: оно лёгкое, гибкое и совместимо с небольшими инстансами. Следуйте плану: подготовьте домен, установите зависимости, запустите инсталлятор, настройте Nginx и SSL, проведите тесты и настройте мониторинг.
Ключевые шаги: создать пользователя, установить пакеты, клонировать репозиторий, настроить Nginx, включить SSL, проверить работу.
Изображения и скриншоты: Isaac Quesada via Unsplash (изменено Ramces Red с логотипом SearXNG). Все скриншоты сделаны Ramces Red.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента