open-webui: make the SearXNG web-search wiring git-managed
The per-key config DB already pointed web search at SearXNG (engine=searxng, query URL http://192.168.0.143:8081/search), but only inside the data volume. The quadlet now carries the same values as seeding env vars, so a fresh data dir comes up wired, and the doc records the access path: the internal host-published port, not the search. vhost — the Anubis->Authentik guard chain is browser-only, and the bridge egress sits in SearXNG's pass_ip, so the 4-req/IP/hour JSON cap never applies.
This commit is contained in:
@@ -39,6 +39,26 @@ OpenAI connection at `http://192.168.0.235:7770/v1` (key `none`).
|
||||
sizing, and spec tuning happen there. See the [LLM knowledge
|
||||
base](../LLM/index.md).
|
||||
|
||||
## Web search
|
||||
|
||||
Chat web search is served by [[SearXNG]] on this host, wired in the quadlet
|
||||
(`ENABLE_WEB_SEARCH`, `WEB_SEARCH_ENGINE=searxng`, `SEARXNG_QUERY_URL`).
|
||||
|
||||
- **Access path:** the backend calls `http://192.168.0.143:8081/search?format=json`
|
||||
directly — gluetun's published port, NOT the `search.franksdank.cloud` vhost.
|
||||
The Anubis→Authentik guard chain is a browser mechanism (proof-of-work +
|
||||
session flow); a plain HTTP client cannot solve it, and the internal port
|
||||
bypasses Caddy entirely.
|
||||
- **Limiter:** SearXNG caps non-HTML (JSON) requests at 4/IP/hour (`API_MAX`,
|
||||
a hardcoded Python constant — no config knob). The `pass_ip` list is checked
|
||||
FIRST and short-circuits the whole botdetection chain, and OpenWebUI's bridge
|
||||
egress (`10.89.x`) is in `pass_ip`, so the cap never applies. Verified: an
|
||||
8-request burst from the container returned 8×200.
|
||||
- **Config storage:** OpenWebUI keeps web-search settings per-key in its SQLite
|
||||
config table (`webui.db`, `web.search.*`). The quadlet env vars seed that
|
||||
table on first start (fill-missing only); afterwards the DB is authoritative
|
||||
and Admin-UI edits persist there.
|
||||
|
||||
## Boot persistence (Quadlet)
|
||||
|
||||
The unit lives at `dankclaw/open-webui/quadlet/open-webui.container`. On the host it installs to `~/.config/containers/systemd/open-webui.container`. The generator turns it into `open-webui.service`. Because the unit sets `[Install] WantedBy=default.target` and user linger is on, it starts at boot. `systemctl --user is-enabled open-webui.service` reports `generated` (the quadlet boot-start state).
|
||||
|
||||
Reference in New Issue
Block a user