Journal-indexDockup / praktijknotitie
Note / self-host-searxng

SearXNG zelf hosten in 2026: Search API, rate limits en TLS

Host SearXNG zelf met de juiste poorten, persistente opslag, HTTPS, secrets, back-ups en controles voor upgrades. Leer hoe je problemen oplost wanneer engines het server-IP blokkeren.

De meeste installatiehandleidingen voor SearXNG stoppen na het laden van de eerste pagina. Dat is te vroeg: engines kunnen het server-IP blokkeren of formats kunnen json voor API-clients weglaten. Een nuttige productietest is veeleisender: voer zowel HTML- als JSON-searches uit, controleer of meerdere engines resultaten bijdragen en activeer de geconfigureerde limiter vanuit een testclient.

De rol van SearXNG is eenvoudig: een privacygerichte metasearch engine en search API. De operationele scope omvat meer dan alleen het webproces. Daarom moeten de dependency, opgeslagen state en publieke route expliciet worden vastgelegd voordat er echte data binnenkomt.

Bepaal eerst wat succes voor SearXNG betekent

Laat de SearXNG-image niet per ongeluk de productiearchitectuur bepalen. De image levert een proces op poort 8080; opslag, routing en externe vereisten hebben nog steeds bewust ontworpen lifecycles nodig. Het netwerkcontract voor SearXNG is Redis of Valkey wanneer limiter- en bot-detection-features zijn ingeschakeld. Houd private endpoints op interne DNS, sta alleen vereiste outbound calls toe en geef SearXNG een scoped service credential.

De deployment is klaar voor uitgebreidere tests wanneer deze zowel HTML- als JSON-searches kan uitvoeren, kan bevestigen dat meerdere engines resultaten bijdragen en de geconfigureerde limiter vanuit een testclient kan activeren. Volg de transactie in de logs en houd upstream-engine-latency, gelijktijdige queries, result parsing en bans die aan het server-IP zijn opgelegd in de gaten. Die observaties laten zien of de huidige topology het juiste component isoleert.

Maak onderscheid tussen vervangbare containers en blijvende data

Maak een recovery-manifest voor SearXNG met settings.yml, limiterconfiguratie en eventuele lokale plugins. Mount /etc/searxng vóór de bootstrap, schrijf onschadelijke voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Controleer nu het eigenaarschap en de beschikbare schijfruimte, want een gemount maar niet-schrijfbaar pad gedraagt zich alsof er helemaal geen persistence is.

Maak back-ups naar een failure domain dat losstaat van de draaiende server. Recreate SearXNG vanuit de gepinde image en controleer of custom engines, formats, limiterregels en proxy-instellingen terugkomen en een bekende query resultaten van meerdere engines oplevert. De handleiding voor persistent volumes helpt om deze oefening te vertalen naar snapshot- en retentionbeleid.

Sluit tijdelijke setup-toegang af

Bootstrap-credentials zijn tijdelijk; het trustmodel is permanent. Let bij SearXNG op het meesturen van de voorbeeldwaarde voor secret_key of het uitschakelen van rate controls op een publiek endpoint. Gebruik een niet-standaard secret key, schakel abuse controls in en stel JSON alleen beschikbaar wanneer een agent of applicatie dit nodig heeft.

Behandel SEARXNG_SECRET in overeenstemming met de rol ervan binnen SearXNG: houd gevoelige waarden uit Git, documenteer de gevolgen van rotatie en vervang een publiek voorbeeld nooit door productiegebruik. Start de image zonder onnodige Linux-capabilities en publiceer alleen de publieke applicatieroute. Houd administratoractiviteit zichtbaar zonder secretwaarden vast te leggen.

Leg een goedgekeurde SearXNG-deployment vast

Maak van de SearXNG-smoketest een herhaalbaar releasecommando of een korte runbook. De output moet het volgende aantonen: voer zowel HTML- als JSON-searches uit, bevestig dat meerdere engines resultaten bijdragen en activeer de geconfigureerde limiter vanuit een testclient. Leg samen met het resultaat de applicatieversie, container digest, route-hostname en identifier van de testdata vast.

Voer dezelfde controle uit na een reguliere containerswap en nadat je settings.yml, limiterconfiguratie en eventuele lokale plugins ergens anders hebt hersteld. De restore is geslaagd wanneer custom engines, formats, limiterregels en proxy-instellingen terugkomen en een bekende query resultaten van meerdere engines oplevert. Vergelijk timing en verbruik in relatie tot upstream-engine-latency, gelijktijdige queries, result parsing en bans die aan het server-IP zijn opgelegd; een grote verandering verdient onderzoek, ook wanneer de uiteindelijke actie nog steeds slaagt.

Test daarna een veilige failure: blokkeer tijdelijk de toegang van de testidentiteit tot Redis of Valkey wanneer limiter- en bot-detection-features zijn ingeschakeld. Controleer of SearXNG de fout zichtbaar maakt en zonder destructieve handmatige wijzigingen terugkeert naar normaal gedrag. Bewaar alleen het noodzakelijke, geredigeerde logfragment. Deze vierdelige gate dekt startup, persistence, recovery en failure handling.

Start de eerste productieachtige instance

Gebruik de container als vervangbare runtime, niet als bron van waarheid.

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

Voeg de gecontroleerde connection settings voor Redis of Valkey toe wanneer limiter- en bot-detection-features zijn ingeschakeld; gebruik private namen voor private services. Controleer de container user, schrijfbare paden en gebonden listener voordat je de service publiceert. Voer de volledige actie uit — voer zowel HTML- als JSON-searches uit, bevestig dat meerdere engines resultaten bijdragen en activeer de geconfigureerde limiter vanuit een testclient — en bewaar de exacte image reference die het resultaat heeft opgeleverd.

Voorkom dat proxy-succes applicatiefouten maskeert

Publiceer één HTTPS-hostname voor SearXNG en houd raw port 8080 private. Stel server base_url en trusted proxy headers in voor HTTPS. Zo voorkom je dat browsers en API-clients twee concurrerende adressen leren kennen.

Voer vanaf een schone client de bekende, geslaagde transactie uit en inspecteer de eerste request die faalt. Gebruik de handleiding voor custom domains wanneer DNS of TLS niet correct is. Behandel “engines block the server IP or formats omit json for API clients” als een afzonderlijke applicatiediagnose zodra de route is gevalideerd.

Logs die de volgende vraag beantwoorden

De eerste bruikbare operationele metric voor SearXNG is of het zowel HTML- als JSON-searches kan uitvoeren, kan bevestigen dat meerdere engines resultaten bijdragen en de geconfigureerde limiter vanuit een testclient kan activeren. Combineer dit met saturation-signalen voor upstream-engine-latency, gelijktijdige queries, result parsing en bans die aan het server-IP zijn opgelegd. Een process-only probe mag geen dure dependencies aanroepen of de container herstarten omdat een upstream tijdelijk niet beschikbaar is.

Behandel upgrades als datawijzigingen, omdat syntax van settings, engine-definities en limitergedrag kunnen veranderen. Deploy configuratie- en imagewijzigingen daarom als één review. Pin versies, oefen op een herstelde state en houd de vorige image beschikbaar totdat een rollback geldig blijft. Wanneer engines het server-IP blokkeren of formats json voor API-clients weglaten, bewaar dan de logs van vóór de restart; daarin staat meestal de oorzaak.

Koppel SearXNG aan de lifecycle van Dockup

De platformlaag voor SearXNG bestaat uit poort 8080, ingress, TLS, runtimeconfiguratie, opslag en bereikbaarheid van dependencies. Dockup kan deze onderdelen reproduceren voor de eigen infrastructuur of voor een server die de klant koppelt.

Daarna rondt de operator de productlaag af: stel server base_url en trusted proxy headers in voor HTTPS; dwing deze toegangsregel af — gebruik een niet-standaard secret key, schakel abuse controls in en stel JSON alleen beschikbaar wanneer een agent of applicatie dit nodig heeft — en voer “submit both HTML and JSON searches, confirm several engines contribute results and trigger the configured limiter from a test client” uit. Door die test samen met de deployment vast te leggen, voorkom je dat geautomatiseerde provisioning wordt verward met applicatiereedheid.

Veelgestelde vragen

Wat heeft SearXNG nodig voor een productiedeployment?

Route de SearXNG-container op poort 8080 via één HTTPS-origin. De bijbehorende netwerkvereiste is Redis of Valkey wanneer limiter- en bot-detection-features zijn ingeschakeld. Beschouw SearXNG pas als gereed wanneer je zowel HTML- als JSON-searches kunt uitvoeren, kunt bevestigen dat meerdere engines resultaten bijdragen en de geconfigureerde limiter vanuit een testclient kunt activeren.

Welke SearXNG-data hoort in een back-up?

Maak /etc/searxng persistent en neem settings.yml, limiterconfiguratie en eventuele lokale plugins op in hetzelfde recovery-manifest. Een schone SearXNG-restore is alleen geslaagd wanneer custom engines, formats, limiterregels en proxy-instellingen terugkomen en een bekende query resultaten van meerdere engines oplevert.

Heeft SearXNG HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke SearXNG-origin en houd poort 8080 op de interne route. Pas de SearXNG-instelling correct toe: stel server base_url en trusted proxy headers in voor HTTPS. Voor SearXNG beschermt HTTPS credentials of gebruikerscontent tijdens transport en houdt het origin-gevoelig clientgedrag consistent.

Hoe test je een SearXNG-upgrade?

Herstel de huidige SearXNG-state in een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let hier extra op omdat syntax van settings, engine-definities en limitergedrag kunnen veranderen. Deploy configuratie- en imagewijzigingen daarom als één review. Houd de vorige SearXNG-image beschikbaar totdat de grenzen voor datamigratie en rollback duidelijk zijn.