What You Need
- A VPS with 1 GB RAM (it is very light)
- Ubuntu 22.04 or 24.04 with SSH
- A domain or subdomain pointed at the server
Step 1: Install Docker
curl -fsSL https://get.docker.com | shStep 2: Compose with Caddy HTTPS
Save as docker-compose.yml. Caddy fetches the certificate automatically:
services:
searxng:
image: searxng/searxng:latest
restart: always
volumes:
- ./searxng:/etc/searxng
environment:
- SEARXNG_BASE_URL=https://search.example.com/
caddy:
image: caddy:2-alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
depends_on:
- searxng
volumes:
caddy_data:Step 3: The Caddyfile
search.example.com {
reverse_proxy searxng:8080
}Bring it up:
docker compose up -dStep 4: Lock It Down for Private Use
By default SearXNG is open. For a personal instance, edit searxng/settings.yml (created on first run) to disable public features and enable the JSON API only if you need it. The two settings that matter:
server:
limiter: true
search:
formats:
- htmlRestart with docker compose restart searxng. The limiter blocks bots hammering your instance, and restricting formats keeps it from being used as an open API by others.
Step 5: Use It Everywhere
Add your instance as a custom search engine in your browser, pointing at https://search.example.com/search?q=%s. Now every address-bar search goes through your private aggregator — no profile, no ads, no logs but your own.
What It Costs
SearXNG barely uses resources, so the Micro plan (1 vCPU, 1 GB) runs it comfortably. On NoctHost you pay hourly from a prepaid balance, top up with crypto, and get a dedicated IPv4 — so your private search engine is a couple of dollars a month with no card and no identity check, which fits the privacy point of running it at all.