Установка SearXNG на VPS: приватный метапоисковик для безопасного поиска
TL;DR
В этом руководстве мы пошагово настроим собственный приватный метапоисковик SearXNG на вашем виртуальном приватном сервере (VPS) с использованием Docker Compose. SearXNG позволяет анонимно агрегировать результаты поиска из множества источников, избегая слежки и персонализации, предлагая полный контроль над вашей поисковой активностью. Вы получите полностью функциональный, безопасный и масштабируемый поисковый сервис, доступный через HTTPS.
- Установите и настроите SearXNG на Ubuntu Server 24.04 LTS.
- Используете Docker Compose для изоляции и удобства управления сервисом.
- Обеспечите безопасный доступ через HTTPS с помощью автоматического сертификата Let's Encrypt, настроенного Caddy.
- Научитесь базовым принципам обслуживания и резервного копирования вашего приватного поисковика.
- Получите контроль над своей поисковой выдачей, исключив отслеживание и таргетированную рекламу.
Что мы настраиваем и зачем
В современном цифровом мире конфиденциальность становится все более ценным ресурсом. Крупные поисковые системы, такие как Google, Yandex или Bing, собирают огромные объемы данных о наших поисковых запросах, интересах и поведении, что затем используется для таргетированной рекламы, формирования персонализированной выдачи и даже профилирования пользователей. Это не только этическая проблема, но и практическая: персонализированные результаты могут ограничивать кругозор, а отслеживание создает риски для безопасности.
Именно здесь на сцену выходит SearXNG — это бесплатный и открытый метапоисковик, который агрегирует результаты из более чем 70 различных поисковых сервисов (Google, DuckDuckGo, Bing, Wikipedia, Reddit, YouTube и многие другие), не сохраняя при этом никакой информации о пользователе. Он действует как прокси между вами и поисковыми системами, эффективно скрывая ваш IP-адрес и запрос от конечных источников. SearXNG не использует куки, не собирает телеметрию, не создает профили пользователей и не подвержен цензуре или персонализации выдачи.
В итоге, после завершения этого руководства, вы получите полностью функциональный, приватный поисковый сервис, который будет работать на вашем собственном сервере. Вы сможете использовать его для себя, своей семьи или небольшой команды, обеспечивая анонимность и свободу поиска. Вы получите прямой доступ к чистому, нефильтрованному интернету, без рекламного шума и предвзятости алгоритмов.
Существуют несколько альтернатив для приватного поиска. Можно использовать готовые публичные инстансы SearXNG, такие как те, что перечислены на searx.space, или другие приватные поисковики вроде DuckDuckGo, Brave Search или Startpage. Однако у каждого из этих вариантов есть свои нюансы:
- Публичные инстансы SearXNG: Удобны, но вы все равно доверяете оператору инстанса. Если инстанс перегружен или его оператор решит собирать данные, вы теряете часть контроля. К тому же, некоторые инстансы могут быть заблокированы или работать нестабильно.
- DuckDuckGo/Brave Search/Startpage: Это отличные варианты для многих пользователей, которые не хотят заморачиваться с настройкой. Они предлагают хорошую конфиденциальность, но все же являются централизованными сервисами. Вы доверяете их политике конфиденциальности, и они могут быть подвержены внешнему давлению или изменениям в политике.
- Cloud-managed решения: Некоторые провайдеры предлагают хостинг SearXNG как услугу, но это обычно дороже и все равно означает делегирование части контроля.
Почему же self-hosted на VPS является лучшим выбором для нашей целевой аудитории? Потому что это дает вам полный контроль. Вы контролируете сервер, его конфигурацию, данные и политики. Никто, кроме вас, не имеет доступа к логам или вашей поисковой активности. Это идеальный вариант для тех, кто ценит максимальную конфиденциальность, хочет понимать, как работает сервис, и готов потратить немного времени на его настройку. К тому же, это отличный способ глубже изучить работу с Linux, Docker и сетевыми сервисами.
Какой VPS-конфиг нужен под эту задачу
SearXNG не является ресурсоемким приложением для индивидуального использования или небольшой группы. Однако, чем больше запросов и поисковых движков вы используете, тем больше ресурсов потребуется. Важно выбрать конфигурацию, которая обеспечит стабильную работу и возможность расширения.
Минимальные требования (для 1-5 пользователей):
- CPU: 1 vCPU (ядро) с частотой 2 ГГц или выше.
- RAM: 2 ГБ оперативной памяти. SearXNG сам по себе потребляет не так много, но буферы ядра, Docker и кэши могут использовать этот объем.
- Диск: 20-30 ГБ SSD. SSD критичен для быстрой работы системы и Docker-контейнеров. Объем в основном нужен для операционной системы, Docker образов и логов.
- Сеть: 100 Мбит/с. SearXNG будет отправлять и получать данные с множества поисковых систем, поэтому стабильный и достаточно широкий канал важен.
Рекомендуемый VPS-план (для 5-20 пользователей или с другими сервисами):
Для более комфортной работы, особенно если вы планируете использовать SearXNG активно или размещать на том же VPS другие легкие сервисы, рекомендуется следующая конфигурация:
- CPU: 2 vCPU (ядра) с частотой 2.5 ГГц или выше.
- RAM: 4 ГБ оперативной памяти. Это обеспечит достаточный запас для пиковых нагрузок и кэширования.
- Диск: 50-80 ГБ NVMe/SSD. Быстрый диск значительно улучшит отзывчивость системы.
- Сеть: 200-500 Мбит/с. Более широкий канал обеспечит быстрое получение результатов из всех источников.
Найти VPS с указанными характеристиками не составит труда у большинства провайдеров. Важно также обращать внимание на репутацию провайдера и качество поддержки.
Когда нужен dedicated, а не VPS
Переход на выделенный сервер (dedicated) становится оправданным, если:
- Высокая нагрузка: Вы планируете обслуживать сотни или тысячи пользователей, или SearXNG будет частью более крупной инфраструктуры с очень высокой частотой запросов.
- Множество других сервисов: Помимо SearXNG, вы размещаете на сервере несколько других ресурсоемких приложений (например, базы данных, игровые серверы, высоконагруженные веб-приложения).
- Специфические требования к железу: Вам нужен прямой доступ к аппаратным ресурсам, например, для использования специализированных процессоров, большого объема оперативной памяти (более 64 ГБ) или очень быстрых дисковых подсистем (NVMe RAID).
- Максимальная производительность и изоляция: Вы хотите исключить "шумных соседей" и получить гарантированную производительность без виртуализации.
Для большинства сценариев использования SearXNG, даже для небольшой команды, VPS будет более чем достаточен и экономически выгоден. Если вы все же решите, что вам нужен выделенный сервер, убедитесь, что его конфигурация соответствует вашим требованиям к производительности. Например, подходящий dedicated сервер может предложить 4-8 физических ядер, 16-32 ГБ RAM и 2x500 ГБ NVMe диски.
Локация: на что влияет
Выбор географической локации VPS влияет на несколько ключевых аспектов:
- Задержка (Latency): Чем ближе сервер к вам и вашим пользователям, тем ниже будет задержка при доступе к SearXNG. Это особенно важно для быстрого отклика поисковика.
- Законы и юрисдикция: Локация сервера определяет, под юрисдикцию какой страны подпадают ваши данные и операции. Для конфиденциальности многие предпочитают страны с сильными законами о защите данных (например, Нидерланды, Германия, Швейцария).
- Доступность поисковых систем: Некоторые поисковые системы могут показывать разные результаты или иметь ограничения доступа в зависимости от IP-ададреса, с которого приходят запросы. Выбор локации, близкой к основным центрам данных поисковиков, может улучшить качество и скорость получения результатов.
Рекомендуется выбирать локацию, которая географически близка к основной массе ваших пользователей и находится в юрисдикции, благоприятной для конфиденциальности.
Подготовка сервера
Перед установкой SearXNG необходимо выполнить ряд базовых настроек на вашем VPS. Мы будем использовать Ubuntu Server 24.04 LTS как наиболее актуальную и поддерживаемую операционную систему на 2026 год.
1. Доступ по SSH и создание пользователя с sudo
Предполагается, что у вас уже есть SSH-доступ к серверу под учетной записью root или пользователя с sudo-правами. Крайне не рекомендуется работать под root напрямую. Создадим нового пользователя (например, searxng_admin) и предоставим ему sudo-права.
# Создание нового пользователя
sudo adduser searxng_admin
# Добавление пользователя в группу sudo
sudo usermod -aG sudo searxng_admin
Теперь выйдите из сессии root и войдите под новым пользователем searxng_admin, используя его пароль.
2. Настройка SSH-ключей (рекомендуется)
Для повышения безопасности рекомендуется настроить аутентификацию по SSH-ключам и отключить аутентификацию по паролю.
На вашей локальной машине сгенерируйте SSH-ключ, если у вас его еще нет:
ssh-keygen -t ed25519 -C "[email protected]"
Скопируйте публичный ключ на сервер:
ssh-copy-id searxng_admin@ВАШ_IP_СЕРВЕРА
Затем на сервере отредактируйте файл конфигурации SSH-демона /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Найдите следующие строки и измените их (или добавьте, если отсутствуют):
# Отключить вход для root
PermitRootLogin no
# Отключить аутентификацию по паролю (после того, как убедитесь, что вход по ключу работает!)
PasswordAuthentication no
Сохраните изменения (Ctrl+O, Enter) и выйдите (Ctrl+X). Перезапустите SSH-сервис:
sudo systemctl restart sshd
Важно: Убедитесь, что вы можете войти по SSH-ключу, прежде чем отключать PasswordAuthentication, иначе вы рискуете потерять доступ к серверу!
3. Обновление системы
Всегда начинайте с обновления системы, чтобы убедиться, что у вас установлены последние патчи безопасности и версии пакетов.
sudo apt update # Обновление списка пакетов
sudo apt upgrade -y # Обновление установленных пакетов
sudo apt autoremove -y # Удаление ненужных зависимостей
4. Настройка брандмауэра (UFW)
Настроим базовый брандмауэр UFW (Uncomplicated Firewall) для разрешения только необходимых подключений.
sudo apt install ufw -y # Установка UFW
sudo ufw default deny incoming # Запретить все входящие подключения по умолчанию
sudo ufw default allow outgoing # Разрешить все исходящие подключения по умолчанию
sudo ufw allow ssh # Разрешить SSH (порт 22)
sudo ufw allow http # Разрешить HTTP (порт 80)
sudo ufw allow https # Разрешить HTTPS (порт 443)
sudo ufw enable # Включить UFW
sudo ufw status verbose # Проверка статуса UFW
При включении UFW вам будет предложено подтвердить действие. Введите y и нажмите Enter.
5. Установка Fail2Ban
Fail2Ban помогает защитить сервер от атак методом подбора паролей, блокируя IP-адреса, с которых поступает много неудачных попыток входа.
sudo apt install fail2ban -y # Установка Fail2Ban
sudo systemctl enable fail2ban # Включение автозапуска Fail2Ban
sudo systemctl start fail2ban # Запуск Fail2Ban
Создадим файл локальной конфигурации, чтобы наши изменения не были перезаписаны при обновлении пакета:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Отредактируйте /etc/fail2ban/jail.local, чтобы настроить параметры, например, добавить свой IP-адрес в ignoreip:
sudo nano /etc/fail2ban/jail.local
Найдите секцию [DEFAULT] и измените bantime (время блокировки), findtime (период, за который считаются попытки) и maxretry (максимальное количество попыток). Добавьте свой IP-адрес в ignoreip, чтобы вас не заблокировали случайно:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 ВАШ_ЛОКАЛЬНЫЙ_IP_АДРЕС
bantime = 1h
findtime = 10m
maxretry = 5
Сохраните и закройте файл. Перезапустите Fail2Ban для применения изменений:
sudo systemctl restart fail2ban
Теперь ваш сервер готов к установке SearXNG.
Установка ПО — пошагово
Мы будем устанавливать SearXNG с помощью Docker Compose. Этот подход обеспечивает изоляцию приложения, упрощает управление зависимостями и облегчает обновление. Для 2026 года Docker и Docker Compose являются стандартом де-факто для развертывания многих веб-сервисов.
1. Установка Docker Engine и Docker Compose
Сначала установим необходимые компоненты Docker. Мы будем использовать официальные репозитории Docker для получения актуальных версий.
# Обновление индекса пакетов (актуально на 2026 год)
sudo apt update
# Установка пакетов, необходимых для использования репозитория Docker через HTTPS
sudo apt install -y ca-certificates curl gnupg
# Добавление официального GPG ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавление репозитория Docker в APT-источники
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Обновление индекса пакетов после добавления репозитория Docker
sudo apt update
# Установка Docker Engine, Docker CLI и Docker Compose (актуальные версии на 2026 год)
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Добавление текущего пользователя в группу docker для работы с Docker без sudo
sudo usermod -aG docker $USER
# Применение изменений для группы docker (необходимо перелогиниться или выполнить newgrp docker)
newgrp docker
# Проверка установки Docker
docker run hello-world
Команда docker run hello-world должна вывести приветственное сообщение, подтверждающее успешную установку Docker.
2. Создание директории для SearXNG и конфигурации
Создадим рабочую директорию для SearXNG, где будут храниться все конфигурационные файлы и Docker Compose.
mkdir ~/searxng
cd ~/searxng
3. Создание файла docker-compose.yml
Создайте файл docker-compose.yml. Этот файл будет определять, как Docker должен запускать SearXNG.
nano docker-compose.yml
Вставьте следующее содержимое. Это базовая конфигурация, использующая официальный образ SearXNG и прокси-сервер Caddy для HTTPS.
version: '3.8'
services:
searxng:
image: searxng/searxng:latest # Актуальная версия SearXNG на 2026 год
container_name: searxng
ports:
- "8080:8080" # SearXNG будет доступен на порту 8080 внутри контейнера
volumes:
- ./searxng_settings.yml:/etc/searxng/settings.yml:ro # Монтируем наш конфиг
- ./data/searxng:/data # Директория для данных и кэша SearXNG
environment:
- SEARXNG_BASE_URL=https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/ # Замените на ваш домен
- SEARXNG_URL=http://searxng:8080/ # Внутренний URL для Caddy
restart: unless-stopped
networks:
- searxng_network
caddy:
image: caddy:2-alpine # Актуальная версия Caddy на 2026 год
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro # Монтируем наш конфиг Caddy
- ./data/caddy:/data # Директория для данных Caddy (сертификаты Let's Encrypt)
environment:
- CADDY_EMAIL=ВАШ[email protected] # Email для Let's Encrypt
restart: unless-stopped
networks:
- searxng_network
networks:
searxng_network:
driver: bridge
Важно: Замените ВАШ_ДОМЕН_ДЛЯ_SEARXNG на ваш реальный домен (например, searx.mydomain.com) и ВАШ[email protected] на ваш адрес электронной почты для получения уведомлений от Let's Encrypt.
4. Настройка файла searxng_settings.yml
SearXNG имеет множество настроек, которые можно изменить в файле settings.yml. Для начала мы создадим базовый файл.
nano searxng_settings.yml
Вставьте следующее минимальное содержимое. Для получения полного списка настроек обратитесь к официальной документации SearXNG.
# searxng_settings.yml - Пример базовой конфигурации
# Общие настройки
debug: False
limiter: True # Включить ограничение скорости запросов
user_agent: 'SearXNG/1.3' # Пример user-agent, актуальный на 2026 год
# Настройки приватности
no_cookie_tracking: True
no_session_tracking: True
no_result_urls_tracking: True
# Настройки движков (пример - включены основные)
# Для полного списка и настройки см. https://docs.searxng.org/admin/settings.html#engines
engines:
- google
- duckduckgo
- bing
- wikipedia
- startpage
- yandex
# Настройки интерфейса (опционально)
# theme: simple
# autocomplete: 'duckduckgo'
# Дополнительные опции
# image_proxy: True
# timezone: 'Europe/Moscow'
# Secret key для защиты сессий (ОБЯЗАТЕЛЬНО СГЕНЕРИРУЙТЕ СВОЙ!)
secret_key: "СГЕНЕРИРУЙТЕ_СВОЙ_СЕКРЕТНЫЙ_КЛЮЧ"
Очень важно: Замените "СГЕНЕРИРУЙТЕ_СВОЙ_СЕКРЕТНЫЙ_КЛЮЧ" на случайную строку. Вы можете сгенерировать ее, например, так:
python3 -c 'import secrets; print(secrets.token_hex(32))'
Скопируйте полученную строку и вставьте в searxng_settings.yml.
5. Создание файла Caddyfile
Caddy будет выступать в роли обратного прокси, перенаправляя запросы к SearXNG и автоматически настраивая HTTPS с помощью Let's Encrypt.
nano Caddyfile
Вставьте следующее содержимое:
ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
# Замените на ваш домен, например, searx.mydomain.com
# Caddy автоматически получит SSL-сертификат от Let's Encrypt
reverse_proxy searxng:8080 {
# Перенаправляет запросы к SearXNG контейнеру
header_up Host {host}
header_up X-Real-IP {remote_ip}
header_up X-Forwarded-For {remote_ip}
header_up X-Forwarded-Proto {scheme}
}
# Дополнительные заголовки для безопасности (рекомендуется)
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Frame-Options DENY
X-Content-Type-Options nosniff
X-XSS-Protection "1; mode=block"
Referrer-Policy no-referrer-when-downgrade
}
# Логирование (опционально)
log {
output file /data/access.log {
roll_size 10mb
roll_keep 5
roll_keep_for 720h
}
format json
}
}
Важно: Замените ВАШ_ДОМЕН_ДЛЯ_SEARXNG на ваш реальный домен. Убедитесь, что DNS-запись (тип A) для этого домена указывает на IP-адрес вашего VPS. Без корректной DNS-записи Caddy не сможет получить SSL-сертификат.
6. Запуск SearXNG с Docker Compose
После создания всех необходимых файлов можно запустить SearXNG.
# Создание директории для данных Caddy и SearXNG
mkdir -p data/caddy data/searxng
# Запуск контейнеров в фоновом режиме
docker compose up -d
# Проверка статуса запущенных контейнеров
docker compose ps
Команда docker compose ps должна показать, что контейнеры searxng и caddy запущены и находятся в статусе Up. Если Caddy не запускается сразу, дайте ему несколько минут, чтобы получить сертификат Let's Encrypt. Вы можете проверить логи Caddy, если возникнут проблемы:
docker compose logs caddy
Теперь ваш приватный метапоисковик SearXNG должен быть доступен по вашему доменному имени через HTTPS.
Конфигурация
После базовой установки SearXNG и Caddy, следующим шагом является их дальнейшая настройка для оптимизации производительности, безопасности и функциональности.
1. Настройка SearXNG: файл searxng_settings.yml
Файл searxng_settings.yml, который мы создали ранее, является центральным для конфигурации SearXNG. Вы можете найти полный список опций в официальной документации SearXNG. Вот несколько важных настроек, которые стоит рассмотреть:
Отредактируйте файл:
nano ~/searxng/searxng_settings.yml
Примеры дополнительных настроек:
# ... (предыдущие настройки) ...
# Настройки движков (пример: добавление Wikipedia, Reddit, YouTube)
# Вы можете включать/отключать любые движки.
# Некоторые движки могут требовать API-ключи (см. документацию).
engines:
- google
- duckduckgo
- bing
- wikipedia
- reddit
- youtube
# - github # Пример движка для разработчиков
# - stackoverflow # Еще один полезный движок
# Настройки ограничения скорости запросов (limiter)
# Помогает предотвратить злоупотребления и блокировки от поисковых систем.
limiter:
enabled: True
rate: 10/minute # Максимум 10 запросов в минуту на IP
burst: 5 # Дополнительные 5 запросов сверх лимита на короткое время
# Настройки прокси для запросов к движкам (если нужно)
# proxy:
# url: "socks5h://127.0.0.1:9050" # Пример для Tor
# type: "socks5"
# Настройки интерфейса
autocomplete: 'duckduckgo' # Включить автодополнение запросов через DuckDuckGo
theme: 'oscar' # Или 'simple', 'garuda', 'nord', 'kavin' и т.д.
image_proxy: True # Проксирование изображений для дополнительной приватности
suggestions: True # Показывать предложения по поиску
# Настройки безопасности
# allowed_hosts:
# - "ВАШ_ДОМЕН_ДЛЯ_SEARXNG" # Укажите ваш домен для дополнительной защиты
# Заголовки HTTP
# http_headers:
# X-Frame-Options: "DENY"
# X-Content-Type-Options: "nosniff"
# Secret key - ОБЯЗАТЕЛЬНО СГЕНЕРИРУЙТЕ СВОЙ!
secret_key: "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ"
После внесения изменений в searxng_settings.yml необходимо перезапустить контейнер SearXNG, чтобы они вступили в силу:
docker compose restart searxng
2. Конфигурация Caddy: файл Caddyfile
Caddy уже настроен для предоставления HTTPS и проксирования запросов к SearXNG. Вы можете добавить дополнительные заголовки безопасности, настроить логирование или добавить другие домены, если это необходимо.
Отредактируйте файл:
nano ~/searxng/Caddyfile
Пример добавления CORS-заголовков (если вы планируете использовать SearXNG из других веб-приложений):
ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
# ... (предыдущие настройки) ...
# Дополнительные заголовки для CORS (Cross-Origin Resource Sharing)
header / {
Access-Control-Allow-Origin "" # Разрешить всем. Используйте конкретный домен для большей безопасности.
Access-Control-Allow-Methods "GET, POST, OPTIONS"
Access-Control-Allow-Headers "Content-Type, Authorization"
}
# ... (остальные настройки) ...
}
После изменения Caddyfile, перезапустите контейнер Caddy:
docker compose restart caddy
3. Секреты и переменные окружения
Как показано в docker-compose.yml, мы уже используем переменные окружения для SEARXNG_BASE_URL и CADDY_EMAIL. Для secret_key SearXNG мы монтируем файл searxng_settings.yml. Если вы хотите, чтобы секретный ключ не хранился в файле, вы можете передать его как переменную окружения в docker-compose.yml:
searxng:
# ...
environment:
- SEARXNG_BASE_URL=https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/
- SEARXNG_URL=http://searxng:8080/
- SEARXNG_SECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_ИЗ_ПЕРЕМЕННОЙ_ОКРУЖЕНИЯ # Добавить эту строку
# ...
В этом случае вам нужно будет удалить строку secret_key: "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ" из searxng_settings.yml. Это может быть полезно для автоматизации развертывания, где секретный ключ подтягивается из системы управления секретами.
4. Проверка работоспособности
После всех настроек убедимся, что SearXNG работает корректно.
Проверка доступности через curl:
curl -I https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/
Вы должны получить HTTP-статус 200 OK и заголовки, указывающие на Caddy и SearXNG.
HTTP/2 200
alt-svc: h3=":443"; ma=2592000
content-length: 12345
content-type: text/html; charset=utf-8
server: Caddy
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
date: Wed, 01 Jan 2026 12:00:00 GMT
Проверка внутренних сервисов Docker:
Убедитесь, что контейнеры запущены и не выдают ошибок:
docker compose ps
docker compose logs searxng
docker compose logs caddy
В логах не должно быть критических ошибок. Если есть, внимательно изучите их, чтобы определить причину.
Проверка в браузере:
Откройте ваш домен (https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/) в веб-браузере. Вы должны увидеть интерфейс SearXNG. Попробуйте выполнить несколько поисковых запросов, чтобы убедиться, что результаты извлекаются и отображаются корректно.
Если все шаги выполнены правильно, ваш приватный метапоисковик SearXNG полностью настроен и готов к работе.
Бэкапы и обслуживание
Регулярное резервное копирование и своевременное обслуживание являются критически важными для стабильной и безопасной работы любого сервиса, включая SearXNG. Хотя SearXNG сам по себе не хранит конфиденциальных пользовательских данных (поскольку это приватный поисковик), важно сохранять его конфигурацию и данные Caddy (сертификаты Let's Encrypt), чтобы избежать перенастройки в случае сбоя.
1. Что бэкапить
Для SearXNG на Docker Compose основные элементы, которые требуют резервного копирования, это:
- Файлы конфигурации SearXNG:
searxng_settings.yml. Это основной файл, определяющий поведение вашего поисковика. - Файлы Docker Compose:
docker-compose.yml. Определяет, как запустить SearXNG и Caddy. - Файлы конфигурации Caddy:
Caddyfile. Содержит настройки вашего обратного прокси и HTTPS. - Данные Caddy: Директория
./data/caddy(в нашем случае~/searxng/data/caddy). Здесь хранятся сертификаты Let's Encrypt и другая служебная информация Caddy. - Данные SearXNG: Директория
./data/searxng(в нашем случае~/searxng/data/searxng). Может содержать кэш, логи и другие временные данные SearXNG.
Пользовательские данные не бэкапятся, так как SearXNG не хранит их.
2. Простой скрипт автобэкапа
Мы создадим простой скрипт, который будет архивировать все необходимые файлы и директории. В качестве инструмента для бэкапа можно использовать tar для архивации и rsync для синхронизации с удаленным хранилищем. Для более продвинутых сценариев можно рассмотреть borgbackup или restic, которые поддерживают дедупликацию и шифрование.
Создайте файл скрипта, например, backup_searxng.sh, в вашей домашней директории:
nano ~/backup_searxng.sh
Вставьте следующее содержимое:
#!/bin/bash
# Путь к директории SearXNG
SEARXNG_DIR="/home/searxng_admin/searxng" # Замените на путь к вашей директории SearXNG
BACKUP_DIR="/var/backups/searxng"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/searxng_backup_$TIMESTAMP.tar.gz"
RETENTION_DAYS=7 # Хранить бэкапы за последние 7 дней
# Создание директории для бэкапов, если ее нет
mkdir -p "$BACKUP_DIR"
echo "Начинаем резервное копирование SearXNG в $BACKUP_FILE..."
# Остановка SearXNG для консистентности данных (опционально, но рекомендуется для caddy/searxng data)
# docker compose -f "$SEARXNG_DIR/docker-compose.yml" stop
# Архивирование необходимых файлов и директорий
tar -czf "$BACKUP_FILE" -C "$SEARXNG_DIR" \
docker-compose.yml \
searxng_settings.yml \
Caddyfile \
data/caddy \
data/searxng \
--remove-files-from data/searxng/cache # Очистка кэша SearXNG, если он большой
# Запуск SearXNG обратно (если был остановлен)
# docker compose -f "$SEARXNG_DIR/docker-compose.yml" start
echo "Резервное копирование завершено."
# Удаление старых бэкапов
echo "Удаление старых бэкапов (старше $RETENTION_DAYS дней)..."
find "$BACKUP_DIR" -name "searxng_backup_.tar.gz" -type f -mtime +$RETENTION_DAYS -delete
echo "Очистка старых бэкапов завершена."
# Пример отправки бэкапа на удаленный сервер через rsync
# REMOTE_USER="backup_user"
# REMOTE_HOST="your_backup_server_ip"
# REMOTE_PATH="/mnt/backups/searxng/"
# rsync -avzh "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
# Пример отправки бэкапа в S3-совместимое хранилище с помощью s3cmd/awscli
# s3cmd put "$BACKUP_FILE" s3://your-s3-bucket/searxng/
Сделайте скрипт исполняемым:
chmod +x ~/backup_searxng.sh
Настройте cron для автоматического запуска скрипта. Например, для ежедневного бэкапа в 03:00 ночи:
crontab -e
Добавьте следующую строку в конец файла crontab:
0 3 * /home/searxng_admin/backup_searxng.sh >> /var/log/searxng_backup.log 2>&1
Это будет запускать скрипт ежедневно в 3 часа ночи и перенаправлять вывод в файл логов /var/log/searxng_backup.log.
3. Куда складывать бэкапы
Хранить бэкапы на том же сервере, что и основной сервис, не рекомендуется. Если сервер выйдет из строя (например, отказ диска), вы потеряете и сервис, и бэкапы. Рекомендуемые места для хранения:
- Внешнее S3-совместимое хранилище: Такие сервисы, как Backblaze B2, Amazon S3, DigitalOcean Spaces, MinIO (self-hosted), предлагают надежное и недорогое хранение объектов. Вы можете использовать
s3cmdилиawscliдля автоматической загрузки бэкапов. - Отдельный VPS или выделенный сервер: Если у вас есть другой сервер, вы можете использовать
rsyncилиscpдля копирования бэкапов. - NAS/локальное хранилище: Для личного использования можно настроить копирование бэкапов на локальное сетевое хранилище.
Всегда шифруйте бэкапы, особенно если они хранятся на сторонних сервисах. Инструменты вроде borgbackup или restic делают это автоматически.
4. Обновления: rolling vs maintenance window
Поддержание системы и приложений в актуальном состоянии критично для безопасности и стабильности.
- Обновление операционной системы: Регулярно запускайте
sudo apt update && sudo apt upgrade -y. Для Ubuntu LTS рекомендуется это делать хотя бы раз в месяц. Рассмотрите возможность использованияunattended-upgradesдля автоматического применения патчей безопасности. - Обновление Docker-образов (SearXNG, Caddy):
- Rolling updates (непрерывные обновления): Для SearXNG, который не имеет сложной базы данных или состояния, можно просто периодически выполнять:
Это можно делать раз в несколько недель. Caddy автоматически обновит свои сертификаты Let's Encrypt, если они подходят к концу срока действия.docker compose pull # Загрузить последние версии образов docker compose up -d # Пересоздать контейнеры с новыми образами - Maintenance window (окно обслуживания): Если вы хотите быть уверены в отсутствии проблем, планируйте небольшое окно обслуживания (например, 15-30 минут раз в месяц), когда вы вручную выполняете
docker compose pull && docker compose up -d, а затем проверяете логи и работоспособность. Это позволяет вам быть готовым к возможным проблемам и откатить изменения, если что-то пойдет не так.
- Rolling updates (непрерывные обновления): Для SearXNG, который не имеет сложной базы данных или состояния, можно просто периодически выполнять:
Всегда делайте бэкап перед крупными обновлениями или изменениями конфигурации.
Troubleshooting + FAQ
В процессе установки и эксплуатации SearXNG могут возникнуть различные проблемы. Здесь собраны типичные ошибки и ответы на часто задаваемые вопросы.
SearXNG не запускается или выдает ошибку 502 Bad Gateway
Что проверить: Убедитесь, что контейнер SearXNG запущен и доступен по внутреннему порту 8080. Проверьте логи контейнера SearXNG.
docker compose ps
docker compose logs searxng
Ищите ошибки инициализации, проблемы с доступом к файлу searxng_settings.yml или неверные параметры. Если в логах Caddy вы видите "502 Bad Gateway", это означает, что Caddy не может связаться с контейнером SearXNG.
Проверьте, что SEARXNG_URL=http://searxng:8080/ в docker-compose.yml корректен и соответствует имени сервиса SearXNG в том же файле.
Как фиксить: Исправьте ошибки в searxng_settings.yml (например, синтаксические ошибки YAML), убедитесь, что путь к файлу в docker-compose.yml верный. Перезапустите контейнер SearXNG: docker compose restart searxng.
Не работает HTTPS, браузер выдает ошибку сертификата
Что проверить: Caddy автоматически получает сертификаты Let's Encrypt.
docker compose logs caddy
Ищите сообщения об ошибках при получении сертификата (например, "tls: no ACME client was able to solve the challenge"). Это часто указывает на проблемы с DNS или брандмауэром.
Убедитесь, что DNS-запись (тип A) для вашего домена указывает на IP-адрес вашего VPS.
Проверьте, что порты 80 и 443 открыты в UFW: sudo ufw status verbose.
Как фиксить: Исправьте DNS-запись, если она неверна. Откройте порты 80 и 443 в UFW. Убедитесь, что в Caddyfile указан правильный домен. Перезапустите Caddy: docker compose restart caddy.
SearXNG медленно работает или выдает много капч
Что проверить: Медленная работа может быть вызвана перегрузкой сервера, медленным интернет-каналом или частыми блокировками со стороны поисковых движков. Большое количество капч указывает на то, что поисковые системы идентифицируют ваши запросы как автоматические.
Проверьте загрузку CPU/RAM на VPS: htop.
Проверьте логи SearXNG на предмет ошибок от поисковых систем.
Как фиксить: Увеличьте лимиты запросов в searxng_settings.yml (секция limiter). Рассмотрите возможность использования прокси-серверов (например, Tor или внешних прокси) для запросов к поисковым системам (настройка proxy в searxng_settings.yml). Если VPS перегружен, рассмотрите апгрейд ресурсов (CPU/RAM/сеть). Попробуйте отключить некоторые поисковые движки, которые чаще всего вызывают капчи.
Какой VPS-конфиг минимально подойдёт?
Минимально для SearXNG (один пользователь или очень небольшая группа) потребуется 1 vCPU, 2 ГБ RAM и 20-30 ГБ SSD-диска. Этой конфигурации будет достаточно для базовой работы, но при активном использовании или добавлении других сервисов на VPS могут возникнуть задержки. Рекомендуется выбирать более мощные конфигурации, если вы планируете использовать SearXNG регулярно или для нескольких пользователей.
Что выбрать — VPS или dedicated для этой задачи?
Для большинства пользователей, устанавливающих SearXNG для личного использования или для небольшой команды, виртуальный приватный сервер (VPS) является оптимальным выбором. Он предлагает достаточную производительность, гибкость и экономичность. Выделенный сервер (dedicated) имеет смысл рассматривать только в случаях очень высокой нагрузки (сотни пользователей), когда SearXNG является частью крупной инфраструктуры, или если вам требуется полный контроль над аппаратным обеспечением и максимальная гарантированная производительность без виртуализации. В большинстве сценариев VPS будет более чем достаточен.
Как обновить SearXNG до новой версии?
Поскольку мы используем Docker Compose, обновление очень простое:
cd ~/searxng
docker compose pull # Загружает последние версии образов SearXNG и Caddy
docker compose up -d # Пересоздает контейнеры, используя новые образы
docker image prune -f # Удаляет старые неиспользуемые образы Docker для экономии места
Перед обновлением рекомендуется сделать резервную копию конфигурационных файлов.
Могу ли я добавить свои поисковые движки или настроить их?
Да, SearXNG поддерживает множество поисковых движков и позволяет их детальную настройку. В файле searxng_settings.yml в секции engines вы можете включить или отключить нужные вам движки. Некоторые движки (например, Google Custom Search, Reddit) могут потребовать получения API-ключей, которые нужно будет указать в этом же файле. Полная документация по настройке движков доступна на официальном сайте SearXNG.
Как ограничить доступ к моему SearXNG только для определенных IP-адресов?
Вы можете настроить Caddy для ограничения доступа. Отредактируйте Caddyfile:
ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
# ...
# Ограничение доступа по IP-адресу
# Замените ВАШ_IP_АДРЕС на свои разрешенные IP (можно несколько через пробел)
# Если IP-адрес не совпадает, Caddy вернет 403 Forbidden
# remote_ip {
# ip_range ВАШ_IP_АДРЕС/32
# ip_range ВАШ_ВТОРОЙ_IP_АДРЕС/32
# # Или использовать целую подсеть
# # ip_range 192.168.1.0/24
# policy deny_ip
# }
# ...
}
После изменения Caddyfile перезапустите Caddy: docker compose restart caddy.
Выводы и следующие шаги
Поздравляем! Вы успешно установили и настроили свой собственный приватный метапоисковик SearXNG на VPS. Теперь вы контролируете свою поисковую активность, защищены от слежки и персонализации выдачи, и можете наслаждаться чистым, непредвзятым поиском в интернете. Вы также освоили базовые навыки работы с Docker Compose, Caddy и управления Linux-сервером, что является ценным опытом.
Куда двигаться дальше?
- Тонкая настройка: Изучите полную документацию SearXNG, чтобы максимально адаптировать
searxng_settings.ymlпод свои нужды. Экспериментируйте с различными темами, включайте и отключайте поисковые движки, настраивайте лимиты. - Интеграция с браузером: Настройте ваш браузер (Firefox, Chrome, Brave) для использования вашего нового SearXNG-инстанса как поисковика по умолчанию. Это значительно упростит использование.
- Мониторинг и масштабирование: Если вы планируете обслуживать большое количество пользователей, изучите инструменты мониторинга сервера (например, Prometheus + Grafana) и рассмотрите возможность запуска нескольких инстансов SearXNG за балансировщиком нагрузки.