deploy-searxng
Über
Diese Fähigkeit setzt eine selbst gehostete SearXNG Meta-Suchmaschine mittels Docker Compose ein und bietet eine private, tracking-freie Suchlösung. Sie umfasst Konfigurationsverwaltung, Auswahl der Suchmaschine, Ergebnissproxying und persistente Speicherung mit einem Nginx-Frontend. Nutzen Sie sie, um Ergebnisse mehrerer Anbieter zu aggregieren, eine gemeinsame Suchinstanz für Teams einzurichten oder Abhängigkeiten von einem einzelnen Suchanbieter zu ersetzen.
Schnellinstallation
Claude Code
Empfohlennpx 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-searxngKopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren
Dokumentation
name: deploy-searxng description: > Deploye eine selbstgehostete SearXNG-Metasuchmaschine ueber Docker Compose. Umfasst settings.yml-Konfiguration, Engine-Auswahl, Ergebnis-Proxying, Nginx-Frontend, Persistenz und Updates. Verwende diesen Skill beim Einrichten einer privaten Suchmaschine ohne Tracking, beim Aggregieren von Ergebnissen mehrerer Anbieter, beim Betrieb einer gemeinsamen Suchinstanz fuer ein Team oder eine Organisation oder beim Ersetzen der Abhaengigkeit von einem einzelnen Suchanbieter. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: Docker tags: searxng, self-hosted, search-engine, privacy, docker-compose, meta-search locale: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
SearXNG deployen
Eine selbstgehostete SearXNG-Metasuchmaschine mit Docker Compose und Nginx deployen.
Wann verwenden
- Einrichten einer privaten, selbstgehosteten Suchmaschine
- Aggregieren von Ergebnissen mehrerer Suchanbieter ohne Tracking
- Betrieb einer Suchinstanz fuer ein Team oder eine Organisation
- Ersetzen der Abhaengigkeit von einem einzelnen Suchanbieter
Eingaben
- Erforderlich: Server oder Rechner mit installiertem Docker
- Optional: Domainname fuer oeffentlichen Zugang
- Optional: SSL-Zertifikat oder Let's-Encrypt-Einrichtung
- Optional: Benutzerdefinierte Engine-Praeferenzen
Vorgehensweise
Schritt 1: Projektstruktur erstellen
mkdir -p searxng/{config,nginx}
cd searxng
Schritt 2: Docker-Compose-Datei schreiben
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
Schritt 3: SearXNG-Einstellungen konfigurieren
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
Geheimschluessel generieren:
openssl rand -hex 32
Schritt 4: Nginx-Frontend konfigurieren
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";
}
}
}
Schritt 5: Rate Limiting konfigurieren
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
Schritt 6: Deployen und Ueberpruefen
# Stack starten
docker compose up -d
# Logs pruefen
docker compose logs -f searxng
# Pruefen, ob es laeuft
curl -s http://localhost:8080 | head -5
# Suche testen
curl -s "http://localhost:8080/search?q=test&format=json" | head -20
Erwartet: SearXNG antwortet auf Port 8080 ueber Nginx. Suchanfragen liefern aggregierte Ergebnisse.
Bei Fehler: docker compose logs searxng auf Konfigurationsfehler pruefen. YAML-Syntax von settings.yml ueberpruefen.
Schritt 7: SSL hinzufuegen (Produktion)
Fuer oeffentliche Deployments SSL-Terminierung hinzufuegen. docker-compose.yml aktualisieren:
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:
Siehe den configure-nginx-Skill fuer die vollstaendige SSL-Nginx-Konfiguration.
Schritt 8: Updates und Wartung
# Neuestes Image herunterladen
docker compose pull searxng
# Mit neuem Image neu starten
docker compose up -d
# Konfiguration sichern
cp -r config/ config-backup-$(date +%Y%m%d)/
Validierung
- SearXNG startet ohne Fehler in den Logs
- Suchanfragen liefern Ergebnisse von konfigurierten Engines
- Image-Proxy funktioniert (Bilder werden ueber SearXNG geladen)
- Rate Limiter blockiert ueberschuessige Anfragen
- Konfiguration bleibt ueber Container-Neustarts erhalten
- Nginx proxied Anfragen korrekt
Haeufige Fehler
- Fehlender secret_key: SearXNG verweigert den Start ohne
secret_keyin settings.yml. - Config-Berechtigungen: SearXNG schreibt ins Konfigurationsverzeichnis. Das Volume muss
:rwsein, nicht:ro. - Engine-Blockierungen: Einige Engines koennen Anfragen von Server-IPs blockieren. Engines rotieren oder Image-Proxy verwenden.
- YAML-Einrueckung:
settings.ymlist empfindlich gegenueber Einrueckung. Vor dem Deployen mit einem YAML-Linter validieren. - Base-URL-Diskrepanz:
SEARXNG_BASE_URLmuss mit der tatsaechlichen URL uebereinstimmen, ueber die Benutzer zugreifen, einschliesslich Protokoll und abschliessendem Schraegstrich. - DNS-Aufloesung in Docker: Engines, die Google/Bing verwenden, benoetigen moeglicherweise Host-Netzwerk oder ordnungsgemaesses DNS. Standard-Docker-DNS funktioniert normalerweise.
Verwandte Skills
setup-compose-stack- Allgemeine Docker-Compose-Muster, die hier verwendet werdenconfigure-nginx- Nginx-Konfiguration fuer SSL und Sicherheitsheaderconfigure-reverse-proxy- Erweiterte Proxy-Muster fuer das Nginx-Frontend
GitHub Repository
Verwandte Skills
content-collections
MetaDiese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.
polymarket
MetaDiese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.
creating-opencode-plugins
MetaDiese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.
sglang
MetaSGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.
