SearXNG: власна пошукова система без трекінгу на VPS
Звичайна пошукова система може пов'язати запит з IP-адресою, файлами cookie та історією активності. SearXNG змінює маршрут: браузер підключається до вашого екземпляра, який звертається до кількох зовнішніх пошукових систем і об'єднує їхні відповіді на одній сторінці.
Зовнішні джерела бачать адресу сервера SearXNG, а не cookie користувача. Сам сервіс не створює рекламний профіль. Проте це не повна анонімність: власник публічного екземпляра технічно може зберігати журнали, а після переходу за посиланням сайт призначення знову взаємодіє з браузером.
Розглянемо можливості SearXNG і встановимо власний екземпляр на VPS із HTTPS та захистом паролем.
Що таке SearXNG і як він працює?
SearXNG — безкоштовна метапошукова система з відкритим кодом. Вона не підтримує власний індекс сайтів: отримує результати від налаштованих пошукових систем і спеціалізованих джерел, нормалізує їх і показує в єдиному інтерфейсі.
Browser → your SearXNG → search engines
↓
combined resultsДля кожного запиту SearXNG:
- визначає категорію пошуку: веб, зображення, новини, відео або іншу;
- звертається до вибраних джерел від імені сервера;
- не передає їм cookie користувача та використовує рандомізований профіль браузера для вихідних запитів;
- об'єднує відповіді на одній сторінці результатів.
Швидкість залежить від зовнішніх систем: вони можуть відповісти повільно, показати CAPTCHA або заблокувати IP-адресу. SearXNG — керований проміжний шар, а не автономний індекс.
Чому SearXNG цікавіший за одну пошукову систему
Різні джерела на одній сторінці результатів
Можна об'єднати універсальні пошукові системи зі спеціалізованими джерелами: енциклопедіями, картами, науковими публікаціями, репозиторіями, новинними сервісами або каталогами зображень. Це допомагає, коли звичайна сторінка переповнена SEO-матеріалами або погано знаходить вузьку інформацію.
На момент підготовки статті документація містила 272 інтеграції, 83 з яких увімкнено за замовчуванням. Це не означає, що всі вони однаково стабільні.
Набір залежить від конфігурації. Кілька стабільних джерел зазвичай працюють швидше, ніж увімкнення всього одразу.
Швидкі команди
Скорочення дають змогу тимчасово вибрати рушій, категорію або мову:
!wp docker compose — search Wikipedia
!images northern lights — search for images
:en !wp proxy server — search Wikipedia in EnglishКоманда !! перенаправляє користувача безпосередньо до зовнішньої пошукової системи. У цьому режимі захист SearXNG більше не діє.
Пошук для браузера та власних інструментів
SearXNG підтримує OpenSearch, тому його можна встановити пошуковою системою браузера за замовчуванням. Також доступний HTTP API з відповідями JSON, CSV або RSS, якщо адміністратор увімкнув потрібні формати.
Один екземпляр може бути пошуковим бекендом для внутрішньої панелі, бота, дослідницького скрипта або локального AI-помічника. API слід відкривати лише після налаштування автентифікації та обмеження частоти запитів.
Наскільки приватний SearXNG?
| Що він робить | Чого він не робить |
|---|---|
| Не надсилає cookie браузера зовнішнім пошуковим системам | Не забезпечує повної анонімності |
| Приховує IP користувача за IP сервера | Не захищає після відкриття сайту результату |
| Видаляє сторонню рекламу та деякі параметри відстеження | Не гарантує, що власник чужого сервера не веде журнали |
| Може проксувати зображення | Не замінює VPN, Tor або захист браузера |
Публічний екземпляр зручний для випробування сервісу, але потрібно довіряти його адміністратору, а спільну IP-адресу частіше обмежують за частотою запитів.
Власний сервер дає контроль над журналами, джерелами та доступом, але не робить браузер анонімним.
Публічний екземпляр, домашній сервер чи VPS
| Варіант | Переваги | Обмеження |
|---|---|---|
| Публічний екземпляр | Нічого не потрібно встановлювати | Довіра до власника, перевантаження, CAPTCHA |
| Домашній сервер | Повний контроль без оренди VPS | Пристрій має працювати постійно, зовнішній доступ складніше налаштувати |
| Власний VPS | Робота 24/7, домен, HTTPS, доступ із різних пристроїв | Потрібно оновлювати контейнери й контролювати безпеку |
Власний екземпляр SearXNG корисний для родини, команди, розробника або локальних AI-інструментів. Для випадкового пошуку простіше використовувати публічний екземпляр.
Який VPS потрібен SearXNG?
Навантаження залежить від кількості користувачів, джерел і паралельних запитів. Практичні стартові конфігурації:
| Сценарій | CPU | RAM | Сховище |
|---|---|---|---|
| Один користувач | 1 vCPU | 1 GB | 10 GB |
| Родина або невелика команда | 2 vCPU | 2 GB | 20 GB |
| API та додаткові сервіси | 2–4 vCPU | від 4 GB | від 30 GB |
Великий диск не потрібен. Важливіші якість мережі, стабільна IP-адреса та запас RAM.
Для цього сценарію підійде Linux VPS від tropic.host: можна почати з невеликої конфігурації та збільшити ресурси в міру додавання користувачів або доступу до API. Під час вибору тарифу корисніше інвестувати в RAM і якість мережі, ніж переплачувати за місткість сховища.
Встановлення SearXNG на VPS за допомогою Docker Compose
У прикладі використано Ubuntu 24.04 LTS, search.example.com, Valkey і Caddy. Спрямуйте DNS-запис A на сервер і відкрийте порти 80 та 443.
1. Встановіть Docker і створіть каталог
sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker
sudo mkdir -p /opt/searxng/searxng
cd /opt/searxngСтворіть файл .env із доменом і випадковим секретом:
printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
"$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env2. Створіть docker-compose.yml
name: searxng
services:
searxng:
image: docker.io/searxng/searxng:latest
restart: unless-stopped
environment:
SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
SEARXNG_SECRET: ${SEARXNG_SECRET}
SEARXNG_VALKEY_URL: valkey://valkey:6379/0
volumes:
- ./searxng:/etc/searxng:rw
- searxng-cache:/var/cache/searxng
depends_on: [valkey]
valkey:
image: docker.io/valkey/valkey:9-alpine
restart: unless-stopped
command: valkey-server --save 30 1 --loglevel warning
volumes:
- valkey-data:/data
caddy:
image: docker.io/caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
environment:
SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
depends_on: [searxng]
volumes:
searxng-cache:
valkey-data:
caddy-data:
caddy-config:3. Налаштуйте SearXNG
Створіть searxng/settings.yml:
use_default_settings: true
general:
instance_name: "Private Search"
search:
safe_search: 1
autocomplete: ""
formats: [html]
server:
limiter: true
image_proxy: true
valkey:
url: valkey://valkey:6379/0Створіть searxng/limiter.toml:
[botdetection]
trusted_proxies = [
"127.0.0.0/8",
"::1",
"172.16.0.0/12",
]Limiter зменшує ризик, що боти перевантажать екземпляр і зовнішні пошукові системи швидше обмежать його IP-адресу.
4. Додайте пароль і HTTPS
Згенеруйте хеш для надійного пароля:
sudo docker run --rm caddy:2-alpine \
caddy hash-password --plaintext 'REPLACE_WITH_PASSWORD'Вставте отриманий хеш у Caddyfile:
{$SEARXNG_HOSTNAME} {
basic_auth {
searchuser INSERT_HASH_HERE
}
reverse_proxy searxng:8080 {
header_up X-Real-IP {remote_host}
}
}Caddy зберігає хеш, а не пароль у відкритому вигляді. Замість Basic Auth сервіс також можна обмежити VPN.
5. Запустіть контейнери
sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose psВідкрийте https://search.example.com. Caddy автоматично отримає TLS-сертифікат, після чого браузер попросить ім'я користувача searchuser і пароль. Журнали SearXNG доступні цією командою:
sudo docker compose logs -f searxngЩо налаштувати після запуску?
Залиште лише корисні джерела, виберіть мову та параметр SafeSearch, а потім додайте SearXNG до браузера через OpenSearch. Для оновлення виконайте:
sudo docker compose pull
sudo docker compose up -dЗробіть резервні копії .env, Caddyfile і каталогу searxng. Вмикайте JSON API лише за потреби та не залишайте його без пароля й обмеження частоти запитів.
Поширені помилки
| Помилка | Наслідок | Рішення |
|---|---|---|
| Зробити екземпляр публічним | Боти створюють навантаження, а IP частіше обмежують | Використовуйте пароль, VPN або єдиний вхід |
| Увімкнути надто багато джерел | Повільні результати й тайм-аути | Залиште кілька стабільних рушіїв |
| Вважати SearXNG власним індексом | Частина результатів зникає за збою зовнішніх систем | Враховуйте залежність від джерел |
| Очікувати повної анонімності | Сайт призначення все одно може відстежувати браузер | Використовуйте захист браузера, VPN або Tor |
| Запускати без HTTPS | Запити й пароль передаються небезпечно | Використовуйте reverse proxy з TLS |
Висновок
SearXNG об'єднує різні джерела в одному інтерфейсі, зменшує персоналізацію та надає єдиний пошуковий сервіс для браузера, скриптів або локального ШІ. Для ознайомлення достатньо публічного екземпляра. Для регулярного використання краще мати власний сервер із HTTPS, автентифікацією, limiter і кількома стабільними джерелами.
Почати можна з 1 GB RAM. Збільшуйте ресурси в міру зростання кількості користувачів, під час увімкнення API або запуску додаткових контейнерів.
Поширені запитання
SearXNG повністю анонімний?
Ні. Він приховує частину даних від зовнішніх пошукових систем, але адміністратор екземпляра може вести журнали. Після відкриття сайту діють його власні механізми відстеження.
SearXNG кращий за Google?
Він розв'язує іншу задачу. Google зазвичай швидший і сильніше персоналізує результати. SearXNG дає більше контролю, дозволяє об'єднувати джерела й менше залежить від профілю користувача.
Чи можна використовувати SearXNG без VPS?
Так. Можна скористатися публічним екземпляром, домашнім комп'ютером, NAS або мінісервером. VPS потрібен для цілодобового доступу з будь-якої мережі.
Скільки RAM потрібно?
Для одного користувача розумно почати з 1 GB. Для родини, команди, API або додаткових контейнерів краще мати 2–4 GB.
Чи можна підключити SearXNG до браузера або ШІ?
Так. Браузер може використовувати OpenSearch, а застосунки — HTTP API. Доступ до API слід захистити автентифікацією та limiter.
