SearXNG: czym jest i jak zainstalować własną wyszukiwarkę na VPS-ie

6 min czytania
Tropic
SearXNG: czym jest i jak zainstalować własną wyszukiwarkę na VPS-ie

Language: pl

SearXNG: własna wyszukiwarka bez śledzenia na VPS-ie

Zwykła wyszukiwarka może powiązać zapytanie z adresem IP, plikami cookie i historią aktywności. SearXNG zmienia tę ścieżkę: przeglądarka łączy się z twoją instancją, która odpytuje kilka zewnętrznych wyszukiwarek i łączy ich odpowiedzi na jednej stronie.

Zewnętrzne źródła widzą adres serwera SearXNG, a nie pliki cookie użytkownika. Sama usługa nie buduje profilu reklamowego. Nie jest to jednak pełna anonimowość: właściciel publicznej instancji może technicznie prowadzić logi, a po otwarciu linku docelowa strona ponownie nawiązuje kontakt z przeglądarką.

Przyjrzymy się możliwościom SearXNG i zainstalujemy własną instancję na VPS-ie z HTTPS oraz ochroną hasłem.

Czym jest SearXNG i jak działa?

SearXNG to darmowa, open source’owa metawyszukiwarka. Nie utrzymuje własnego indeksu stron: pobiera wyniki ze skonfigurowanych wyszukiwarek i wyspecjalizowanych źródeł, normalizuje je i wyświetla w jednym interfejsie.

Browser → your SearXNG → search engines
                         ↓
                  combined results

Dla każdego zapytania SearXNG:

  1. ustala kategorię wyszukiwania: internet, obrazy, wiadomości, filmy lub inną;
  2. kontaktuje się z wybranymi źródłami w imieniu serwera;
  3. nie wysyła im plików cookie użytkownika i używa losowego profilu przeglądarki dla żądań wychodzących;
  4. łączy odpowiedzi na jednej stronie wyników.

Szybkość zależy od systemów zewnętrznych: mogą odpowiadać wolno, wyświetlać CAPTCHA albo blokować adres IP. SearXNG jest zarządzaną warstwą pośrednią, a nie niezależnym indeksem.

Dlaczego SearXNG jest ciekawszy niż pojedyncza wyszukiwarka?

Różne źródła na jednej stronie wyników

Możesz łączyć wyszukiwarki ogólnego przeznaczenia ze źródłami specjalistycznymi: encyklopediami, mapami, publikacjami naukowymi, repozytoriami, serwisami informacyjnymi czy katalogami obrazów. Pomaga to, gdy zwykła strona wyników jest przeciążona stronami SEO albo ma trudności ze znalezieniem niszowych materiałów.

W chwili przygotowywania tego artykułu dokumentacja wymieniała 272 integracje, z czego 83 były włączone domyślnie. Nie oznacza to, że wszystkie są równie stabilne.

Zestaw zależy od konfiguracji. Kilka stabilnych źródeł zwykle działa szybciej niż włączenie wszystkiego naraz.

Szybkie polecenia

Skróty pozwalają tymczasowo wybrać wyszukiwarkę, kategorię lub język:

!wp docker compose       — search Wikipedia
!images northern lights  — search for images
:en !wp proxy server     — search Wikipedia in English

Polecenie !! przekierowuje użytkownika bezpośrednio do zewnętrznej wyszukiwarki. W tym trybie ochrona SearXNG przestaje obowiązywać.

Wyszukiwanie dla przeglądarki i własnych narzędzi

SearXNG obsługuje OpenSearch, więc można ustawić go jako domyślną wyszukiwarkę przeglądarki. Dostępne jest również HTTP API z odpowiedziami JSON, CSV lub RSS, jeśli administrator włączył odpowiednie formaty.

Pojedyncza instancja może działać jako backend wyszukiwania dla wewnętrznego panelu, bota, skryptu badawczego lub lokalnego asystenta AI. API powinno być udostępniane dopiero po skonfigurowaniu uwierzytelniania i limitów szybkości.

Jak prywatny jest SearXNG?

Co robiCzego nie robi
Nie wysyła plików cookie przeglądarki do zewnętrznych wyszukiwarekNie zapewnia pełnej anonimowości
Ukrywa IP użytkownika za adresem IP serweraNie chroni użytkownika po otwarciu strony z wyników
Usuwa reklamy stron trzecich i niektóre parametry śledzeniaNie gwarantuje, że właściciel cudzego serwera nie prowadzi logów
Może proxy’ować obrazyNie zastępuje VPN-u, Tora ani ochrony przeglądarki

Publiczna instancja jest wygodna do wypróbowania usługi, ale musisz zaufać jej administratorowi, a współdzielony adres IP częściej podlega limitom szybkości.

Własny serwer daje kontrolę nad logami, źródłami i dostępem, ale nie czyni przeglądarki anonimową.

Publiczna instancja, serwer domowy czy VPS?

OpcjaZaletyOgraniczenia
Publiczna instancjaNie trzeba nic instalowaćZaufanie do właściciela, przeciążenie, CAPTCHA
Serwer domowyPełna kontrola bez wynajmowania VPS-aUrządzenie musi działać stale; trudniejsza konfiguracja dostępu z zewnątrz
Własny VPSDziałanie 24/7, domena, HTTPS, dostęp z różnych urządzeńKontenery trzeba aktualizować, a bezpieczeństwo monitorować

Własna instancja SearXNG jest przydatna dla rodziny, zespołu, dewelopera lub lokalnych narzędzi AI. Przy sporadycznym wyszukiwaniu prostsza będzie instancja publiczna.

Jakiego VPS-a potrzebuje SearXNG?

Obciążenie zależy od liczby użytkowników, źródeł i jednoczesnych zapytań. Praktyczne konfiguracje początkowe:

ScenariuszCPURAMDysk
Jeden użytkownik1 vCPU1 GB10 GB
Rodzina lub mały zespół2 vCPU2 GB20 GB
API i dodatkowe usługi2–4 vCPUod 4 GBod 30 GB

Duży dysk nie jest potrzebny. Ważniejsze są jakość sieci, stabilny adres IP i zapas RAM-u.

VPS Linux od tropic.host pasuje do tego scenariusza: możesz zacząć od małej konfiguracji i zwiększyć zasoby wraz z dodawaniem użytkowników lub dostępu do API. Przy wyborze planu lepiej zainwestować w RAM i jakość sieci niż przepłacać za pojemność dysku.

Instalacja SearXNG na VPS-ie za pomocą Docker Compose

Ten przykład używa Ubuntu 24.04 LTS, domeny search.example.com, Valkey i Caddy. Skieruj rekord DNS A na serwer i otwórz porty 80 oraz 443.

1. Zainstaluj Dockera i utwórz katalog

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

Utwórz plik .env z domeną i losowym sekretem:

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. Utwórz 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. Skonfiguruj SearXNG

Utwórz 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

Utwórz searxng/limiter.toml:

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

Limiter zmniejsza ryzyko przeciążenia instancji przez boty i wcześniejszego ograniczenia jej adresu IP przez zewnętrzne wyszukiwarki.

4. Dodaj hasło i HTTPS

Wygeneruj hash silnego hasła:

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'REPLACE_WITH_PASSWORD'

Wstaw otrzymany hash do Caddyfile:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSERT_HASH_HERE
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

Caddy przechowuje hash, a nie hasło w postaci jawnego tekstu. Zamiast Basic Auth usługę można również ograniczyć do VPN-u.

5. Uruchom kontenery

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Otwórz https://search.example.com. Caddy automatycznie pobierze certyfikat TLS, po czym przeglądarka poprosi o nazwę użytkownika searchuser i hasło. Logi SearXNG są dostępne za pomocą polecenia:

sudo docker compose logs -f searxng

Co skonfigurować po uruchomieniu?

Zostaw tylko przydatne źródła, wybierz język i ustawienie SafeSearch, a następnie dodaj SearXNG do przeglądarki przez OpenSearch. Aby go zaktualizować, uruchom:

sudo docker compose pull
sudo docker compose up -d

Wykonuj kopie .env, Caddyfile i katalogu searxng. Włącz JSON API tylko wtedy, gdy jest potrzebne, i nie pozostawiaj go bez hasła oraz limitowania szybkości.

Typowe błędy

BłądSkutekRozwiązanie
Udostępnienie instancji publicznieBoty zwiększają obciążenie, a IP jest częściej ograniczaneUżyj hasła, VPN-u lub jednokrotnego logowania
Włączenie zbyt wielu źródełWolne wyniki i przekroczenia czasuZostaw kilka stabilnych wyszukiwarek
Traktowanie SearXNG jak własnego indeksuCzęść wyników znika, gdy systemy zewnętrzne ulegają awariiUwzględnij zależność od źródeł
Oczekiwanie pełnej anonimowościDocelowa strona nadal może śledzić przeglądarkęUżyj ochrony przeglądarki, VPN-u lub Tora
Uruchomienie bez HTTPSZapytania i hasło są przesyłane niezabezpieczoneUżyj reverse proxy z TLS

Podsumowanie

SearXNG łączy różne źródła w jednym interfejsie, ogranicza personalizację i zapewnia jedną usługę wyszukiwania dla przeglądarki, skryptów lub lokalnej AI. Publiczna instancja wystarczy do testów. Przy regularnym korzystaniu lepszym wyborem jest własny serwer z HTTPS, uwierzytelnianiem, limiterem i niewielkim zestawem stabilnych źródeł.

Możesz zacząć od 1 GB RAM-u. Zwiększaj zasoby wraz ze wzrostem liczby użytkowników, po włączeniu API lub uruchomieniu dodatkowych kontenerów.

FAQ

Czy SearXNG jest całkowicie anonimowy?

Nie. Ukrywa część danych przed zewnętrznymi wyszukiwarkami, ale administrator instancji może prowadzić logi. Po otwarciu strony zaczynają obowiązywać jej własne mechanizmy śledzenia.

Czy SearXNG jest lepszy od Google?

Rozwiązuje inny problem. Google zwykle działa szybciej i silniej personalizuje wyniki. SearXNG daje większą kontrolę, pozwala łączyć źródła i w mniejszym stopniu zależy od profilu użytkownika.

Czy mogę używać SearXNG bez VPS-a?

Tak. Możesz użyć publicznej instancji, komputera domowego, NAS-a lub serwera mini. VPS jest potrzebny do całodobowego dostępu z dowolnej sieci.

Ile RAM-u jest potrzebne?

Dla jednego użytkownika rozsądny jest start od 1 GB. Dla rodziny, zespołu, API lub dodatkowych kontenerów lepiej przeznaczyć 2–4 GB.

Czy SearXNG można połączyć z przeglądarką lub AI?

Tak. Przeglądarka może korzystać z OpenSearch, a aplikacje z HTTP API. Dostęp do API należy chronić uwierzytelnianiem i limiterem.