11 min read July 22, 2026

Odysseus AI SearXNG Setup: Connect, Test, and Fix Web Search

A first-party-aligned guide to the bundled Docker service, external SearXNG URLs, provider testing, and the failure modes that stop web search or Deep Research.

Odysseus AI Wiki
Odysseus AI Wiki
Independent, fan-made local AI guides

Quick answer: For the standard Docker install, keep SEARXNG_INSTANCE set to http://searxng:8080 inside the Odysseus container, start the full Compose stack, then open Settings → Search, choose SearXNG, and run Test. Native installs normally use http://localhost:8080 instead.

An Odysseus AI SearXNG setup has two separate parts: the SearXNG service must be healthy, and the Odysseus process must use a URL it can actually reach. The official Docker stack handles most of this automatically, but copying localhost into the wrong container, starting only one service, or replacing the pinned image can break search. This guide follows the official Odysseus dev branch checked on July 22, 2026 and avoids claiming a stable Odysseus release version because the project currently publishes no GitHub Releases or tags.

How the Odysseus AI SearXNG setup works

SearXNG is the default self-hosted search provider in the current Odysseus interface. Web Search and Deep Research send requests to the configured provider, while the model receives the returned sources and extracted text. The model itself does not replace the search service.

The key networking rule is context. On the host, localhost:8080 points to the published SearXNG port. Inside the Odysseus Docker container, localhost points back to the Odysseus container, so the correct Compose service address is http://searxng:8080.

Odysseus runtime SearXNG URL Use when
Official Docker Compose http://searxng:8080 Odysseus and SearXNG run in the same Compose network
Native Odysseus on the host http://localhost:8080 SearXNG publishes port 8080 on the same computer
Remote or separate server https://your-search-host.example The Odysseus process can resolve and reach the protected endpoint

Use the bundled Docker SearXNG service

The official Compose file starts Odysseus, SearXNG, ChromaDB, and ntfy together. It binds SearXNG to 127.0.0.1:8080 on the host and injects the internal service URL into Odysseus. Start the whole stack from the repository root instead of launching only the application container.

The official file deliberately pins SearXNG to 2026.5.31-7159b8aed as of this page's review date. Do not replace it with :latest merely to chase freshness; the project comments explain that a newer upstream image previously failed its health check.

Do not use localhost inside the container

For the standard Compose deployment, the Odysseus container must reach http://searxng:8080. The host-only URL http://localhost:8080 is for a native process or a browser running on the host.

  1. Create the environment file

    Copy .env.example to .env and keep SEARXNG_SECRET blank unless you need a fixed secret. Docker generates and stores a secret on first boot.

  2. Start the complete stack

    Run docker compose up -d --build from the cloned Odysseus directory.

  3. Wait for health checks

    Run docker compose ps and confirm both odysseus and searxng are running; Odysseus waits for the search container to become healthy.

  4. Inspect failures before rebuilding

    Use docker compose logs searxng --tail=100. Permission, settings-volume, image-pull, or port-conflict messages usually identify the root cause.

Start Odysseus and bundled services
docker compose up -d --build
Check service state
docker compose ps
Read recent SearXNG logs
docker compose logs searxng --tail=100

Connect Odysseus AI to an external SearXNG instance

Use an external instance when SearXNG runs outside the official Compose network. Set SEARXNG_INSTANCE in .env to the final base URL reachable from the Odysseus process, then restart Odysseus so it reloads the environment.

Test from the same network context as Odysseus. A URL that opens in your desktop browser can still fail inside Docker because of DNS, TLS trust, firewall rules, proxy authentication, or a private hostname that the container cannot resolve. Public shared SearXNG instances may rate-limit, block JSON responses, or change without notice, so a controlled self-hosted instance is more predictable.

Native same-host example
SEARXNG_INSTANCE=http://localhost:8080
Separate protected instance example
SEARXNG_INSTANCE=https://search.example.com
Reload the Docker application
docker compose up -d --force-recreate odysseus

Select SearXNG and verify search in Odysseus

Open Settings, choose the Search panel, set Provider to SearXNG, and use the Test button. The current interface also lets Deep Research use the same web-search provider or select SearXNG explicitly. A successful provider test is more useful than checking only whether port 8080 opens, because it exercises the configuration Odysseus will actually use.

After the provider test passes, run one narrow query in chat with web search enabled. Confirm that the answer includes current sources. For Deep Research, start with a small topic before raising token limits or extraction concurrency.

  • Provider Test succeeds in Settings → Search.
  • A chat search returns source links rather than only model memory.
  • Deep Research can fetch and extract at least one reachable page.
  • SearXNG remains bound to a private interface unless you intentionally protect and expose it.

Troubleshoot Odysseus AI SearXNG errors

Diagnose the first failing layer instead of changing several settings at once. Start with container health, then network reachability, then the provider test, and only then the quality of returned results.

Symptom Likely cause Best next check
Connection refused Wrong hostname, stopped container, or port conflict Check docker compose ps and use searxng:8080 inside Compose
Odysseus stays unhealthy or waiting SearXNG health check failed Read SearXNG logs and preserve the official pinned image
Browser opens SearXNG but provider Test fails Host URL is not reachable from the container Test DNS/TLS from the Odysseus runtime and replace localhost
Empty or blocked results Engines, rate limits, safe-search, or response format Run a direct SearXNG query and inspect its settings.yml
Deep Research times out Slow search, extraction, DNS, or target sites Pass the provider test first, then lower scope and concurrency
Settings disappear after restart Container or environment was not recreated Verify .env, Compose overrides, and persistent volumes

Version freshness and security notes

This site checked the canonical odysseus-dev/odysseus repository on July 22, 2026. The repository had no GitHub Releases or tags, so this guide does not label a build as the latest stable version. It follows the official dev-branch Compose and setup files and records the SearXNG image pinned by that source.

Keep SearXNG, model servers, ChromaDB, and other raw service ports private. The official Compose defaults bind SearXNG to 127.0.0.1. If you move it to another host, use authentication or a trusted private network, valid TLS, and explicit firewall rules. Expose the authenticated Odysseus entry point rather than the raw search backend.

Freshness check

Verified source: canonical GitHub repository and official dev-branch setup/Compose files on July 22, 2026. Odysseus had no release tag; SearXNG was pinned in Compose, so no invented version or download claim is used.

Odysseus AI SearXNG FAQ

The official Docker Compose stack includes a SearXNG service. A native Odysseus install still needs a reachable SearXNG instance or another supported search provider.

Inside the Odysseus container, localhost refers to that container. Use http://searxng:8080 for the bundled Compose service.

Open Settings → Search, select SearXNG, and click Test. Then run a small chat search with web search enabled.

Not automatically. The official Compose file pins a tested image because an upstream newer image previously failed. Follow the current official file and review its comments before changing the tag.

It may work, but public instances can rate-limit, disable formats, block automated traffic, or disappear. A self-hosted or controlled instance is more reliable.

Official references

  1. Odysseus canonical GitHub repository - Current source, README, and project status
  2. Odysseus setup guide - Official environment, networking, port, and security guidance
  3. Odysseus Docker Compose file - Bundled SearXNG service, health check, binding, and pinned image
  4. SearXNG documentation - Upstream installation and configuration reference

Related guides

Last updated: July 22, 2026

Back to homepage