deploy-searxng
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
Recomendadonpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/deploy-searxngCopia 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_keyin settings.yml. - Config perms: SearXNG writes to config dir → volume
:rwnot:ro. - Engine blocks: Some engines block server IPs → rotate or image proxy.
- YAML indent:
settings.ymlindent-sensitive → lint before deploy. - Base URL mismatch:
SEARXNG_BASE_URLmust 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 patternsconfigure-nginx— Nginx SSL + security headersconfigure-reverse-proxy— advanced proxy patterns
Repositorio GitHub
Habilidades relacionadas
railway-docs
DocumentaciónEsta 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.
n8n-code-python
DocumentaciónEsta 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.
archon
DocumentaciónLa 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.
n8n-code-javascript
DocumentaciónEsta 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.
