From 168b40ddd7801c7be731f2cc3afc32d693f7aca8 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sun, 29 Mar 2026 19:09:41 +0300 Subject: [PATCH] =?UTF-8?q?feat(docker):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20SearXNG=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B5?= =?UTF-8?q?=D0=B1-=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20=D0=B8=D0=B7=20op?= =?UTF-8?q?encode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - модели в opencode не имели доступа к поиску без платных API. - Что: - добавлен docker-compose для SearXNG (localhost:57458, без valkey). - секрет подставляется из .env через generate-config.sh при старте. - добавлен MCP-сервер searxng в конфиг opencode. - env_file с fallback: .env.sample работает из коробки, .env опционален. - Проверка: - cd docker/searxng && docker compose up -d. - curl http://localhost:57458/search?q=test&format=json. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 1 + docker/searxng/.env.sample | 1 + docker/searxng/core-config/generate-config.sh | 5 +++++ docker/searxng/core-config/settings.yml | 9 ++++++++ docker/searxng/docker-compose.yml | 22 +++++++++++++++++++ opencode/.config/opencode/opencode.json | 8 +++++++ 6 files changed, 46 insertions(+) create mode 100644 docker/searxng/.env.sample create mode 100644 docker/searxng/core-config/generate-config.sh create mode 100644 docker/searxng/core-config/settings.yml create mode 100644 docker/searxng/docker-compose.yml diff --git a/.gitignore b/.gitignore index 21ea419..2357b37 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ nul # Secrets .env.secrets +docker/searxng/.env # Opencode local files opencode/.config/opencode/package.json diff --git a/docker/searxng/.env.sample b/docker/searxng/.env.sample new file mode 100644 index 0000000..81dbbbd --- /dev/null +++ b/docker/searxng/.env.sample @@ -0,0 +1 @@ +SEARXNG_SECRET_KEY=2575fd7919a0d30f5fbc36091d4dabb27784009bf5878617eb6005c4f0a0fef1 diff --git a/docker/searxng/core-config/generate-config.sh b/docker/searxng/core-config/generate-config.sh new file mode 100644 index 0000000..4c7ff7c --- /dev/null +++ b/docker/searxng/core-config/generate-config.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +sed "s|\${SEARXNG_SECRET_KEY}|${SEARXNG_SECRET_KEY}|g" \ + /tmpl/settings.yml > /etc/searxng/settings.yml +exec /usr/local/searxng/entrypoint.sh "$@" diff --git a/docker/searxng/core-config/settings.yml b/docker/searxng/core-config/settings.yml new file mode 100644 index 0000000..b49941f --- /dev/null +++ b/docker/searxng/core-config/settings.yml @@ -0,0 +1,9 @@ +use_default_settings: true + +server: + secret_key: "${SEARXNG_SECRET_KEY}" + +search: + formats: + - html + - json diff --git a/docker/searxng/docker-compose.yml b/docker/searxng/docker-compose.yml new file mode 100644 index 0000000..fd65a62 --- /dev/null +++ b/docker/searxng/docker-compose.yml @@ -0,0 +1,22 @@ +name: searxng + +services: + core: + container_name: searxng-core + image: docker.io/searxng/searxng:latest + restart: unless-stopped + ports: + - "127.0.0.1:57458:8080" + env_file: + - ./.env.sample + - path: ./.env + required: false + entrypoint: ["/bin/sh", "/tmpl/generate-config.sh"] + volumes: + - ./core-config/:/tmpl/:ro + - core-config:/etc/searxng/ + - core-data:/var/cache/searxng/ + +volumes: + core-config: + core-data: diff --git a/opencode/.config/opencode/opencode.json b/opencode/.config/opencode/opencode.json index 422f352..c3a4f72 100644 --- a/opencode/.config/opencode/opencode.json +++ b/opencode/.config/opencode/opencode.json @@ -46,6 +46,14 @@ }, "enabled": false }, + "searxng": { + "type": "local", + "command": ["npx", "-y", "mcp-searxng"], + "environment": { + "SEARXNG_URL": "http://localhost:57458" + }, + "enabled": true + }, "playwright": { "type": "local", "command": ["npx", "-y", "@playwright/mcp@latest"],