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.
On this page
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.
-
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.
-
Start the complete stack
Run docker compose up -d --build from the cloned Odysseus directory.
-
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.
-
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.
docker compose up -d --build
docker compose ps
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.
SEARXNG_INSTANCE=http://localhost:8080
SEARXNG_INSTANCE=https://search.example.com
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
Official references
- Odysseus canonical GitHub repository - Current source, README, and project status
- Odysseus setup guide - Official environment, networking, port, and security guidance
- Odysseus Docker Compose file - Bundled SearXNG service, health check, binding, and pinned image
- SearXNG documentation - Upstream installation and configuration reference
Related guides
- Odysseus AI Docker setup - Start the complete service stack and diagnose container networking.
- How to use Odysseus AI - Move from installation to a safe daily workflow.
- Odysseus AI Ollama setup - Connect the local model provider separately from web search.
Last updated: July 22, 2026
Back to homepage