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:
+7
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user