feat: Add SearXNG for improved web search

- Add SearXNG service to docker-compose.yml (port 11112)
- Add SEARXNG_SECRET_KEY to .env.example
- Add searxng-data/settings.yml with FR engines (google, bing, ddg, qwant)
- Add docs/SEARXNG-INTEGRATION.md with OpenWebUI tool setup
This commit is contained in:
Folzo
2026-04-13 19:59:01 +02:00
parent 4f1a6cf0ce
commit 21674f6eaf
4 changed files with 169 additions and 1 deletions
+7 -1
View File
@@ -45,7 +45,13 @@ N8N_USER=master
N8N_PASSWORD=changez_moi_mot_de_passe_securise
# ═══════════════════════════════════════════════════════════
# 5. CONFIGURATION OPTIONNELLE
# 5. SEARXNG (Meta-search Engine)
# ═══════════════════════════════════════════════════════════
# Clé secrète pour SearXNG (générer une chaîne aléatoire)
SEARXNG_SECRET_KEY=changez_moi_par_une_cle_longue_et_aleatoire
# ═══════════════════════════════════════════════════════════
# 6. CONFIGURATION OPTIONNELLE
# ═══════════════════════════════════════════════════════════
# Fuseau horaire (déjà configuré dans docker-compose.yml)
# TZ=Europe/Paris
+18
View File
@@ -5,6 +5,24 @@
services:
# ─────────────────────────────────────────────────────────
# 0. SEARXNG - Meta-search Engine (Web Search)
# → http://192.168.1.27:11112
# ─────────────────────────────────────────────────────────
searxng:
image: searxng/searxng:latest
container_name: effi-searxng
restart: unless-stopped
ports:
- "11112:8080"
volumes:
- ./searxng-data:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://192.168.1.27:11112/
- SEARXNG_SECRET=${SEARXNG_SECRET_KEY}
networks:
- effi-net
# ─────────────────────────────────────────────────────────
# 1. OPEN WEBUI - Interface Chat Effi
# → http://192.168.1.27:3000
+84
View File
@@ -0,0 +1,84 @@
# SEARXNG - Integration OpenWebUI
## Configuration
SearXNG est maintenant intégré dans `docker-compose.yml` de Effi :
- **Port** : 11112
- **URL** : http://192.168.1.27:11112
## Tool web_search pour OpenWebUI
Dans **Admin Panel → Tools**, modifier ou créer le tool `web_search` :
```python
import requests
def web_search(query):
"""Recherche web via SearXNG auto-hébergé"""
searxng_url = "http://192.168.1.27:11112"
try:
response = requests.get(
f"{searxng_url}/search",
params={
"q": query,
"format": "json",
"engines": "google,bing,duckduckgo,qwant",
"language": "fr"
},
timeout=15
)
if response.status_code == 200:
results = response.json()
formatted = []
for r in results.get("results", [])[:10]:
title = r.get("title", "Sans titre")
url = r.get("url", "")
snippet = r.get("content", "")[:200]
formatted.append(f"**{title}**\n{snippet}\n🔗 {url}")
if formatted:
return "## Résultats\n\n" + "\n\n".join(formatted)
return "Aucun résultat."
return f"Erreur {response.status_code}"
except Exception as e:
return f"Erreur: {str(e)}"
```
## Déploiement sur effi-server
```bash
# Copier le dossier Effi sur effi-server
scp -r /home/folzo/Documents/OpenCode/Projets/Effi user@192.168.1.27:~/effi
# Sur effi-server
cd ~/effi
cp .env.example .env
# Éditer .env et ajouter SEARXNG_SECRET_KEY
# Lancer
docker compose up -d
# Tester
curl http://localhost:11112/search?q=test\&format=json
```
## URLs
| Service | URL |
|---------|-----|
| SearXNG | http://192.168.1.27:11112 |
| OpenWebUI | http://192.168.1.27:3000 |
## Engines configurées
- google (FR)
- bing (FR-FR)
- duckduckgo (FR-FR)
- qwant (FR)
- wikipedia (FR)
+60
View File
@@ -0,0 +1,60 @@
# ═══════════════════════════════════════════════════════════
# EFFI SEARXNG - Meta-search Engine Configuration
# Instance: effi-server (192.168.1.27)
# ═══════════════════════════════════════════════════════════
use_default_settings: true
general:
instance_name: "Effi Search"
privacypolicy_url: false
donation_url: false
contact_url: false
enable_metrics: false
search:
format: "json"
max_results: 15
default_lang: "fr"
formats:
- html
- json
engines:
- name: google
engine: google
language: fr
- name: bing
engine: bing
language: fr-FR
- name: duckduckgo
engine: duckduckgo
language: fr-FR
- name: qwant
engine: qwant
language: fr
- name: wikipedia
engine: wikipedia
language: fr
server:
secret_key: "${SEARXNG_SECRET_KEY}"
bind_address: "0.0.0.0"
port: 8080
limiter: false
public_instance: false
ui:
default_theme: simple
static_use_hash: true
default_view: index
results_on_new_tab: false
outgoing:
request_timeout: 10.0
useragent_suffix: ""
pool_connections: 100
pool_maxsize: 20
enable_obfuscation: false
enable_http2: true