Set up web search
Karja's Web Search app needs a search backend. There's no shared default that works reliably, so it's bring-your-own - pick one of the two options below.
Brave Search API
Easiest. A free tier of about 1,000 queries a month. Sign-up needs a card (not charged for free usage). A couple of minutes to set up.
SearXNG (self-hosted)
Most private. A metasearch engine you run yourself. More setup, but no third-party key and no query limit - and it unlocks ad-free embedded video.
Option A - Brave Search API
Get a free API key
Go to brave.com/search/api, sign up, and choose the Free plan. Brave now asks for a card to verify your identity - it isn’t charged for free usage. The free tier gives $5 in credits every month, about 1,000 queries.
Copy your key
From the Brave API dashboard, copy your subscription token (the API key).
Paste it into Karja
In Karja, open Settings → Search, choose Brave Search API, paste your key, and click Test connection. When it says Working, you're done.
Note: with Brave, video results open in your browser. For ad-free video embedded inside Karja, use SearXNG below.
Option B - Self-hosted SearXNG
SearXNG is a free, open-source metasearch engine. Public instances almost always block the JSON API that Karja needs, so run your own - Docker is the easy path.
Run SearXNG with Docker
Follow the official Docker installation guide . The quickest start maps it to port 8888 and mounts a local config folder so you can edit settings (see the next step):
docker run -d --name searxng -p 8888:8080 \
-v "$(pwd)/searxng:/etc/searxng" searxng/searxng Your instance is then at http://localhost:8888.
Enable the JSON API
This is the step people miss: Karja reads results as JSON, which is
off by default. SearXNG keeps its config at
/etc/searxng/settings.yml inside the container - with the
volume mount above, that's the settings.yml that appears
in the searxng folder next to where you ran Docker (it's
generated on first start), so you can edit it directly on your machine.
Add json under search.formats:
search:
formats:
- html
- json Then restart the container so the change takes effect.
Point Karja at it
In Karja, open Settings → Search, choose
SearXNG (self-hosted), enter your instance URL
(e.g. http://localhost:8888), and click
Test connection.
Good to know
- One backend powers all of Web Search - web, news, images, and video alike. Set it once.
- SearXNG must stay running (on your machine or a home server) for search to work in Karja.
- Don't rely on a public SearXNG instance - they generally block the JSON API and will fail the connection test.
Brave Search and SearXNG are trademarks of their respective owners. Karja is not affiliated with, endorsed by, or sponsored by them.