Indexul jurnaluluiDockup / notă de teren
Note / self-host-searxng

Cum găzduiești SearXNG în 2026: Search API, limite de trafic și TLS

Găzduiește SearXNG pe propria infrastructură, cu porturi corecte, stocare persistentă, HTTPS, secrete, backupuri și verificări la upgrade. Află cum remediezi situațiile în care engines blochează IP-ul serverului.

Majoritatea notițelor despre instalarea SearXNG se opresc după prima încărcare a paginii. Este prea devreme: engines pot bloca IP-ul serverului, iar unele formate pot omite JSON pentru clienții API. Un test util pentru producție este mai riguros — trimite atât căutări HTML, cât și JSON, confirmă că mai multe engines contribuie cu rezultate și declanșează limiter-ul configurat de la un client de test.

Rolul SearXNG este simplu: este un metasearch engine axat pe confidențialitate și un search API. Limita sa operațională include mai mult decât procesul web, astfel că dependența, starea persistentă și ruta publică trebuie precizate explicit înainte să ajungă date reale în sistem.

Definește mai întâi criteriile de succes pentru SearXNG

Nu lăsa imaginea SearXNG să aleagă accidental arhitectura de producție. Imaginea furnizează un proces pe portul 8080; stocarea, rutarea și cerințele externe au în continuare nevoie de cicluri de viață gestionate intenționat. Contractul de rețea pentru SearXNG este Redis sau Valkey atunci când sunt activate funcțiile de limitare și de detectare a boților. Păstrează endpointurile private în DNS intern, permite doar apelurile outbound necesare și acordă-i SearXNG un credential de serviciu cu scop limitat.

Implementarea este pregătită pentru teste mai aprofundate atunci când poate trimite atât căutări HTML, cât și JSON, poate confirma că mai multe engines contribuie cu rezultate și poate declanșa limiter-ul configurat de la un client de test. Urmărește tranzacția în logs și monitorizează latența upstream-engine, interogările simultane, parsarea rezultatelor și banurile aplicate IP-ului serverului. Aceste observații arată dacă topologia actuală izolează componenta potrivită.

Separă containerele înlocuibile de datele persistente

Creează un manifest de recovery pentru SearXNG: settings.yml, configurația limiter-ului și orice pluginuri locale. Montează /etc/searxng înainte de bootstrap, scrie date de test inofensive și înlocuiește containerul pentru a demonstra că acea cale este într-adevăr persistentă. Verifică acum ownership-ul și spațiul liber, deoarece o cale montată, dar fără drepturi de scriere, se comportă exact ca și cum nu ar exista persistență.

Fă backup într-un failure domain separat de serverul activ. Recreează SearXNG din imaginea sa fixată la o versiune și verifică dacă engines personalizate, formatele, regulile limiter-ului și setările de proxy reapar, iar o interogare cunoscută produce rezultate de la mai multe engines. Ghidul despre volume persistente te ajută să transformi acest exercițiu într-o politică de snapshot și retenție.

Închide accesul temporar de configurare

Credentialele de bootstrap sunt temporare; modelul de încredere este permanent. În cazul SearXNG, fii atent să nu livrezi secret_key-ul exemplu sau să dezactivezi controalele de rate pe un endpoint public și păstrează o cheie secretă care nu este cea implicită, activează controalele împotriva abuzurilor și expune JSON doar atunci când un agent sau o aplicație are nevoie de el.

Tratează SEARXNG_SECRET în funcție de rolul său în SearXNG: păstrează valorile sensibile în afara Git, documentează efectele rotirii și nu înlocui niciodată un exemplu public în producție. Rulează imaginea fără capabilities Linux inutile și expune doar ruta publică a aplicației. Păstrează vizibilă activitatea administratorilor fără să înregistrezi valorile secrete.

Documentează o implementare SearXNG verificată

Transformă smoke test-ul SearXNG într-o comandă de release repetabilă sau într-un runbook scurt. Rezultatul trebuie să demonstreze următoarea stare: trimite atât căutări HTML, cât și JSON, confirmă că mai multe engines contribuie cu rezultate și declanșează limiter-ul configurat de la un client de test. Înregistrează împreună cu rezultatul versiunea aplicației, digest-ul containerului, hostname-ul rutei și identificatorul datelor de test.

Rulează aceeași verificare după înlocuirea de rutină a containerului și după restaurarea settings.yml, a configurației limiter-ului și a pluginurilor locale în altă locație. Restaurarea a reușit atunci când engines personalizate, formatele, regulile limiter-ului și setările de proxy reapar, iar o interogare cunoscută produce rezultate de la mai multe engines. Compară durata și consumul asociate cu latența upstream-engine, interogările simultane, parsarea rezultatelor și banurile aplicate IP-ului serverului; o schimbare majoră merită investigată chiar dacă acțiunea finală trece în continuare.

Apoi testează o defecțiune sigură: refuză temporar identității de test accesul la Redis sau Valkey atunci când sunt activate funcțiile de limitare și detectare a boților. Confirmă că SearXNG semnalează problema și revine la normal fără modificări manuale distructive. Păstrează doar fragmentul necesar și redactat din logs. Acest gate în patru părți acoperă pornirea, persistența, recuperarea și gestionarea defecțiunilor.

Rulează prima instanță cu structură apropiată de producție

Folosește containerul ca runtime înlocuibil, nu ca sursă a adevărului.

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

Adaugă setările de conexiune verificate pentru Redis sau Valkey atunci când sunt activate funcțiile de limitare și detectare a boților; folosește nume private pentru serviciile private. Inspectează utilizatorul containerului, căile cu drept de scriere și listener-ul configurat înainte de a-l expune. Rulează acțiunea completă — trimite atât căutări HTML, cât și JSON, confirmă că mai multe engines contribuie cu rezultate și declanșează limiter-ul configurat de la un client de test — și salvează referința exactă a imaginii care a produs rezultatul.

Împiedică succesul proxy-ului să mascheze o problemă a aplicației

Expune un singur hostname HTTPS pentru SearXNG; păstrează portul brut 8080 privat. Setează server base_url și trusted proxy headers pentru HTTPS. Astfel, browserele și clienții API nu vor afla două adrese concurente.

De pe un client curat, rulează tranzacția verificată și inspectează prima cerere care eșuează. Folosește ghidul pentru domenii personalizate atunci când DNS-ul sau TLS-ul este configurat greșit. Tratează situația „engines blochează IP-ul serverului sau formatele omit JSON pentru clienții API” ca pe o diagnosticare separată a aplicației, după ce ruta a fost verificată.

Logs care răspund la următoarea întrebare

Prima metrică operațională utilă pentru SearXNG este dacă poate trimite atât căutări HTML, cât și JSON, poate confirma că mai multe engines contribuie cu rezultate și poate declanșa limiter-ul configurat de la un client de test. Asociază această metrică cu semnale de saturație pentru latența upstream-engine, interogările simultane, parsarea rezultatelor și banurile aplicate IP-ului serverului. Un probe care verifică doar procesul nu ar trebui să apeleze dependențe costisitoare sau să repornească containerul deoarece un upstream este temporar indisponibil.

Tratează upgrade-urile ca schimbări de date, deoarece sintaxa setărilor, definițiile engines și comportamentul limiter-ului se pot modifica, așa că implementează configurația și schimbările de imagine ca parte a aceleiași revizii. Fixează versiunile, repetă testele pe o stare restaurată și păstrează imaginea anterioară disponibilă până când rollback-ul rămâne valid. Atunci când engines blochează IP-ul serverului sau formatele omit JSON pentru clienții API, păstrează logs de dinaintea restartului; acestea conțin de obicei mesajul cauzal.

Integrează SearXNG în ciclul de viață Dockup

Stratul de platformă pentru SearXNG este format din portul 8080, ingress, TLS, configurația runtime, stocare și accesibilitatea dependențelor. Dockup poate reproduce aceste componente pentru propria infrastructură sau pentru un server conectat de client.

Apoi operatorul finalizează stratul de produs: setează server base_url și trusted proxy headers pentru HTTPS; impune această regulă de acces — păstrează o cheie secretă care nu este cea implicită, activează controalele împotriva abuzurilor și expune JSON doar atunci când un agent sau o aplicație are nevoie de el; și rulează „trimite atât căutări HTML, cât și JSON, confirmă că mai multe engines contribuie cu rezultate și declanșează limiter-ul configurat de la un client de test”. Înregistrarea acestui test alături de implementare evită confundarea provisioning-ului automat cu disponibilitatea aplicației.

Întrebări frecvente

De ce are nevoie SearXNG pentru o implementare de producție?

Rutează containerul SearXNG de pe portul 8080 printr-un singur origin HTTPS. Cerința de rețea pentru infrastructura de suport este Redis sau Valkey atunci când sunt activate funcțiile de limitare și detectare a boților. Nu considera SearXNG pregătit până când nu poți trimite atât căutări HTML, cât și JSON, nu poți confirma că mai multe engines contribuie cu rezultate și nu poți declanșa limiter-ul configurat de la un client de test.

Ce date SearXNG trebuie incluse într-un backup?

Păstrează /etc/searxng și include settings.yml, configurația limiter-ului și orice pluginuri locale în același manifest de recovery. O restaurare SearXNG curată este reușită doar atunci când engines personalizate, formatele, regulile limiter-ului și setările de proxy reapar, iar o interogare cunoscută produce rezultate de la mai multe engines.

Are SearXNG nevoie de HTTPS în spatele unui reverse proxy?

Folosește HTTPS pentru origin-ul public SearXNG și păstrează portul 8080 pe ruta internă. Aplică corect setarea SearXNG: setează server base_url și trusted proxy headers pentru HTTPS. Pentru SearXNG, HTTPS protejează credentialele sau conținutul utilizatorilor în tranzit și menține coerent comportamentul clientului dependent de origin.

Cum trebuie testat un upgrade SearXNG?

Restaurează starea curentă SearXNG într-o implementare izolată, aplică versiunea candidat și repetă tranzacția de acceptanță. Acordă o atenție deosebită acestui aspect deoarece sintaxa setărilor, definițiile engines și comportamentul limiter-ului se pot modifica, așa că implementează configurația și schimbările de imagine ca parte a aceleiași revizii. Păstrează imaginea SearXNG anterioară până când limitele migrației datelor și ale rollback-ului sunt clare.