All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m15s
SearXNG v2026 kennt keinen !env-YAML-Constructor — Container crasht
mit „could not determine a constructor for the tag '!env'". Fix: wir
mounten settings.yml read-only auf /config-src, und ein Entrypoint-Hook
schreibt beim Start eine expandierte Fassung nach /etc/searxng/settings.yml
(mit os.path.expandvars — Python ist im Image, envsubst fehlt).
- settings.yml: api_key nutzt jetzt ${BRAVE_API_KEY} statt !env.
- docker-compose.prod.yml: searxng-Container bekommt entrypoint-
Override, reicht BRAVE_API_KEY + SEARXNG_SECRET als Env durch und
expandiert das YAML vor exec.
Leerer Key ist weiterhin ok — Brave antwortet dann mit 401, andere
Engines bleiben unberührt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
84 lines
2.4 KiB
YAML
84 lines
2.4 KiB
YAML
use_default_settings: true
|
|
|
|
server:
|
|
# In production override via env (see docker-compose.prod.yml).
|
|
secret_key: ${SEARXNG_SECRET:-dev-secret-change-in-prod}
|
|
# Disables rate limiter + bot detection. This is a private internal service
|
|
# called only by kochwas — no public exposure, no abuse risk.
|
|
limiter: false
|
|
public_instance: false
|
|
image_proxy: false
|
|
default_http_headers:
|
|
X-Content-Type-Options: nosniff
|
|
X-Download-Options: noopen
|
|
X-Robots-Tag: noindex, nofollow
|
|
|
|
search:
|
|
formats:
|
|
- html
|
|
- json
|
|
safe_search: 0
|
|
autocomplete: ''
|
|
default_lang: 'de'
|
|
|
|
# Höhere Timeouts als Default (3s), weil der Pi und einige Upstream-Engines
|
|
# öfter knapp drüber liegen — lieber 8s warten als gar kein Ergebnis.
|
|
outgoing:
|
|
request_timeout: 8.0
|
|
max_request_timeout: 12.0
|
|
|
|
ui:
|
|
default_locale: de
|
|
|
|
# Quieten engines that fail on cold start and aren't useful here
|
|
enabled_plugins:
|
|
- 'Hash plugin'
|
|
- 'Tracker URL remover'
|
|
- 'Open Access DOI rewrite'
|
|
|
|
engines:
|
|
# Brave mit API-Key: stabiler als der HTML-Scraper, kein Rate-Limit-Spam
|
|
# mehr. Key kommt aus dem BRAVE_API_KEY-Env (.env auf dem Pi, nicht im Repo).
|
|
# Fehlt der Key oder ist er leer, fällt Brave bei der ersten Anfrage zurück
|
|
# auf einen 401 — andere Engines laufen normal weiter.
|
|
- name: brave
|
|
engine: brave
|
|
shortcut: br
|
|
categories: [general, web]
|
|
timeout: 6.0
|
|
# Wert wird beim Container-Start durch Python-os.path.expandvars aus der
|
|
# BRAVE_API_KEY-Env-Variable eingesetzt (siehe docker-compose.prod.yml
|
|
# entrypoint-Override). SearXNG selbst hat kein !env-Tag.
|
|
api_key: "${BRAVE_API_KEY}"
|
|
disabled: false
|
|
|
|
# DuckDuckGo: Standard-Scraper, 3s-Default war zu knapp. Bleibt als Fallback,
|
|
# falls Brave mal ausfällt oder nicht liefert.
|
|
- name: duckduckgo
|
|
engine: duckduckgo
|
|
shortcut: ddg
|
|
timeout: 8.0
|
|
|
|
# Mojeek: eigener Index, seltener Rate-Limits, ergänzt die großen zwei.
|
|
- name: mojeek
|
|
engine: mojeek
|
|
shortcut: mjk
|
|
timeout: 6.0
|
|
disabled: false
|
|
|
|
# Video-/News-Engines abdrehen — wir wollen nur Text-Treffer für Rezeptseiten.
|
|
- name: google videos
|
|
disabled: true
|
|
- name: google news
|
|
disabled: true
|
|
- name: google images
|
|
disabled: true
|
|
- name: bing videos
|
|
disabled: true
|
|
- name: bing news
|
|
disabled: true
|
|
- name: bing images
|
|
disabled: true
|
|
- name: karmasearch videos
|
|
disabled: true
|