bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення SearXNG

calendar_month Jun 29, 2026 schedule 23 хв. читання visibility 22 переглядів
Установка SearXNG на VPS: приватный метапоисковик для безопасного поиска
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення 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-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який 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, який не має складної бази даних або стану, можна просто періодично виконувати:
      
      docker compose pull # Завантажити останні версії образів
      docker compose up -d # Перестворити контейнери з новими образами
      
      Це можна робити раз на кілька тижнів. Caddy автоматично оновить свої сертифікати Let's Encrypt, якщо вони підходять до кінця терміну дії.
    • Maintenance window (вікно обслуговування): Якщо ви хочете бути впевнені у відсутності проблем, плануйте невелике вікно обслуговування (наприклад, 15-30 хвилин раз на місяць), коли ви вручну виконуєте docker compose pull && docker compose up -d, а потім перевіряєте логи та працездатність. Це дозволяє вам бути готовим до можливих проблем та відкотити зміни, якщо щось піде не так.

Завжди робіть резервну копію перед великими оновленнями або змінами конфігурації.

Вирішення проблем + 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 за балансувальником навантаження.

Поділитися цим записом:

встановлення searxng на vps: приватний метапошуковик для безпечного пошуку
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.