SearXNG
A private metasearch engine - 200+ engines, no tracking. Your search homepage and your RAG backend.
One-click deploy, from $5/mo on a Miget plan.
SearXNG is a privacy-respecting metasearch engine: it queries 200+ search engines and blends the results, with no tracking, no profiling, and no ads. Use it as your own search homepage that never builds a profile on you, on your own domain.
It is also the standard web-search backend for AI: point this catalogue’s open-webui, litellm, dify, or flowise at it to give models live web results, keeping the queries on your own infrastructure instead of a third-party search API.
The image self-serves HTTP on port 5000 via SEARXNG_PORT - no separate proxy needed. Set a secret so sessions survive restarts; for a public, rate-limited instance, add a managed Valkey. Otherwise it is a single light container.
Upstream project: SearXNG
#what you get
- Aggregates 200+ engines; no tracking, no ads, no profiling
- Great private search homepage on your own domain
- A clean web-search backend for RAG and AI agents
- Self-serves HTTP on port 5000 - no proxy needed
- Optional managed Valkey for rate-limiting public instances
- AGPL-3.0, light footprint
#topology
| Service | Role | Public |
|---|---|---|
| searxng | metasearch engine (:5000) | yes (or private for RAG) |
| config volume | settings.yml + cache | no |
#miget sizing
// this stack needs
512 MiB RAM · 3 GB disk · 1 service
512 MiB is comfortable for a personal or RAG instance. Add a managed Valkey and SEARXNG_LIMITER=true only if you expose it publicly and want rate-limiting.
Hobby - recommended fit
$5/mo
1 vCPU · 512 MiB · 10 GiB disk
Headroom for your own apps: 1 GiB at $7/mo
Professional - production
$22/mo
1 vCPU · 2 GiB · 10 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| SearXNG on Miget ★ | 512 MiB plan | $5 | this whole stack, flat - no usage meters, and room left for your own apps |
| Kagi | Professional | ~$10 | $10/mo for private search |
Kagi charges for private search; SearXNG is free software giving you private metasearch on your own domain (and a RAG backend).
#vs. other PaaS
Estimated monthly cost of running this exact stack (512 MiB RAM, 3 GB disk, 1 container) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $5 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$25 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| DO App Platform | ~$11 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Render | ~$8 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| Railway | ~$5 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$3 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
searxng -
Set the required variables:
SEARXNG_SECRET, set explicitly so sessions survive restartsSEARXNG_BASE_URL, the https domain, with a trailing slash
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/searxng
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
Can AI tools use it for web search?
Yes - that is one of its best uses. open-webui, litellm, dify, and flowise all support SearXNG as a web-search tool, so your models get live results while the search queries stay on your own infrastructure.
Do I need Redis or a separate proxy?
No. The image self-serves HTTP on port 5000 (via SEARXNG_PORT) with no extra proxy. A managed Valkey is optional - only needed for the rate-limiter on a public instance.
Why set SEARXNG_SECRET explicitly?
If you do not set it, SearXNG generates a new secret on each restart, which resets sessions. Setting it (a long random string) keeps the instance stable across redeploys on Miget.
Ship SearXNG today
One compose stack, 512 MiB of RAM, from $5/month flat, and it runs on your laptop with the same files.