metadata
title: Ingestics SearXNG
emoji: π
colorFrom: indigo
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
license: agpl-3.0
short_description: Private SearXNG backend for Ingestics deep research
Ingestics SearXNG (Private Research Backend)
This Space hosts a hardened SearXNG instance used only by the Ingestics web app as a deep-research backbone. It is not a public search frontend; rate limiting and quality filtering happen on the Cloudflare Worker side that consumes it.
What it does
- Aggregates results primarily from tolerant engines (DuckDuckGo, Brave, Qwant, Bing, Yahoo, Mojeek) plus Wikipedia/Wikidata/PubMed/Crossref/ Semantic Scholar. Google remains low-weight backup only.
- Exposes the SearXNG JSON API (
/search?q=...&format=json) for the Ingestics Cloudflare Pages worker to consume. - Nginx sits in front of SearXNG with micro-caching, connection caps, and request throttles. SearXNG's own limiter can be enabled when Valkey exists.
- Engine timeouts are tightened (4β8 s) so one slow upstream cannot pin a worker thread.
- Music / video / social media / torrent engines are disabled because they're noise for a health-info agent and tend to attract bot challenges that would burn our shared HF egress IP.
Hardware
- HF Spaces CPU Basic (2 vCPU, 16 GB RAM, 50 GB ephemeral disk).
- Granian is tuned for I/O-heavy workloads: 8 workers Γ 40 threads behind Nginx. The Worker-side cache/coalescing and Nginx micro-cache prevent duplicate bursts from becoming upstream engine floods.
Bot / IP-ban resilience
Five mitigations layer on top of each other:
- Rotating-proxy ready β set
SEARXNG_PROXY_HTTPand/orSEARXNG_PROXY_HTTPSas HF secrets. The boot script injects them intooutgoing.proxies, so a premium provider can rotate IPs behind one endpoint without committing credentials. - Nginx micro-cache β identical JSON searches cache for 3 minutes, use stale-on-error, and lock concurrent cache misses.
- Ingress throttles β Nginx caps per-IP request rate/connections and adds a separate client-marker budget for Worker traffic.
- Engine load distribution β tolerant engines have higher weights; Google is low-weight backup and noisy/video/torrent engines are disabled.
- Worker-side dedup + cache β the Cloudflare Worker coalesces identical in-flight queries and 10-minute caches completed research.
Security
- Set HF secrets
SEARXNG_PROXY_HTTP/SEARXNG_PROXY_HTTPSfor the rotating proxy provider endpoint. - Set the HF secret
SEARXNG_API_KEYif you want to require an API key on every call. The Worker pool will send it asX-API-KEY. When unset, the Space is effectively open β but its URL isn't publicised and HF lists it as private to the operator. SEARXNG_SECRETis auto-generated at every cold start unless pinned as a HF secret. Cookies are not used by JSON consumers anyway.public_instance: falsekeeps SearXNG's link_token middleware off so our consumer parses raw URLs.
Endpoints
GET /β the SearXNG search HTML page (useful for human debugging).GET /healthzβ upstream health endpoint.GET /search?q=...&format=jsonβ primary JSON API.GET /configβ engine list + version (debug).