MCP HubMCP Hub
Retour aux compétences

deploy-searxng

pjt222
Mis à jour 2 days ago
6 vues
17
2
17
Voir sur GitHub
Documentationgeneral

À propos

Cette compétence déploie un moteur de recherche méta SearXNG auto-hébergé en utilisant Docker Compose, couvrant la configuration, la sélection des moteurs et la mise en place de Nginx. Elle est conçue pour les développeurs souhaitant configurer un moteur de recherche privé et non traçable qui agrège les résultats de multiples fournisseurs. Utilisez-la pour créer une instance de recherche partagée pour des équipes ou pour réduire la dépendance à des fournisseurs de recherche uniques.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/deploy-searxng

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation

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

Dépôt GitHub

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

Compétences associées

railway-docs

Documentation

Cette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.

Voir la compétence

n8n-code-python

Documentation

Cette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.

Voir la compétence

archon

Documentation

La compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.

Voir la compétence

n8n-code-javascript

Documentation

Cette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.

Voir la compétence