MCP HubMCP Hub
Volver a habilidades

deploy-searxng

pjt222
Actualizado 2 days ago
3 vistas
17
2
17
Ver en GitHub
Documentacióngeneral

Acerca de

Esta habilidad despliega un motor de búsqueda meta SearXNG autoalojado usando Docker Compose, cubriendo configuración, selección de motores y configuración de Nginx. Está diseñada para desarrolladores que desean configurar un motor de búsqueda privado y no rastreado que agrega resultados de múltiples proveedores. Úsela al crear una instancia de búsqueda compartida para equipos o para reducir la dependencia de proveedores de búsqueda únicos.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/deploy-searxng

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación

Deploy SearXNG

Self-host SearXNG meta search → Docker Compose + Nginx.

Use When

  • Private self-host search
  • Aggregate multi-provider → no track
  • Team/org shared instance
  • Replace single provider

In

  • Required: Server w/ Docker
  • Optional: Domain
  • Optional: SSL/Let's Encrypt
  • Optional: Engine prefs

Do

Step 1: Scaffold

mkdir -p searxng/{config,nginx}
cd searxng

Step 2: Compose File

docker-compose.yml:

services:
  searxng:
    image: searxng/searxng:latest
    container_name: searxng
    volumes:
      - ./config:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://search.example.com/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    restart: unless-stopped
    networks:
      - searxng

  nginx:
    image: nginx:1.27-alpine
    container_name: searxng-nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - searxng
    restart: unless-stopped
    networks:
      - searxng

networks:
  searxng:
    driver: bridge

Step 3: Config SearXNG

config/settings.yml:

use_default_settings: true

general:
  instance_name: "My SearXNG"
  privacypolicy_url: false
  contact_url: false

search:
  safe_search: 0
  autocomplete: "google"
  default_lang: "en"

server:
  secret_key: "generate-a-random-secret-key-here"
  limiter: true
  image_proxy: true
  port: 8080
  bind_address: "0.0.0.0"

ui:
  static_use_hash: true
  default_theme: simple
  infinite_scroll: true

engines:
  - name: google
    engine: google
    shortcut: g
    disabled: false

  - name: duckduckgo
    engine: duckduckgo
    shortcut: ddg
    disabled: false

  - name: wikipedia
    engine: wikipedia
    shortcut: wp
    disabled: false

  - name: github
    engine: github
    shortcut: gh
    disabled: false

  - name: stackoverflow
    engine: stackoverflow
    shortcut: so
    disabled: false

  - name: arxiv
    engine: arxiv
    shortcut: arx
    disabled: false

Gen secret:

openssl rand -hex 32

Step 4: Nginx Front

nginx/nginx.conf:

events {
    worker_connections 1024;
}

http {
    server {
        listen 80;

        location / {
            proxy_pass http://searxng:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Connection "";
            proxy_buffering off;
        }

        location /static/ {
            proxy_pass http://searxng:8080/static/;
            expires 1y;
            add_header Cache-Control "public, immutable";
        }
    }
}

Step 5: Rate Limit

config/limiter.toml:

[botdetection.ip_limit]
link_token = true

[botdetection.ip_lists]
block_ip = []
pass_ip = ["127.0.0.1/8", "::1/128"]
pass_searxng_org = false

Step 6: Deploy + Verify

# Start stack
docker compose up -d

# Logs
docker compose logs -f searxng

# Check running
curl -s http://localhost:8080 | head -5

# Test search
curl -s "http://localhost:8080/search?q=test&format=json" | head -20

→ SearXNG on 8080 via Nginx. Queries → aggregated results.

If err: docker compose logs searxng → config err. Verify settings.yml YAML.

Step 7: SSL (Prod)

Public deploy → SSL termination. Update docker-compose.yml:

services:
  nginx:
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx-ssl.conf:/etc/nginx/nginx.conf:ro
      - certbot-certs:/etc/letsencrypt:ro
      - certbot-webroot:/var/www/certbot:ro

  certbot:
    image: certbot/certbot
    volumes:
      - certbot-certs:/etc/letsencrypt
      - certbot-webroot:/var/www/certbot

volumes:
  certbot-certs:
  certbot-webroot:

See configure-nginx → full SSL Nginx config.

Step 8: Update + Maint

# Pull latest
docker compose pull searxng

# Restart w/ new img
docker compose up -d

# Backup config
cp -r config/ config-backup-$(date +%Y%m%d)/

Check

  • SearXNG starts → no err logs
  • Queries → results from configured engines
  • Image proxy works
  • Rate limiter blocks excess
  • Config persists across restarts
  • Nginx proxies correctly

Traps

  • No secret_key: SearXNG refuses start w/o secret_key in settings.yml.
  • Config perms: SearXNG writes to config dir → volume :rw not :ro.
  • Engine blocks: Some engines block server IPs → rotate or image proxy.
  • YAML indent: settings.yml indent-sensitive → lint before deploy.
  • Base URL mismatch: SEARXNG_BASE_URL must match actual URL, incl protocol + trailing slash.
  • Docker DNS: Google/Bing engines may need host net or proper DNS. Default Docker DNS OK.

  • setup-compose-stack — general Docker Compose patterns
  • configure-nginx — Nginx SSL + security headers
  • configure-reverse-proxy — advanced proxy patterns

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/caveman-ultra/skills/deploy-searxng
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

railway-docs

Documentación

Esta habilidad obtiene la documentación actual de Railway para responder preguntas sobre características, funcionalidad o URLs específicas de documentación. Garantiza que los desarrolladores reciban información precisa y actualizada directamente de las fuentes oficiales de Railway. Úsala cuando los usuarios pregunten cómo funciona Railway o hagan referencia a la documentación de Railway.

Ver habilidad

n8n-code-python

Documentación

Esta Skill de Claude proporciona orientación experta para escribir código Python en los nodos Code de n8n, específicamente para usar la biblioteca estándar de Python y trabajar con la sintaxis especial de n8n como `_input`, `_json` y `_node`. Ayuda a los desarrolladores a comprender las limitaciones de Python dentro de n8n y recomienda usar JavaScript para la mayoría de los flujos de trabajo, mientras ofrece soluciones en Python para necesidades específicas de transformación de datos.

Ver habilidad

archon

Documentación

La habilidad Archon proporciona búsqueda semántica con tecnología RAG y gestión de proyectos a través de una API REST. Úsala para consultar documentación, gestionar proyectos/tareas jerárquicos y realizar recuperación de conocimiento con capacidades de carga de documentos. Prioriza siempre a Archon en primer lugar al buscar en documentación externa antes de utilizar otras fuentes.

Ver habilidad

n8n-code-javascript

Documentación

Esta habilidad de Claude proporciona orientación experta para escribir código JavaScript en los nodos de Código de n8n. Cubre sintaxis esencial específica de n8n como las variables `$input`/`$json`, ayudantes HTTP y manejo de DateTime, mientras soluciona errores comunes. Úsela al desarrollar flujos de trabajo en n8n que requieran procesamiento personalizado de JavaScript en los nodos de Código.

Ver habilidad