godcrm/deploy/searxng/config/settings.yml
GOD CRM Release 065f2edd23
Some checks are pending
CI / Lint / Typecheck / Test / Build (push) Waiting to run
CI / PostgreSQL Integration Tests (push) Waiting to run
GOD CRM — public scrubbed snapshot (2026-08-30)
Refresh of the open-core distribution from the private tree.

Included since the previous snapshot:
- Mail module (ADR-158/159/160/169): composer, labels, scheduling,
  attachments, reply-tokens, IMAP/SMTP bridge + migrations 079-083
- Crawler-readable SSR for /blog and public spaces (ADR-190):
  blogSeo, publicDocsSeo, per-space SEO prefs, blog index/post pages
- Registration policy + referral/promo settings (ADR-183/188)
- Message translation + language detection (ADR-185)
- Reddit connector for the agent-tool surface

Excised from the public distribution (unchanged policy): infrastructure
topology and host config, internal ops scripts, DB cleanup snapshots,
business documents, throwaway debug scripts, and two private product
lines (SC-SIM simulator, personal one-off tools). Real host addresses
are replaced with placeholders; credential-shaped literals are redacted.

Frontend build verified green on this tree.
2026-08-30 15:13:28 +03:00

82 lines
3.2 KiB
YAML

# SearXNG settings for the CRM web_search backend.
# Key point: `search.formats` MUST include `json` — web-tools.js queries
# ?format=json and errors "is JSON format enabled in settings.yml?" otherwise.
use_default_settings: true
general:
instance_name: "godcrm-search"
debug: false
server:
# Overridden by SEARXNG_SECRET env at runtime; placeholder for standalone use.
secret_key: "change_me_via_env"
limiter: false
image_proxy: true
method: "GET"
search:
safe_search: 0
autocomplete: ""
# Pin locale to en-US. Without this, engines (esp. bing) geo-localize to the
# Amsterdam server IP and, when they're the sole survivor of a slow-engine
# drop, return Dutch/generic noise (rfc2017.nl, nl.wikipedia) instead of the
# actual result. See web-tools.js searxngSearch — it sends no `language` param.
default_lang: "en-US"
formats:
- html
- json
ui:
static_use_hash: true
# Engine pinning (2026-08-30). The upstream default set enables only
# brave / duckduckgo / google / startpage for the `general` category — and on
# this VPS IP ddg+startpage sit on permanent CAPTCHA while brave gets
# "Suspended: too many requests" after a handful of calls. When brave is
# suspended the whole query returns [] with HTTP 200, which reads to the caller
# as "no such thing on the internet" instead of "upstream refused".
# Everything below is `disabled: false` on an engine that ships disabled by
# default. Keep the survivors measured, not assumed: `?engines=<name>` per call.
#
# Measured 2026-08-30 on RU pharma control query "Герофарм инсулин гларгин
# патент Sanofi", one engine per call:
# bing 10 · seznam 10 · yandex 15 · brave 19 → kept
# mojeek 0 (also 0 on an EN control) · google 0 (silent, no error)
# presearch/mwmbl timeout · qwant/yep/dogpile "access denied"
# yahoo "HTTP protocol error" · duckduckgo/startpage CAPTCHA
# Re-measure before trusting this list again — engine health tracks the VPS IP,
# not the config.
#
# Second pass, same day: "non-empty" is not "usable". bing answers every query
# with exactly 10 results that have nothing to do with it (Dropbox/Microsoft
# landing pages for a RU pharma query, under both en-US and ru-RU) — a soft
# bot-block that looks like success and eats top-5 slots, which is worse for a
# recall benchmark than an honest zero. Disabled. Weights push the two engines
# that actually answer to the top of the merged ranking; web-tools.js slices
# the first `limit` rows, so ranking order is what the caller ever sees.
engines:
- name: bing
disabled: true
- name: yandex
disabled: false
weight: 3
- name: brave
weight: 3
- name: seznam
disabled: false
weight: 0.4
# Enabled upstream by default, dead on this IP: every call costs a request
# (and up to request_timeout) and returns nothing.
- name: duckduckgo
disabled: true
- name: startpage
disabled: true
# Loopback-only, single consumer (godcrm) — no bot/rate limiting needed.
outgoing:
# Was 6.0 — mojeek (our best result engine) intermittently exceeded it and got
# dropped, collapsing results to bing-only. 10s keeps slow engines alive.
request_timeout: 10.0
max_request_timeout: 12.0
pool_connections: 100
pool_maxsize: 20