name: local-ai-web-search services: searxng: image: searxng/searxng@sha256:e45d5894bfaa0bf8773b9f283795ae57f1c15ddb29c8cecb70b3665b0ce9ec60 restart: unless-stopped volumes: - ./searxng-settings.yml:/etc/searxng/settings.yml:ro networks: [search] healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8080/healthz"] interval: 30s timeout: 10s retries: 5 start_period: 30s security_opt: ["no-new-privileges:true"] tinysearch: image: marcellm01/tinysearch@sha256:5a03d5a1f1b0fabe48f2a26e05db4a84bcb611106a57ec51e42db4549976aa9c restart: unless-stopped ports: - "127.0.0.1:8000:8000" shm_size: "1gb" volumes: - tinysearch-models:/data/models - ./tinysearch_config.json:/config/tinysearch_config.json:ro environment: MCP_TRANSPORT: streamable-http MCP_HOST: 0.0.0.0 MCP_PORT: 8000 TINYSEARCH_CONFIG_PATH: /config/tinysearch_config.json TINYSEARCH_SEARCH_BACKEND: searxng SEARXNG_URL: http://searxng:8080/search depends_on: searxng: condition: service_healthy networks: [search] security_opt: ["no-new-privileges:true"] networks: search: driver: bridge volumes: tinysearch-models: