Files
owui-tools/configs/services/searxng.settings.yml
T
2026-09-15 15:24:03 -04:00

134 lines
4.8 KiB
YAML

# =====================================================================
# owuitools' own SearXNG.
#
# Separate from /configs/searxng on purpose. That instance is tuned for
# the voice assistant, where a slow answer is a bad answer, so it runs
# outgoing.request_timeout at 2.0s and drops any engine that dawdles.
# Research is the opposite trade: waiting 5s for a good result beats
# answering fast from one engine.
# =====================================================================
use_default_settings: true
general:
instance_name: "owuitools"
# No public UI, no metrics endpoint to leak engine health.
enable_metrics: false
server:
secret_key: "CHANGE_ME - generate with: openssl rand -hex 32"
limiter: false # only owuitools-api can reach this; no bot problem
image_proxy: false
method: "GET"
search:
safe_search: 0
autocomplete: ""
default_lang: "en"
# json is what the tool server consumes. html stays enabled so a human
# can port-forward and eyeball why a query returned junk.
formats:
- html
- json
outgoing:
request_timeout: 5.0
max_request_timeout: 8.0
pool_connections: 100
pool_maxsize: 20
enable_http2: true
engines:
# The `general` set is chosen by measurement, not reputation. Every engine
# below was queried from this host's own egress IP on 2026-09-10; the
# result counts are in the comments. Re-measure before changing it - which
# engines will serve this IP is a property of the IP, and it drifts.
#
# The failure this guards against is real and was observed: brave, startpage
# and google cse were the entire `general` set, and all three suspended
# themselves within one working session (rate limit, CAPTCHA, API quota),
# taking web_search - the most-used tool in the suite - to zero results
# while every other tool stayed healthy.
# Working. DuckDuckGo previously served this IP a CAPTCHA and was disabled
# for it; re-measured 2026-09-10 and it now returns full results. The old
# note was stale, which is the argument for re-measuring rather than
# trusting a comment.
- name: duckduckgo # 10 results
disabled: false
- name: bing # 10 results
disabled: false
- name: google # 9 results - the scraper, not the quota-limited CSE
disabled: false
- name: yahoo # 7 results
disabled: false
# Kept for diversity and because suspensions expire, but not relied on:
# each of these returned nothing from this IP on 2026-09-10.
- name: mojeek # 0
disabled: false
- name: brave # suspended: too many requests
disabled: false
- name: startpage # suspended: CAPTCHA
disabled: false
- name: wikipedia
disabled: false
# Measured and rejected: qwant (CAPTCHA), seznam (timeout), marginalia /
# stract / right dao / presearch (no results). wiby (12) and mwmbl (4)
# respond but index the small/old web, which is wrong for a suite answering
# current IT and engineering questions.
# `it` category is the high-value one for this assistant: stackoverflow,
# askubuntu, superuser, mdn, mankier, and the distro/docker package
# indexes. Measured 126 results vs 20 for `general` on a technical query.
- name: stackoverflow
disabled: false
- name: askubuntu
disabled: false
- name: superuser
disabled: false
- name: mdn
disabled: false
# Package-registry and niche-language engines sit in the `it` category and
# match on any keyword, so a query like "qemu bridge networking" led with a
# Docker Hub result for "Strimzi Kafka Bridge". lookup_package covers
# registry questions properly; here they are just noise crowding out the
# Stack Overflow and man-page hits that actually answer the question.
- name: docker hub
disabled: true
- name: gentoo
disabled: true
- name: hoogle
disabled: true
# Noise for this use case - all of it costs latency and returns nothing
# a technical answer can cite.
- name: bing images
disabled: true
- name: google images
disabled: true
- name: youtube
disabled: true
# The `science` category was running on SearXNG's defaults, which are
# arXiv-heavy: a biomedical query came back with computer-science preprints
# in five of twenty-three result slots. These two ship disabled upstream and
# are the ones that carry real bibliographic metadata - journal, authors,
# DOI - which web_search now renders as a CITE AS line. Without them the
# model gets a title and a URL and fills the venue in from the domain, which
# is how an npj Flexible Electronics paper got cited as Nature Electronics.
- name: openalex
disabled: false
- name: crossref
disabled: false
# Upstream default is 30s, well past this instance's max_request_timeout,
# so a slow Crossref would simply never return.
timeout: 8.0
- name: pubmed
disabled: false
ui:
static_use_hash: true