Index denníkaDockup / poznámka z terénu
Note / self-host-searxng

Ako hostovať SearXNG vo vlastnej réžii v roku 2026: Search API, limity požiadaviek a TLS

Hostujte SearXNG vo vlastnej réžii so správne nastavenými portmi, persistentným úložiskom, HTTPS, secrets, zálohami a kontrolami aktualizácií. Zistite, ako vyriešiť situáciu, keď engines zablokujú IP adresu servera.

Väčšina poznámok k inštalácii SearXNG končí pri prvom načítaní stránky. To je príliš skoro: engines môžu zablokovať IP adresu servera alebo formáty nemusia pre API klientov poskytovať json. Užitočný production test je náročnejší — odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter.

Úloha SearXNG je jasná: privacy-focused metasearch engine a search API. Jeho prevádzkové hranice zahŕňajú viac než len webový proces, preto treba pred príchodom reálnych dát explicitne pomenovať dependency, uložený stav aj verejnú route.

Najprv definujte úspech pre SearXNG

Nedovoľte, aby image SearXNG náhodou určil production architektúru. Image poskytuje proces na porte 8080; storage, routing a externé požiadavky si stále vyžadujú premyslené lifecycle. Network contract pre SearXNG je Redis alebo Valkey, ak sú povolené limiter a funkcie na detekciu botov. Súkromné endpoints ponechajte na internom DNS, povoľte iba potrebné outbound calls a SearXNG priraďte service credential s obmedzeným rozsahom.

Deployment je pripravený na dôkladnejšie testovanie vtedy, keď dokáže odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter. Sledujte transakciu v logoch a monitorujte latency upstream engines, súbežné queries, parsing výsledkov a blokovania uplatnené na IP adresu servera. Tieto pozorovania ukážu, či aktuálna topológia izoluje správny komponent.

Oddeľte vymeniteľné kontajnery od trvalých dát

Pripravte recovery manifest pre SearXNG: settings.yml, konfiguráciu limiter a všetky lokálne plugins. Pred bootstrapom pripojte /etc/searxng, zapíšte neškodné testovacie dáta a nahraďte kontajner, aby ste overili, že táto cesta je skutočne persistentná. Skontrolujte ownership a voľné miesto už teraz, pretože pripojená, ale nezapisovateľná cesta sa správa, akoby nebola persistentná vôbec.

Zálohujte do failure domain oddelenej od bežiaceho servera. Znovu vytvorte SearXNG z pinned image a overte, že sa vrátia custom engines, formáty, pravidlá limiter a proxy settings a že známy query produkuje výsledky z viacerých engines. Sprievodca persistent volumes pomôže pretaviť toto cvičenie do snapshot a retention policy.

Zatvorte dočasný prístup na setup

Bootstrap credentials sú dočasné; trust model je trvalý. Pri SearXNG si dajte pozor na nasadenie ukážkového secret_key alebo vypnutie rate controls na verejnom endpointe. Ponechajte non-default secret key, povoľte abuse controls a JSON sprístupnite iba vtedy, keď ho agent alebo aplikácia vyžaduje.

S premennou SEARXNG_SECRET zaobchádzajte podľa jej úlohy v SearXNG: citlivé hodnoty uchovávajte mimo Gitu, zdokumentujte dôsledky rotácie a v production nikdy nepoužívajte verejne dostupný príklad. Spúšťajte image bez nepotrebných Linux capabilities a vystavte iba verejnú application route. Aktivitu administrátorov ponechajte viditeľnú bez zaznamenávania secret values.

Zdokumentujte overený deployment SearXNG

Premeňte smoke test SearXNG na opakovateľný release command alebo krátky runbook. Jeho výstup musí preukázať tento výsledok: odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter. Spolu s výsledkom zaznamenajte verziu aplikácie, container digest, hostname route a identifikátor testovacích dát.

Rovnakú kontrolu spustite po bežnej výmene kontajnera aj po obnovení settings.yml, konfigurácie limiter a všetkých lokálnych plugins na inom mieste. Obnovenie bolo úspešné vtedy, keď sa vrátia custom engines, formáty, pravidlá limiter a proxy settings a známy query produkuje výsledky z viacerých engines. Porovnajte timing a spotrebu súvisiacu s latency upstream engines, súbežnými queries, parsingom výsledkov a blokovaniami uplatnenými na IP adresu servera; výrazná zmena si zaslúži preskúmanie, aj keď finálna akcia stále prejde.

Následne otestujte bezpečné zlyhanie: dočasne odoberte testovanej identity prístup k Redis alebo Valkey, ak sú povolené limiter a funkcie na detekciu botov. Overte, že SearXNG chybu signalizuje a bez deštruktívnych manuálnych úprav sa vráti do normálneho stavu. Uchovajte iba nevyhnutný, redigovaný výňatok z logu. Táto štvorčasťová kontrola pokrýva startup, persistenciu, recovery a spracovanie zlyhaní.

Spustite prvú inštanciu v production-like režime

Kontajner používajte ako vymeniteľný runtime, nie ako miesto, kde sa nachádzajú zdrojové dáta.

docker run -d \
  --name searxng \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v searxng-data:/etc/searxng \
  -e SEARXNG_SECRET=replace-with-a-long-random-value \
  searxng/searxng:latest

Ak sú povolené limiter a funkcie na detekciu botov, pridajte skontrolované connection settings pre Redis alebo Valkey; pre private services používajte súkromné názvy. Pred vystavením služby skontrolujte používateľa kontajnera, zapisovateľné cesty a bound listener. Spustite celú akciu — odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter — a uložte presnú image reference, ktorá vytvorila výsledok.

Zabráňte tomu, aby úspech proxy zakryl zlyhanie aplikácie

Pre SearXNG vystavte jeden HTTPS hostname; raw port 8080 ponechajte súkromný. Nastavte server base_url a trusted proxy headers pre HTTPS. Zabránite tak tomu, aby sa browsers a API clients dozvedeli o dvoch konkurenčných adresách.

Z čistého klienta spustite overenú transakciu a preskúmajte prvý request, ktorý zlyhá. Ak je problém v DNS alebo TLS, použite sprievodcu custom domain. Tvrdenie „engines zablokujú IP adresu servera alebo formáty nemusia pre API klientov poskytovať json“ riešte ako samostatnú application diagnosis až po overení route.

Logy, ktoré odpovedia na ďalšiu otázku

Prvá užitočná operational metric pre SearXNG ukazuje, či dokáže odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter. Doplňte ju o saturation signals pre latency upstream engines, súbežné queries, parsing výsledkov a blokovania uplatnené na IP adresu servera. Probe zameraný iba na proces by nemal volať náročné dependencies ani reštartovať kontajner len preto, že upstream je krátkodobo nedostupný.

Aktualizácie považujte za zmeny dát, pretože syntax settings, definície engines a správanie limiter sa môžu meniť. Zmeny konfigurácie a image preto nasadzujte v rámci jedného review. Pinujte verzie, skúšajte ich na obnovenom stave a predchádzajúcu image ponechajte k dispozícii, kým rollback zostáva platný. Keď engines zablokujú IP adresu servera alebo formáty nemusia pre API klientov poskytovať json, uchovajte logy z obdobia pred reštartom; zvyčajne obsahujú príčinnú správu.

Pripojte SearXNG k lifecycle platformy Dockup

Platform layer pre SearXNG tvoria port 8080, ingress, TLS, runtime configuration, storage a reachability dependency. Dockup dokáže tieto časti reprodukovať pre vlastnú infraštruktúru alebo server, ktorý pripojí zákazník.

Operator potom dokončí product layer: nastaví server base_url a trusted proxy headers pre HTTPS; vynúti toto access rule — ponechať non-default secret key, povoliť abuse controls a sprístupniť JSON iba vtedy, keď ho agent alebo aplikácia vyžaduje; a spustí „odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter“. Zaznamenanie tohto testu spolu s deploymentom zabráni zámene automatizovaného provisioningu s pripravenosťou aplikácie.

Často kladené otázky

Čo potrebuje SearXNG na production deployment?

Nasmerujte SearXNG kontajner na porte 8080 cez jeden HTTPS origin. Podpornou network requirement je Redis alebo Valkey, ak sú povolené limiter a funkcie na detekciu botov. SearXNG nepovažujte za pripravený, kým nedokážete odoslať vyhľadávanie vo formáte HTML aj JSON, potvrdiť, že výsledky poskytuje viacero engines, a z testovacieho klienta aktivovať nakonfigurovaný limiter.

Ktoré dáta SearXNG patria do zálohy?

Persistujte /etc/searxng a do rovnakého recovery manifest zahrňte settings.yml, konfiguráciu limiter a všetky lokálne plugins. Čisté obnovenie SearXNG je úspešné iba vtedy, keď sa vrátia custom engines, formáty, pravidlá limiter a proxy settings a známy query produkuje výsledky z viacerých engines.

Vyžaduje SearXNG HTTPS za reverse proxy?

Pre verejný origin SearXNG používajte HTTPS a port 8080 ponechajte na internej route. Správne použite nastavenie SearXNG: nastavte server base_url a trusted proxy headers pre HTTPS. V prípade SearXNG HTTPS chráni credentials alebo user content prenášaný po sieti a zachováva konzistentné správanie klienta závislé od originu.

Ako testovať aktualizáciu SearXNG?

Obnovte aktuálny stav SearXNG do izolovaného deploymentu, aplikujte kandidátsku verziu a zopakujte jeho acceptance transaction. Venujte mimoriadnu pozornosť tomu, že syntax settings, definície engines a správanie limiter sa môžu meniť, preto zmeny konfigurácie a image nasadzujte v rámci jedného review. Predchádzajúcu image SearXNG ponechajte k dispozícii, kým nebudú jasné hranice migrácie dát a rollbacku.