vane / AI GuideGitHub
Back to the guide

Your own SearXNG.
Ready for Vane.

Configure a SearXNG instance for Vane, formerly Perplexica: enable the JSON format and Wolfram Alpha, protect the secret key, test the API, and connect the slim image.

Documentation checked October 23, 2026SearXNG · Docker · Slim image

Configure, test, connect.

01 Enable JSON in settings.yml
02 Test format=json
03 Point Vane at the URL

The standard Vane image already bundles SearXNG.

A documentation-based guide. The configuration comes from the SearXNG settings file in the Vane repository, and the explanations follow the official SearXNG documentation. We have not benchmarked SearXNG engines or tested this setup on our own hardware.

When you need your own SearXNG

Vane uses SearXNG, a metasearch engine, to fetch web results. The standard itzcrazykns1337/vane:latest image bundles SearXNG, so a basic Docker installation needs no separate search setup.

You need your own SearXNG instance when you:

  • use the slim-latest image, which leaves SearXNG out;
  • install Vane without Docker; or
  • already run SearXNG and want Vane to share it.

The Vane README requires two things from that instance: the JSON format enabled in its settings, and the Wolfram Alpha search engine enabled.

The settings.yml Vane needs

The Vane repository ships a SearXNG settings file. Here it is with the secret key replaced by a placeholder:

SearXNG settings.yml for Vane
use_default_settings: true

general:
  instance_name: 'searxng'

search:
  autocomplete: 'google'
  formats:
    - html
    - json

server:
  secret_key: 'REPLACE_WITH_YOUR_OWN_SECRET'

engines:
  - name: wolframalpha
    disabled: false
use_default_settings
Keeps SearXNG’s built-in defaults and applies only the changes listed in your file. Engines are merged by name.
formats
Lists the result formats SearXNG serves. The default is html only. Vane needs json.
wolframalpha
disabled: false turns the Wolfram Alpha engine on, as the Vane README requires.

SearXNG reads its settings from the path in the SEARXNG_SETTINGS_PATH environment variable, or from /etc/searxng/settings.yml. If you already have a settings file, add json to search: formats and the wolframalpha entry under engines: rather than replacing your configuration.

Set your own secret key

SearXNG uses secret_key for cryptographic purposes, and its documentation marks the example value “change this!”. The key in Vane’s repository is public, so do not reuse it for your own instance. You can set it in settings.yml or through the SEARXNG_SECRET environment variable, which overrides the file.

One way to generate a random value:

Generate a secret key
openssl rand -hex 32

This command is our suggestion. The SearXNG documentation does not prescribe a generator. Keep the value out of screenshots, public repositories, and support posts.

Run SearXNG with Docker

Save the file as config/settings.yml, then start SearXNG with the command from the SearXNG Docker documentation:

Start SearXNG
docker run --name searxng -d \
    -p 8888:8080 \
    -v "./config/:/etc/searxng/" \
    -v "./data/:/var/cache/searxng/" \
    docker.io/searxng/searxng:latest

The config folder is mounted at /etc/searxng, where SearXNG reads settings.yml. The data folder keeps cached data. SearXNG is then available at http://localhost:8888 on the host.

Restart SearXNG after you change settings.yml:

Restart
docker restart searxng

Keep it private. The command publishes port 8888 on all host interfaces. For a private Vane setup, do not forward this port to the internet, and restrict it with your firewall. This is our security guidance.

Test the JSON API before connecting Vane

Ask SearXNG for JSON directly, using the request format from the SearXNG search API documentation:

Test the JSON format
curl 'http://localhost:8888/search?q=searxng&format=json'

A working instance returns JSON search results. According to SearXNG, requesting a format that is not enabled returns a 403 Forbidden error. If you see that, check search: formats in settings.yml and restart SearXNG.

Connect the Vane slim image

The Vane README starts the slim image with your SearXNG URL in SEARXNG_API_URL:

Start Vane slim
docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:slim-latest

Replace http://your-searxng-url:8080 with your real address. Two details matter:

  • Use the published port. SearXNG listens on 8080 inside its container. The Docker command above publishes it on host port 8888, so use 8888 when you connect through the host.
  • Use an address the Vane container can reach. As with Ollama, localhost inside the Vane container is the container itself. Docker Desktop provides host.docker.internal for the host; on Linux, use the host’s private IP. See our connection guide.

Then open localhost:3000 and configure your model provider in Vane’s setup screen. For a non-Docker installation, enter the SearXNG URL in the setup screen instead.

Common problems

403 Forbidden when requesting format=json

JSON is not listed under search: formats in settings.yml. SearXNG only allows the formats listed there; by default, that is html. Add json, restart SearXNG, and test again.

Vane cannot connect to SearXNG

Check SEARXNG_API_URL. Inside the Vane container, localhost is the container itself. Use an address the container can reach and the port SearXNG is published on, for example 8888 with the Docker command above.

My settings.yml changes have no effect

Confirm the file is at /etc/searxng/settings.yml inside the container, or at the path in SEARXNG_SETTINGS_PATH, and restart SearXNG. If the file is missing, empty, or unreadable, SearXNG falls back to its built-in defaults.

A public SearXNG instance refuses JSON

Many public instances disable the JSON format. Run your own instance instead of pointing Vane at someone else’s server.

Some engines stop returning results

After errors such as CAPTCHAs, access denied, or too many requests, SearXNG suspends the engine for a while. The durations are set by suspended_times in the search: section; for example, the default for “too many requests” is 3600 seconds.

Sources and editorial notes

This independent guide is not affiliated with Vane or SearXNG. SearXNG documentation was checked on October 23, 2026. Both projects can change after that date.

Want the simplest setup?

The standard Vane image bundles SearXNG for you.

Read the installation guide